カスタム予算の作成と有効化¶
予算機能を使用するには、アカウント予算をアクティブ化してカスタム予算を作成し、特定のSnowflakeオブジェクトグループのクレジット使用状況をモニターします。
このトピックの内容:
アカウント予算のアクティブ化¶
アカウントのクレジット使用状況をモニターするために予算の使用を開始するには、アカウント予算を有効にします。アカウント予算をアクティブ化した後、アカウントの支出制限とメールアドレスを設定し、クレジットの使用状況が支出制限を超えた場合に通知を受け取ります。支出予定額が支出限度額を10%以上上回った時点で通知が始まります。
Snowsight または SQL を使用してアカウント予算をアクティブ化できます。
アカウント予算を管理するカスタムロールを作成する¶
アカウント予算を有効化および変更するためのカスタムロールを作成することができます。このロールを与えられたユーザーは、予算管理者として行動し、アカウント予算に対して以下のアクションを実行することができます。
アカウント予算をアクティブ化します。
支出制限を設定します。
通知設定を編集します。
アカウントのクレジット使用状況を監視します。
予算管理者ロールに必要なロールと権限の全リストについては、 Budgetのロールと権限 をご参照ください。
例えば、ロール(account_budget_admin
)を作成し、そのロールにアカウント予算をモニターおよび管理する能力を付与します。
USE ROLE ACCOUNTADMIN;
CREATE ROLE account_budget_admin;
GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE account_budget_admin;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_admin;
Snowsightを使用したアカウント予算のアクティブ化と設定¶
注釈
ACCOUNTADMIN ロール、または アカウント予算管理権限を付与された ロールを持つユーザーのみが、アカウント予算を有効化し、設定することができます。
Snowsight にサインインします。
Admin » Cost Management を選択します。
Budgets を選択します。
プロンプトが表示されたら、ウェアハウスを選択します。
ダッシュボードの右上隅で、 Set up Account Budget を選択します。
アカウントの目標支出制限を入力します。
通知メールを受け取るメールアドレスを入力します。
注釈
予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、通知メールの設定は失敗します。
Finish Setup を選択します。
SQL を使用したアカウント予算のアクティブ化と設定¶
注釈
ACCOUNTADMIN ロール、または アカウント予算管理権限を付与された ロールを持つユーザーのみが、アカウント予算を有効化し、設定することができます。
account_root_budget!ACTIVATE メソッドを使用してアカウント予算をアクティブ化します。
CALL snowflake.local.account_root_budget!ACTIVATE();
<budget_name>!SET_SPENDING_LIMIT メソッドを使用して支出制限を設定します。
CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(1000);
予算通知を受け取るメールアドレスを使って通知統合を作成します。
注釈
予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、メール通知の設定は失敗します。
このステップは オプション です。ALLOWED_RECIPIENTS リストに認証済みメールアドレスがある既存の通知統合がある場合は、次のステップに進みます。
CREATE NOTIFICATION INTEGRATION budgets_notification_integration TYPE=EMAIL ENABLED=TRUE ALLOWED_RECIPIENTS=('costadmin@example.com','budgetadmin@example.com');
通知統合の作成の詳細については、 メール通知統合の作成 をご参照ください。
通知統合に対する USAGE 権限を SNOWFLAKE アプリケーションに付与します。USAGE 権限を使用すると、予算で通知統合を使用して電子メールを送信することができます。
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
<budget_name>!SET_EMAIL_NOTIFICATIONS メソッドを使用して、アカウント予算のメール通知を設定します。
CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', 'costadmin@example.com, budgetadmin@example.com');
アカウント予算を有効化して設定した後、カスタムロールを使用して、管理者以外のユーザーがアカウント予算をモニターできるようにすることができます。詳細については、 アカウント予算をモニターするカスタムロールを作成する をご参照ください。
カスタム予算の作成¶
Snowsight または SQL を使用して、 カスタム予算 を作成できます。
予算を作成するためにカスタムロールを作成する¶
カスタムロールを使用して、アカウントに予算を作成できます。カスタム予算を作成するためにロールに付与する必要がある権限とロールの包括的なリストについては、 Budgetのロールと権限 をご参照ください。
たとえば、 budget_owner
ロールを作成し、スキーマ budgets_db.budgets_schema
でカスタム予算を作成するために必要なロールと権限を付与します。以下の例は、 ACCOUNTADMIN ロールを使用して実行する必要があります。
USE ROLE ACCOUNTADMIN;
CREATE ROLE budget_owner;
GRANT USAGE ON DATABASE budgets_db TO ROLE budget_owner;
GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner;
GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_owner;
GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
TO ROLE budget_owner;
予算所有者以外のロールがカスタム予算の設定を変更できるようにする場合は、変更権限を持つカスタムロールを作成することができます。詳細については、 カスタム予算を管理するカスタムロールを作成する をご参照ください。
Snowsightを使用したカスタム予算の作成¶
注釈
アカウント予算が アクティブ化 されていない場合、または非アクティブ化されている場合は、 Snowsight を使用してカスタム予算を作成することができません。ただし、 SQL を使用してカスタム予算を作成する ことはできます。
Snowsight にサインインします。
Admin » Cost Management を選択します。
Budgets を選択します。
Budget name を入力します。
予算を作成するデータベースとスキーマを選択します。
Spending limit を入力します。
通知を受け取るメールアドレスを入力します。
注釈
予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、通知メールの設定は失敗します。
Resources to monitor を選択します。
データベースを追加するには、 Databases を展開してデータベースを選択します。
スキーマにオブジェクトを追加するには、スキーマを展開して利用可能なオブジェクトをリストします。オブジェクトのカテゴリ(例: Tables または Tasks)を展開してオブジェクトを選択します。
ウェアハウスを追加するには、 Warehouses を展開してウェアハウスを選択します。
コンピューティングプールを追加するには、 Compute Pools を展開してコンピューティングプールを選択します。
注釈
データベースまたはスキーマを選択すると、データベースまたはスキーマに含まれる サポートされたオブジェクト (例: テーブル)もすべて予算に追加されます。
1つのカスタム予算に追加できるのは1つのオブジェクトのみです。オブジェクトが現在1つのカスタム予算に含まれており、そのオブジェクトを2つ目のカスタム予算に追加した場合、予算は警告を出さずにオブジェクトを1つ目のカスタム予算から削除します。
カスタム予算を作成して設定した後、カスタムロールを作成して、アカウント管理者以外の人が予算のリソースと使用状況をモニターできるようにすることができます。詳細については、 カスタム予算をモニターするカスタムロールを作成する をご参照ください。
SQL を使用したカスタム予算の作成¶
カスタム予算を作成してから、支出制限と通知メールアドレスを設定します。
注釈
カスタム予算を作成するには、 予算を作成するために必要な権限 を持つロールを使用する必要があります。
カスタム予算を修正するには、 予算を修正するために必要な権限 を持つロールを使用する必要があります。
アカウントの既存の予算を確認します。
注釈
次のステートメントは、アクセス権限を持っている予算を返します。ACCOUNTADMIN ロールを持つユーザーだけが、アカウント内のすべての予算を見ることができます。
SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
CREATE BUDGET コマンドを使用して
budgets_db.budgets_schema
に予算my_budget
を作成します。USE SCHEMA budgets_db.budgets_schema; CREATE SNOWFLAKE.CORE.BUDGET my_budget();
毎月の支出上限を設定します。たとえば、支出上限を月500クレジットに設定します。
CALL my_budget!SET_SPENDING_LIMIT(500);
通知統合とメールアドレスを設定します。
注釈
メール通知統合をまだ作成していない場合は、 アカウント予算セクション を参照して作成します。
通知を送信するには、 SNOWFLAKE アプリケーションに通知統合の USAGE 権限を付与する必要があります。
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
CALL my_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration', 'costadmin@example.com');
カスタム予算を作成して設定した後、カスタムロールを作成して、アカウント管理者以外の人が予算のリソースと使用状況をモニターできるようにすることができます。詳細については、 カスタム予算をモニターするカスタムロールを作成する をご参照ください。
新しい予算にオブジェクトを追加するには、 カスタム予算に対してオブジェクトを追加および削除する をご参照ください。
カスタム予算を管理するカスタムロールを作成する¶
カスタム予算をモニターおよび変更するには、カスタムロールに権限とインスタンスロールを付与します。カスタム予算を変更するためにロールに付与する必要がある権限とロールの包括的なリストについては、 Budgetのロールと権限 をご参照ください。
例¶
カスタムロール budget_admin
にスキーマ budgets_db.budgets_schema
の予算をモニターして変更する権限 my_budget
を付与します。
注釈
カスタム予算に対する OWNERSHIP 権限を持つロールのみが以下の例を実行できます。
たとえば、スキーマ
budgets_db.budgets_schema
の予算my_budget
のカスタムロールbudget_admin
に、必要な権限とインスタンスロールを付与します。GRANT USAGE ON DATABASE budgets_db TO ROLE budget_admin; GRANT USAGE ON SCHEMA budget_db.budgets_schema TO ROLE budget_admin; GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN TO ROLE budget_admin; GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_admin;
カスタム予算に追加またはカスタム予算から削除するオブジェクトに、 APPLYBUDGET 権限を付与します。このステップは、追加または削除するオブジェクトごとに必要です。
たとえば、ロール
budget_admin
がデータベースdb1
をカスタム予算my_budget
に追加できるようにするには、以下のステートメントを実行します。GRANT USAGE ON DATABASE db1 TO ROLE budget_admin; GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
カスタム予算内のオブジェクトを変更するには、 カスタム予算に対してオブジェクトを追加および削除する をご参照ください。
カスタム予算に対してオブジェクトを追加および削除する¶
Snowsight または SQL を使って、カスタム予算に対してオブジェクトを追加または削除できます。
注釈
カスタム予算からオブジェクトを追加または削除するには、予算とオブジェクトに対する必要な権限を持つロールを使用する必要があります。詳細については、 カスタム予算を管理するカスタムロールを作成する をご参照ください。
Snowsightを使用してカスタム予算に対してオブジェクトを追加および削除する¶
Snowsight にサインインします。
Admin » Cost Management を選択します。
Budgets を選択します。
編集する予算を選択します。
+ Resources を選択します。
データベースの追加および削除を実行するには、 Databases を展開してデータベースを選択/選択解除します。
スキーマにオブジェクトの追加および削除を実行するには、スキーマを展開して利用可能なオブジェクトをリストします。オブジェクトのカテゴリ(例: Tables または Tasks)を展開してオブジェクトを選択/選択解除します。
ウェアハウスを追加または削除するには、 Warehouses を展開し、ウェアハウスを選択/選択解除します。
コンピューティングプールを追加または削除するには、 Compute Pools を展開して、コンピューティングプールを選択または選択解除します。
注釈
データベースまたはスキーマを選択すると、データベースまたはスキーマに含まれる サポートされたオブジェクト (例: テーブル)もすべて予算に追加されます。
1つのカスタム予算に追加できるのは1つのオブジェクトのみです。オブジェクトが現在1つのカスタム予算に含まれており、そのオブジェクトを2つ目のカスタム予算に追加した場合、予算は警告を出さずにオブジェクトを1つ目のカスタム予算から削除します。
Done を選択します。
SQL を使用してカスタム予算からオブジェクトを追加または削除します。¶
予算からオブジェクトを追加または削除するために使用されるロールには、オブジェクトに対する APPLYBUDGET 権限が必要があります。詳細については、 カスタム予算を管理するカスタムロールを作成する セクションの例をご参照ください。
カスタム予算に既にあるオブジェクトのリストを確認するには、予算の <budget_name>!GET_LINKED_RESOURCES メソッドを呼び出します。例えば、 budgets_db.budgets_schema
スキーマの予算 my_budget
にあるオブジェクトのリストを見るには、以下のステートメントを実行します。
CALL budgets_db.budgets_schema.my_budget!GET_LINKED_RESOURCES();
ステートメントは、次の出力を返します。
+-------------+-----------------+-----------+-------------+---------------+
| RESOURCE_ID | NAME | DOMAIN | SCHEMA_NAME | DATABASE_NAME |
|-------------+-----------------+-----------+-------------+---------------|
| 326 | DB1 | DATABASE | NULL | NULL |
| 157 | MY_WH | WAREHOUSE | NULL | NULL |
+-------------+-----------------+-----------+-------------+---------------+
オブジェクトの予算への追加や予算からの削除は、 参照 によって行う必要があります。
以下の手順で、テーブル
t1
を予算my_budget
に追加できます。以下のステートメントを実行することで、
budget_admin
ロールにテーブルに対する APPLYBUDGET 権限を付与します。GRANT APPLYBUDGET ON TABLE t1 TO ROLE budget_admin;
ADD_RESOURCE のインスタンスメソッドにテーブル
t1
の参照を渡すには、以下のステートメントを実行します。CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE( SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
SYSTEM$REFERENCE 関数は、テーブルに対する APPLYBUDGET 権限が付与された、 TABLE オブジェクト
t1
の参照を作成します。これにより、予算はアカウント内の指定されたオブジェクトをモニターできるようになります。関数の3番目のパラメーターは、参照のスコープを指定し、この場合、「SESSION」はセッションスコープの参照を作成します。予算の ADD_RESOURCE メソッドに渡される参照は、任意の一時的な参照スコープで作成できます(つまり、3番目のパラメーターは「SESSION」または「CALL」のいずれかにできます)。オブジェクトと権限の包括的なリストについては、 参照のサポートされるオブジェクト型と権限 をご参照ください。
注釈
1つのカスタム予算に追加できるのは1つのオブジェクトのみです。オブジェクトが現在1つのカスタム予算に含まれており、そのオブジェクトを2つ目のカスタム予算に追加した場合、予算は警告を出さずにオブジェクトを1つ目のカスタム予算から削除します。
以下の手順で、予算
my_budget
からデータベースdb1
を削除できます。以下のステートメントを実行することで、
budget_admin
ロールにテーブルに対する APPLYBUDGET 権限を付与します。GRANT APPLYBUDGET ON DATABASE db1 TO ROLE budget_admin;
REMOVE_RESOURCE インスタンスメソッドに参照を渡してデータベースを削除します。
CALL budgets_db.budgets_schema.my_budget!REMOVE_RESOURCE( SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));
予算をモニターするカスタムロールを作成する¶
管理者以外のユーザーが予算のモニターに使用できるカスタムロールを作成することで、予算のモニターを委任することができます。
アカウント予算をモニターするカスタムロールを作成する¶
カスタムロールを作成して、アカウント管理者以外のユーザーがアカウント予算をモニターできるようにすることができます。アカウントをモニターするためにロールに付与すべき権限とロールの包括的リストについては、 Budgetのロールと権限 をご参照ください。
例¶
注釈
この例のステートメントを実行できるのは、アカウント管理者のみです。
例えば、ロール account_budget_monitor
を作成し、そのロールにアカウント予算のクレジット使用状況を表示する権限を与えます。
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;
カスタム予算をモニターするカスタムロールを作成する¶
カスタムロールを作成して、アカウント管理者以外のユーザーがカスタム予算をモニターできるようにすることができます。カスタム予算をモニターするためにロールに付与すべき権限とロールの包括的なリストについては、 Budgetのロールと権限 をご参照ください。
例¶
注釈
この例では、予算所有者(OWNERSHIP権限を持つロール)のみがステートメントを実行できます。
予算所有者ロールを使用して、スキーマ budgets_db.budgets_schema
の予算 my_budget
をモニターする能力をカスタムロール budget_monitor
に付与します。
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を使用した予算のモニター¶
Snowsightの Budgets ページを使用して、現在と過去の予算支出を表示できます。
注釈
Snowsight を使用して予算をモニターできるのは、 ACCOUNTADMIN ロール、または必要な権限とロールが付与されたユーザーのみです。
カスタムアカウントロールを使用してアカウント予算をモニターする方法の詳細については、 アカウント予算をモニターするカスタムロールを作成する をご参照ください。
カスタムアカウントロールを使用してカスタム予算をモニターする方法の詳細については、 カスタム予算をモニターするカスタムロールを作成する をご参照ください。
Snowsight の Budgets ページを使用して、現在と過去の予算支出を表示できます。
Snowsight にサインインします。
Admin » Cost Management を選択します。
Budgets を選択します。
予算の Current Month ビューでは、当日までの1日あたりのクレジット使用状況を確認できます。その月の予算を超える可能性があるかどうかを確認できます。棒グラフは月末まで続き、その月の実際のクレジット使用状況に基づいた、クレジット使用状況の予測が表示されます。 Spending limit 行は、予算通知がトリガーされる支出制限を示しています。

