通过预算监控 Credit 使用量¶
预算定义 Snowflake 账户或一组自定义 Snowflake 对象的 计算成本 的每月支出限额。当预计会超过支出限制时,将发送通知。您可以将预算配置为将此通知发送到电子邮件地址列表、云服务(Amazon SNS、Azure 事件网格或 Google Cloud PubSub)提供的队列或第三方系统的 Webhook(例如 Slack、Microsoft Teams 或 PagerDuty)。
账户预算和自定义预算¶
账户预算 监控账户中所有 Credit 使用量的支出。
您还可以创建 自定义预算,以监控一组特定的 受支持对象 的支出限额。
对于这两种类型的预算,您必须设置支出限额并指定您希望如何接收通知。
要开始在 Snowflake 中使用预算,请 激活账户预算。
支出限额和时间间隔¶
支出限额以 Snowflake Credit 表示,仅用于警报和通知目的。支出限额的时间间隔设置为一个日历月。
时间间隔从每月第一天的 12:00AM UTC 开始,到每月最后一天的 11:59PM UTC 结束。如果预算在当月的第一天之后创建,则第一个监控时间间隔截止到当月最后一天,然后在下个月的第一天重置。
如果您在当月第一天之后激活 账户预算,则从当月初开始的数据会回填,并用于确定您是否会超出当月的支出限额。
如果您在当月的第一天之后创建 自定义预算,则只有使用标签添加到预算中的资源才会回填当月的历史数据。系统不会回填单独添加的资源数据。
备注
如果您创建自定义预算 并 单独向预算中添加资源而不是使用标签,请考虑以下几点:
这些资源的未来支出预测仅基于启用预算后几天内的 Credit 使用量。
如果您在当月第一天之后创建自定义预算,则可能会超出第一个月的预算。因为系统不会为资源数据进行回填,这可能会导致预测不正确。随后的几个月将根据支出历史记录正确预测 Credit 使用量。
调整预算刷新间隔¶
在使用最新的消费数据刷新预算之前,预算无法计算消费是否已达到支出限额。从使用发生到预算收到有关该使用的信息之间的时间段称为预算刷新间隔。
By default, the budget refresh interval is up to 6.5 hours. You can reduce the budget refresh interval to one hour, which can be helpful when you need to watch spending more carefully. A budget with a one-hour refresh interval is known as a low latency budget. You can temporarily reduce the budget refresh interval to closely monitor consumption, and then set it back to the default to save on costs.
将刷新间隔设置为 1 小时会使预算的计算成本增加 12 倍。例如,如果刷新间隔为 6.5 小时时预算每月消耗 1 个 Credit,则刷新周期为 1 小时时预算每月消耗 12 个 Credit。要确定预算的当前计算成本,请参阅 了解计算成本。
To adjust the budget refresh interval, call the SET_REFRESH_TIER method. You can also use Snowsight to adjust the interval for a custom budget by selecting or deselecting the Enable low latency budget field.
要检索当前刷新间隔,请调用 GET_REFRESH_TIER 方法。
支持的服务¶
预算会监控以下服务的 Credit 使用量。使用该表来确定自定义预算是否支持该服务以及哪个对象与该服务相关联。
备注
无服务器功能的账户预算支持取决于 Account Usage METERING_HISTORY 视图 视图中服务类型的可用性。
服务 |
账户预算 |
自定义预算 |
对象 |
|---|---|---|---|
AI_SERVICES |
✔ |
||
AUTO_CLUSTERING |
✔ |
✔ |
表 |
COPY_FILES |
✔ |
✔ |
数据库 |
DATA_QUALITY_MONITORING |
✔ |
✔ |
表 |
HYBRID_TABLE_REQUESTS |
✔ |
||
MATERIALIZED_VIEW |
✔ |
✔ |
物化视图 |
PIPE |
✔ |
✔ |
管道 |
QUERY_ACCELERATION |
✔ |
✔ |
仓库 |
REPLICATION |
✔ |
✔ |
数据库、复制组 |
SEARCH_OPTIMIZATION |
✔ |
✔ |
表 |
SERVERLESS_ALERTS |
✔ |
✔ |
警报 |
SERVERLESS_TASK |
✔ |
✔ |
任务 |
SNOWPARK_CONTAINER_SERVICES |
✔ |
✔ |
计算池 |
SNOWPIPE_STREAMING |
✔ |
✔ |
表 |
WAREHOUSE_METERING |
✔ |
✔ |
仓库 |
Budgets 通知¶
A budget sends a daily alert notification when current spending is on track to exceed the spending limit based on time-series forecasting.
要接收自动警报通知,您必须在激活账户预算或创建自定义预算过程中执行以下操作:
为预算设置支出限额。
指定您希望如何接收有关预算的通知。
有关更多信息,请参阅 预算通知。
Budgets 角色和权限¶
要启用账户中的自定义角色来处理预算,您可以授予以下角色和权限。
备注
Snowflake 提供应用程序角色和数据库角色,用于控制对所有费用相关功能(包括预算)的访问权限。有关将这些角色授予自定义角色,而不是使用特定预算角色和权限的信息,请参阅 成本管理的访问控制。
用于管理账户预算的应用程序角色¶
您可以向账户中的自定义角色授予以下应用程序角色,以监控或管理账户预算:
应用程序角色 |
描述 |
|---|---|
BUDGET_VIEWER |
支持角色查看预算使用量数据并列出预算中的资源。 |
BUDGET_ADMIN |
允许角色激活或停用账户预算,以及修改预算的属性,包括支出限额、用于接收通知的电子邮件地址列表以及静音通知设置。 |
除应用程序角色外,还必须授予其他必要的权限,以使自定义角色能够监控或管理账户预算。有关更多信息,请参阅 所需的角色和权限。
用于管理自定义预算的实例角色¶
每个自定义预算都有实例角色,您可以将其授予其他角色以查看或修改预算:
实例角色 |
描述 |
|---|---|
VIEWER |
支持角色查看预算使用情况数据。 |
ADMIN |
允许角色修改预算的属性,包括支出限额、要使用的通知集成、要接收通知的电子邮件地址列表、静音通知设置以及组中的对象。 |
除实例角色外,还必须授予其他必要的权限,以使自定义角色能够创建、监控或修改自定义预算。有关更多信息,请参阅 所需的角色和权限。
所需的角色和权限¶
除应用程序或实例角色外,还必须向自定义角色授予以下权限,以监控或管理预算:
权限或角色 |
预算类型 |
创建 |
管理 |
监控 |
备注 |
|---|---|---|---|---|---|
USAGE_VIEWER |
两者 |
✔ |
✔ |
✔ |
将 Snowflake 数据库角色 USAGE_VIEWER 授予自定义角色。 |
USAGE |
自定义 |
✔ |
✔ |
✔ |
Grant the USAGE privilege on the database or schema that contains the custom budget. |
SNOWFLAKE.BUDGET_CREATOR |
自定义 |
✔ |
将此数据库角色授予自定义角色,使其能够创建自定义预算。 |
||
CREATE SNOWFLAKE.CORE.BUDGET |
自定义 |
✔ |
针对包含自定义预算的架构,授予此权限。 |
||
APPLYBUDGET |
自定义 |
✔ |
针对要添加到自定义预算或从中删除的每个对象,必须授予该权限。 |
||
USAGE |
自定义 |
✔ |
要从自定义预算中添加或删除架构对象,针对包含该对象的数据库和架构,必须授予该权限。 |
有关详细信息和示例,请参阅以下部分:
限制¶
以下是 Budgets 的限制:
BUDGET 类的实例无法 复制 到目标账户。
一个账户最多可以包含 100 个自定义预算。
目前,Budgets 不支持监控 混合表 成本。
以下账户级参数必须取消设置或设置为默认值:
AUTOCOMMIT 必须取消设置或设置为 TRUE.
如果该参数设置为 FALSE,则激活预算可能会失败,或者可能无法正确跟踪使用情况。
TIMESTAMP_INPUT_FORMAT 和 DATE_INPUT_FORMAT 必须取消设置或设置为 AUTO。
如果这些参数未设置为 AUTO,则可能无法正确跟踪使用情况。
在激活预算之前,通过执行 SHOW PARAMETERS 命令 检查这些参数的值:
SHOW PARAMETERS LIKE 'AUTOCOMMIT' IN ACCOUNT;
SHOW PARAMETERS LIKE 'TIMESTAMP_INPUT_FORMAT' IN ACCOUNT;
SHOW PARAMETERS LIKE 'DATE_INPUT_FORMAT' IN ACCOUNT;
备注
您必须在账户级别设置这些参数。在较低级别(例如,在会话级别)设置参数不会影响激活预算或跟踪使用情况。