アカウント予算のアクティブ化またはカスタム予算の作成¶
予算機能を使用するには、アカウント予算をアクティブ化してカスタム予算を作成し、特定のSnowflakeオブジェクトグループのクレジット使用状況をモニターします。
クレジットの使用状況が支出制限を超えると予想される場合、メール、クラウドプロバイダーのキュー、またはWebhookを通じて通知するように予算を構成することができます。
注釈
メール通知は、SnowflakeのAmazon Web Services(AWS)デプロイメントで、 AWS Simple Email Service(SES)を使用して処理されます。AWS を使用して送信されたメールメッセージのコンテンツは、メッセージの配信を管理するために最大30日間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 ロール、または アカウント予算管理権限を付与された ロールを持つユーザーのみが、アカウント予算を有効化し、設定することができます。
SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET オブジェクトの 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);
予算に関する通知をセットし、クレジットの使用状況が支出制限を超えると予想される場合に通知を受け取れるようにします。
予算に関する通知との連携 をご参照ください。
カスタム予算の作成¶
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);
予算に関する通知をセットし、クレジットの使用状況が支出制限を超えると予想される場合に通知を受け取れるようにします。
予算に関する通知との連携 をご参照ください。
カスタム予算を作成して設定した後、カスタムロールを作成して、アカウント管理者以外の人が予算のリソースと使用状況をモニターできるようにすることができます。詳細については、 カスタム予算をモニターするカスタムロールを作成する をご参照ください。
新しい予算にオブジェクトを追加するには、 カスタム予算に対してオブジェクトを追加および削除する をご参照ください。
カスタム予算を管理するカスタムロールを作成する¶
カスタム予算をモニターおよび変更するには、カスタムロールに権限とインスタンスロールを付与します。カスタム予算を変更するためにロールに付与する必要がある権限とロールの包括的なリストについては、 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;
カスタム予算内のオブジェクトを変更するには、 カスタム予算に対してオブジェクトを追加および削除する をご参照ください。
予算に関する通知との連携¶
クレジットの使用状況が支出制限を超えると予想される場合に通知を受け取るには、ご希望の宛先に通知が届くように予算を設定する必要があります。以下の方法で通知を受け取ることができます。
メール。
クラウドサービス(Amazon SNS、Azure Event Grid、Google Cloud PubSub)が提供するキューにプッシュされたメッセージ。
Slack、Microsoft Teams、 PagerDuty のWebhookへの呼び出し。
次のセクションでは、通知のセットアップ方法と通知メッセージの解釈について説明します。
メール通知のセットアップ¶
メール通知をセットするには
(オプション)独自の通知統合を使用する場合は、通知統合を作成するか、使用する既存の通知統合を選択します。通知統合により、Snowflakeはサードパーティのシステムに通知を送信することができます。
TYPE = EMAIL と ALLOWED_RECIPIENTS を受信者の確認済みメールアドレスのリストにセットして通知統合を作成します。情報については、 メール通知統合の作成 および 通知を受信できるメールアドレスのリストの制限 をご覧ください。
注釈
予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、メール通知の設定は失敗します。
例:
CREATE NOTIFICATION INTEGRATION budgets_notification_integration TYPE = EMAIL ENABLED = TRUE ALLOWED_RECIPIENTS = ('costadmin@example.com','budgetadmin@example.com');
SYSTEM$SEND_SNOWFLAKE_NOTIFICATION ストアドプロシージャを呼び出してテストメッセージを送信し、通知統合が期待通りに機能することを確認します。
例えば、 JSON 形式でテストメッセージを送ることができます。
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION( SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'), SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration') );
通知統合に対する 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( 'costadmin@example.com, budgetadmin@example.com' );
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!SET_EMAIL_NOTIFICATIONS( 'costadmin@example.com, budgetadmin@example.com' );
使用したい通知統合がある場合は、その統合の名前と認証済みメールアドレスのリストをカンマ区切りで入力してください。例えば、アカウント予算に対する通知を構成する場合
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', 'costadmin@example.com, budgetadmin@example.com' );
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', 'costadmin@example.com, budgetadmin@example.com' );
通知統合を予算に関連付けた場合、 <budget_name>!GET_NOTIFICATION_INTEGRATION_NAME メソッドを呼び出すことで、予算が通知統合に関連付けられていることを確認できます。このメソッドは、予算に関連付けられたメール通知統合名を返します。
例えば、アカウント予算に対する通知を構成する場合
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATION_NAME();
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!GET_NOTIFICATION_INTEGRATION_NAME();
キュー通知のセットアップ¶
キュー通知をセットするには
通知統合を作成するか、使用する既存の通知統合を選択します。通知統合により、Snowflakeはサードパーティのシステムに通知を送信することができます。
TYPE=QUEUE、 DIRECTION=OUTBOUND、およびクラウドプロバイダーに必要な追加プロパティで通知統合を作成します。詳細については、以下をご参照ください。
注釈
アカウントは、クラウドプロバイダーのキューと同じ クラウドプラットフォーム 上にある必要があります。
例:
CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration ENABLED = TRUE TYPE = QUEUE DIRECTION = OUTBOUND NOTIFICATION_PROVIDER = AWS_SNS AWS_SNS_TOPIC_ARN = '<ARN_for_my_SNS_topic>' AWS_SNS_ROLE_ARN = '<ARN_for_my_IAM_role>';
注釈
キューとWebhook通知の場合、最大10の通知統合を予算に関連付けることができます。
SYSTEM$SEND_SNOWFLAKE_NOTIFICATION ストアドプロシージャを呼び出してテストメッセージを送信し、通知統合が期待通りに機能することを確認します。
例えば、 JSON 形式でテストメッセージを送ることができます。
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION( SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'), SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration') );
通知統合に対する USAGE 権限を SNOWFLAKE アプリケーションに付与します。USAGE 権限は、通知を送信するために通知統合を使用する予算を有効にします。例:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
通知統合を予算に関連付けます。 <budget_name>!ADD_NOTIFICATION_INTEGRATION メソッドを呼び出し、統合の名前を渡します。
例えば、アカウント予算に対する通知を構成する場合
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
通知統合が予算に関連付けられていることを確認します。
<budget_name>!GET_NOTIFICATION_INTEGRATIONS メソッドを呼び出して、予算に関連付けられている通知統合のリストを出力します。
例えば、アカウント予算に対する通知を構成する場合
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
このメソッドは、統合の名前、最後に通知の送信に使用された時間、追加された日付のリストをテーブルに出力します。
+----------------------------------+------------------------+------------+ | INTEGRATION_NAME | LAST_NOTIFICATION_TIME | ADDED_DATE | +----------------------------------+------------------------+------------+ | budgets_notification_integration | -1 | 2024-09-23 | +----------------------------------+------------------------+------------+
Webhook通知のセットアップ¶
Webhook通知をセットするには
通知統合を作成するか、使用する既存の通知統合を選択します。通知統合により、Snowflakeはサードパーティのシステムに通知を送信することができます。
TYPE=WEBHOOK とWebhookに必要な追加プロパティで通知統合を作成します。詳細については、 Webhook通知の送信 をご参照ください。
通知メッセージは JSON 形式なので、これを処理するように通知統合を構成する必要があります。例えば、次のステートメントはSlack Webhookのシークレットと通知統合を作成します。
CREATE OR REPLACE SECRET my_database.my_schema.slack_secret TYPE = GENERIC_STRING SECRET_STRING = '... secret in my Slack webhook URL ...'; CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration ENABLED = TRUE TYPE = WEBHOOK WEBHOOK_URL = 'https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET' WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}' WEBHOOK_HEADERS=('Content-Type'='application/json') WEBHOOK_SECRET = slack_secret;
注釈
キューとWebhook通知の場合、最大10の通知統合を予算に関連付けることができます。
SYSTEM$SEND_SNOWFLAKE_NOTIFICATION ストアドプロシージャを呼び出してテストメッセージを送信し、通知統合が期待通りに機能することを確認します。
例えば、 JSON 形式でテストメッセージを送ることができます。JSON 文字列の二重引用符とバックスラッシュは必ずエスケープしてください。
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION( SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{\\\"name\\\": \\\"value\\\"}'), SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration') );
通知統合に対する USAGE 権限を SNOWFLAKE アプリケーションに付与します。USAGE 権限は、通知を送信するために通知統合を使用する予算を有効にします。例:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
シークレットに依存するWebhook通知統合を使用している場合、 SNOWFLAKE アプリケーションに以下の権限を付与してください。
そのシークレットに対する READ 権限。
そのシークレットを含むスキーマに対する USAGE 権限。
そのスキーマを含むデータベースに対する USAGE 権限。
例:
GRANT READ ON SECRET slack_secret TO APPLICATION snowflake; GRANT USAGE ON SCHEMA my_schema TO APPLICATION snowflake; GRANT USAGE ON DATABASE my_database TO APPLICATION snowflake;
通知統合を予算に関連付けます。
<budget_name>!ADD_NOTIFICATION_INTEGRATION メソッドを呼び出し、統合の名前を渡します。
例えば、アカウント予算に対する通知を構成する場合
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!ADD_NOTIFICATION_INTEGRATION( 'budgets_notification_integration', );
通知統合が予算に関連付けられていることを確認します。
<budget_name>!GET_NOTIFICATION_INTEGRATIONS メソッドを呼び出し、予算に関連付けられている通知統合のリストを出力します。
例えば、アカウント予算に対する通知を構成する場合
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
カスタム予算の通知を構成している場合は、カスタム予算のオブジェクトのメソッドを呼び出します。例えば、
my_budget
というカスタム予算を作成した場合CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
このメソッドは、統合の名前、最後に通知の送信に使用された時間、追加された日付のリストをテーブルに出力します。
+----------------------------------+------------------------+------------+ | INTEGRATION_NAME | LAST_NOTIFICATION_TIME | ADDED_DATE | +----------------------------------+------------------------+------------+ | budgets_notification_integration | -1 | 2024-09-23 | +----------------------------------+------------------------+------------+
JSON 通知メッセージの解釈¶
クラウドプロバイダーのキューまたはWebhookに通知を送信するように予算を構成すると、通知メッセージには次のような JSON オブジェクトが含まれます。
{
"account_name": "MY_ACCOUNT",
"budget_name": "MY_BUDGET_NAME",
"type": "BUDGET_LIMIT_WARNING",
"limit": "100",
"spending": "67.42",
"spending_percent": "67.42",
"spending_trend_percent": "130.63",
"time_percent":"51.61"
}
JSON オブジェクトには、以下のキーと値のペアが含まれています。
キー |
説明 |
---|---|
|
アカウントの名前。 |
|
予算の名前。アカウント予算の場合、名前は |
|
通知のタイプ(例えば、 |
|
予算にセットした支出制限。 |
|
今月のクレジットの使用状況。 |
|
支出制限のうち、すでに使用された割合( |
|
月末までに使用される支出制限の予想割合( |
|
その月の経過時間の割合(例えば、月が半分終わった場合は |
予算に関する通知履歴の確認¶
予算に関する通知履歴を表示するには、 NOTIFICATION_HISTORY 関数を呼び出し、統合名でフィルターをかけます。例:
SELECT * FROM TABLE(
INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
INTEGRATION_NAME=>'budgets_notification_integration'
)
);
message_source
列には、予算通知を表す行の BUDGET
が含まれます。
予算からの通知統合の削除¶
予算から通知統合を削除するには、 <budget_name>!REMOVE_NOTIFICATION_INTEGRATION メソッドを呼び出し、統合の名前を渡します。例:
CALL my_budget!REMOVE_NOTIFICATION_INTEGRATION(
'budgets_notification_integration',
);
カスタム予算に対してオブジェクトを追加および削除する¶
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 |
+-------------+-----------------+-----------+-------------+---------------+
注釈
リストには、自動的に追加されたオブジェクト(例えば、 Snowflake Native App によって作成され所有されているコンピュートプールやウェアハウス)は含まれません。
オブジェクトの予算への追加や予算からの削除は、 参照 によって行う必要があります。
以下の手順で、テーブル
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」のいずれかにできます)。オブジェクトと権限の包括的なリストについては、 参照のサポートされるオブジェクト型と権限 をご参照ください。
注釈
予算に Snowflake Native App を追加する場合は、 SYSTEM$REFERENCE を呼び出す際、
object_type
引数に'DATABASE'
('APPLICATION'
ではない)を指定します。
注釈
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 にサインインします。
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メソッド をご参照ください。
予算に関する通知の無効化¶
予算の通知を無効にするには、 SET_NOTIFICATION_MUTE_FLAG メソッドを呼び出し、引数として TRUE を渡します。例:
CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_MUTE_FLAG(TRUE);
アカウント予算を非アクティブ化する¶
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();