(表示する月)を選択すると、 Current Month またはそれ以上の期間で表示をフィルターできます。
Spend (現在のクレジット使用状況)と Interval (当月の残り時間)を比較して、支出が月予算を上回っているかどうかを確認できます。
Budgets または
Resources を選択して、ビューをフィルターできます。
Budgets ビューでカスタム予算を選択すると、特定の予算の詳細を確認できます。
注釈
カスタム予算の Service Type リストには、 Unused Resources タイプが含まれています。このサービスタイプは、予算内のオブジェクトに表示するクレジット使用状況がない場合に表示されます。これは、オブジェクトに計算コストのクレジット使用状況がない場合や、最近オブジェクトを予算に追加し、 サーバーレスバックグラウンドタスク がまだ実行されていない場合に発生する可能性があります。
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()
);
サービスの種類別に支出履歴を確認することができます。過去1週間のアカウント予算の検索最適化サーバーレス機能の支出履歴を表示するには、以下のステートメントを実行します。
USE ROLE account_budget_monitor;
CALL snowflake.local.account_root_budget!GET_SERVICE_TYPE_USAGE(
SERVICE_TYPE => 'SEARCH_OPTIMIZATION',
TIME_DEPART => 'day',
USER_TIMEZONE => 'UTC',
TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
カスタム予算をモニターするには、必要な権限が必要です。詳細については、 カスタム予算をモニターするカスタムロールを作成する をご参照ください。
カスタム予算の支出履歴を表示するには、 budget_monitor
ロールを使用します。たとえば、スキーマ budgets_db.budgets_schema
のカスタム予算 na_finance_budget
の支出履歴を表示するには、以下のステートメントを実行します。
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;
CALL budgets_db.budgets_schema.na_finance_budget!GET_SERVICE_TYPE_USAGE(
SERVICE_TYPE => 'MATERIALIZED_VIEW',
TIME_DEPART => 'day',
USER_TIMEZONE => 'UTC',
TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
詳細については、 Budgetメソッド をご参照ください。
アカウント予算を非アクティブ化する¶
Snowsight または SQL を使用してアカウント予算を非アクティブ化できます。
アカウント予算を非アクティブ化すると、アカウント予算はアクティブ化する前の状態にリセットされます。
過去のアカウント予算データはすべて削除されます。
アカウント予算のバックグラウンド測定タスクが中断されました。
支出制限とEメール通知のアカウント予算設定がリセットされます。
アカウント予算の非アクティブ化はカスタム予算には影響しません。アカウントからカスタム予算を削除するには、 DROP BUDGET コマンドを使用します。
注釈
アカウント予算が非アクティブになっている場合、 Snowsight を使用して新しいカスタム予算を作成することはできません。しかし、 SQL を使用してカスタム予算を作成する ことは可能です。
Snowsightを使用してアカウント予算を非アクティブ化する¶
Budgets ページを使用してアカウント予算を非アクティブ化できます。
Snowsight にサインインします。
Admin » Cost Management を選択します。
Budgets を選択します。
右上で ... その他のメニューを選択します。
Deactivate account budget を選択します。
SQL を使用してアカウント予算を非アクティブ化します。¶
account_root_budget!DEACTIVATE メソッドを使用して、アカウント予算を非アクティブ化できます。
CALL snowflake.local.account_root_budget!DEACTIVATE();