监控预算¶
本主题介绍如何监控预算支出和确定跟踪特定资源 Credit 使用量的预算。
创建自定义角色以监控预算¶
您可以创建供非管理员用户用来监控预算的自定义角色,从而委派预算监控。
创建自定义角色以监控账户预算¶
您可以创建自定义角色,使非账户管理员用户能够监控账户预算。有关必须授予角色以监控账户预算的权限和角色的完整列表,请参阅 Budgets 角色和权限。
示例¶
备注
只有账户管理员才能执行本示例中的语句。
例如,创建角色 account_budget_monitor 并授予角色查看账户预算 Credit 使用量的能力:
USE ROLE ACCOUNTADMIN;
CREATE ROLE account_budget_monitor;
 
GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE account_budget_monitor;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_monitor;
创建自定义角色以监控自定义预算¶
您可以创建自定义角色,使非账户管理员用户能够监控自定义预算。有关必须授予角色以监控自定义预算的权限和角色的完整列表,请参阅 Budgets 角色和权限。
示例¶
备注
只有预算所有者(具有 OWNERSHIP 权限的角色)才能执行本示例中的语句。
使用预算所有者角色授予自定义角色 budget_monitor 监控架构 budgets_db.budgets_schema 中预算 my_budget 的能力:
USE ROLE custom_budget_owner;
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_monitor;
GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_monitor;
GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!VIEWER
  TO ROLE budget_monitor;
GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_monitor;
监控预算¶
您可以使用 Snowsight 或 SQL 监控预算。
使用 Snowsight 监控预算¶
您可以使用 Budgets 中的 Snowsight 页面查看当前和历史预算支出。
备注
只有具有 ACCOUNTADMIN 角色或被授予所需权限和角色的用户才能使用 Snowsight 监控预算。
- 有关使用自定义账户角色监控账户预算的详细信息,请参阅 创建自定义角色以监控账户预算。 
- 有关使用自定义账户角色监控自定义预算的详细信息,请参阅 创建自定义角色以监控自定义预算。 
- Sign in to Snowsight. 
- In the navigation menu, select Admin » Cost management. 
- 选择 Budgets。 
在预算的 Current Month 视图中,您可以查看截至当天的每日 Credit 使用量。您可以查看您是否可能超出当月的预算。条形图持续到月底,并根据当月的实际 Credit 使用情况显示预计的 Credit 使用量。Spending limit 行指明触发预算通知的支出限额。
选择  (要显示的月份),按 Current Month 或更长的时间段筛选视图。
您可以将 Spend (当前 Credit 使用量)与 Interval (当月剩余时间)进行比较,查看支出是否超出了每月预算。
您可以选择  Budgets 或 
 Resources 来筛选视图。
- 您可以在 Budgets 视图中选择自定义预算,获取有关特定预算的详细信息。 - 备注 - 自定义预算的 Service Type 列表中包括 Unused Resources 类型。当预算中的对象没有可显示的 Credit 使用量数据时,将显示此服务类型。如果对象没有计算成本的 Credit 使用量,或者您最近将对象添加到预算并且 无服务器后台任务 尚未执行,则可能发生这种情况。 
- 在 Resources 视图中,您可以按 Service Type、对象 Name 和 Credit Usage 进行筛选和排序。 
使用 SQL 命令来监控预算¶
要监控账户预算,您必须拥有必需的权限。有关更多信息,请参阅 创建自定义角色以监控账户预算。
使用 account_budget_monitor 角色查看账户预算的支出历史记录:
USE ROLE account_budget_monitor;
CALL snowflake.local.account_root_budget!GET_SPENDING_HISTORY(
  TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
  TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
您可以按服务类型监控支出历史记录。要查看八个月周期账户预算的搜索优化无服务器功能的支出历史记录,请执行以下语句:
USE ROLE account_budget_monitor;
SELECT *
   FROM table(snowflake.local.account_root_budget!GET_SERVICE_TYPE_USAGE_V2(
         '2025-05', '2025-12'))
   WHERE service_type = 'SEARCH_OPTIMIZATION';
要监控自定义预算,您必须拥有必需的权限。有关更多信息,请参阅 创建自定义角色以监控自定义预算。
使用 budget_monitor 角色查看自定义预算的支出历史记录。例如,要查看自定义预算 na_finance_budget 在架构 budgets_db.budgets_schema 中的支出历史记录,请执行以下语句:
USE ROLE budget_monitor;
CALL budgets_db.budgets_schema.na_finance_budget!GET_SPENDING_HISTORY(
  TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
  TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
您可以按服务类型监控支出历史记录。例如,要查看一年周期预算中包含的物化视图的支出历史记录,请执行以下语句:
USE ROLE budget_monitor;
SELECT *
   FROM table(budgets_db.budgets_schema.na_finance_budget!GET_SERVICE_TYPE_USAGE_V2(
         '2025-05', '2025-12'))
   WHERE service_type = 'MATERIALIZED_VIEW';
有关更多信息,请参阅 预算方法。
确定资源跟踪预算¶
如果要确定哪个预算用来跟踪资源,可以调用 SYSTEM$SHOW_BUDGETS_FOR_RESOURCE 函数。
例如:
SELECT SYSTEM$SHOW_BUDGETS_FOR_RESOURCE('TABLE', 'my_db.my_schema.my_table');
+-----------------------------------------------------------------------+
| SYSTEM$SHOW_BUDGETS_FOR_RESOURCE('TABLE', 'MY_DB.MY_SCHEMA.MY_TABLE') |
|-----------------------------------------------------------------------|
| [BUDGETS_DB.BUDGETS_SCHEMA.MY_BUDGET]                                 |
+-----------------------------------------------------------------------+
该函数返回已在其中添加资源的预算。它包含因以下任意原因而涉及该资源的预算:
- 资源已直接添加到预算中。 
- 资源的标签/值组合已添加到预算中。 
- 资源属于已添加到预算的对象(例如,数据库)。