Budgetsを使用したクレジット使用状況のモニタリング

Budgetsを使用すると、特定のSnowflakeオブジェクトのグループに対するSnowflakeクレジット使用状況をアカウントレベルでモニターおよび通知できます。

このトピックの内容:

Budgetsの概要

予算により、SnowflakeアカウントまたはSnowflakeオブジェクトのカスタムグループの コンピューティングコスト の月間支出制限を定義できます。支出制限を上回ると予想される場合、予算通知の受け取りを指定したメールアドレスに毎日通知メールが送信されます。

アカウント予算およびカスタム予算

Snowflakeで予算の使用を開始するには、 アカウント予算をアクティブ化 します。アカウント予算は、アカウント内のすべての サポートオブジェクト の支出をモニターします。予算に関する通知を受け取るには、支出制限を設定し、通知を受け取るメールアドレスを指定します。

また、 カスタム予算を作成 して、サポートされているオブジェクトの特定のグループの支出制限をモニターすることもできます。どのようなデータベースやスキーマでもカスタム予算を作成できます。アカウント予算と同様に、支出制限と通知メールを受け取るための通知メールアドレスを設定する必要があります。

支出制限と時間間隔

支出制限はSnowflakeクレジットで表示され、警告と通知の目的のみに使用されます。支出制限は、1暦月の時間間隔で設定されます。

時間間隔は、月の初日の12:00AM UTC で始まり、月の最終日の11:59PM UTC で終わります。予算が月の初日以降に作成された場合、最初の監視間隔は当月の最終日までの期間となり、翌月の初日にリセットされます。

月初以降に アカウント予算 を有効にした場合、月初からのデータがバックフィルされ、その月の支出制限を超えるかどうかを判断するために使用されます。

月初以降に カスタム予算 を作成した場合、その月の履歴データは バックフィルされません。将来の支出予測は、予算が有効になってから数日間のクレジットの使用状況に基づいて行われます。

注釈

月初以降にカスタム予算を作成した場合、初月の予算を超過する可能性があります。途中からの月では、予算が作成される前のクレジットの使用状況はカスタム予算ではバックフィルされず、間違った予測になる可能性があります。翌月以降は、支出履歴に基づいてクレジットの使用状況を正しく予測します。

サポートされているオブジェクト

サポートされるオブジェクトのリストは、すべてアカウント予算の支出制限に貢献します。カスタム予算では、監視する特定のオブジェクトを選択できます。

予算では、次のオブジェクトをモニターできます。

  • テーブル

  • マテリアライズドビュー

  • スキーマ

  • データベース

  • ウェアハウス

  • パイプ

  • タスク

サポートされるサーバーレス機能

Budgetsにより、予算に含まれるサポートされたサーバーレス機能のクレジット使用状況がモニターされます。予算では、次のサーバーレス機能をサポートできます。

サーバーレス機能

オブジェクト

AUTO_CLUSTERING

テーブル

MATERIALIZED_VIEW

テーブル

PIPE

パイプ

QUERY_ACCELERATION

ウェアハウス

SEARCH_OPTIMIZATION

テーブル

SERVERLESS_TASK

タスク

SNOWPIPE_STREAMING

パイプ

WAREHOUSE_METERING

ウェアハウス

WAREHOUSE_METERING_READER

ウェアハウス

予算の通知

予算により、時系列予測に基づき、現在の支出が支出制限を超えそうな場合、毎日アラート通知が送信されます。自動アラート通知を受信するには、次を実行する必要があります。

  • 予算の支出制限を設定する。

  • 予算のメール通知を設定する。

以下は、通知メールの例です。

予算メールの例

SET_NOTIFICATION_MUTE_FLAG メソッドを呼び出すことで、予算のメール通知を無効にできます。

Budgetのロールと権限

カスタムロールにロールと権限を付与することで、新規予算の作成、既存予算の修正、予算の監視を実行する権限を付与できます。

Budgets作成に必要なロールと権限

注釈

ACCOUNTADMIN ロールを持つユーザーのみがアカウント予算をアクティブ化できます。

カスタムロールを使用して、アカウントにカスタム予算を作成できます。カスタムロールに次のデータベースロールと権限を付与します。

  • SNOWFLAKE データベースロール SNOWFLAKE.BUDGET_CREATOR。

  • 予算を作成するスキーマに対する CREATE SNOWFLAKE.CORE.BUDGET 権限。

たとえば、 budget_admin ロールを作成し、スキーマ budgets_db.budgets_schema でカスタム予算を作成するために必要なロールと権限を付与します。

CREATE ROLE budget_admin;

GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_admin;

GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_admin;

GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
  TO ROLE budget_admin;
Copy

アカウント予算を管理するアプリケーションロール

アカウントのカスタムロールに次のアプリケーションロールを付与し、アカウント予算を変更または監視できます。

アプリケーションロール

説明

BUDGET_VIEWER

ロールが予算使用状況データを表示できるようにします。

BUDGET_ADMIN

ロールは、支出制限、通知を受け取るメールアドレスのリスト、通知のミュート設定など、予算のプロパティを変更できます。

注釈

次の例を実行できるのは、 ACCOUNTADMIN ロールを持つユーザーだけです。

カスタムロール budget_admin にアカウント予算を変更する権限を付与します。

GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE budget_admin;
Copy

カスタムロール budget_monitor に予算使用データを表示する権限を付与します。

GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE budget_monitor;
Copy

カスタム予算を管理するインスタンスロール

各カスタム予算にはインスタンスロールがあり、他のロールに付与して予算を表示または変更できます。

インスタンスロール

説明

VIEWER

ロールが予算使用状況データを表示できるようにします。

ADMIN

ロールは、支出制限、通知を受け取るメールアドレスのリスト、通知のミュート設定、グループ内のオブジェクトを含む、予算のプロパティを変更できます。

注釈

現在は、 SQL コマンドを使用してカスタム予算内のオブジェクトを変更することしかできません。

注釈

予算インスタンスを作成したロールのみが次の例を実行できます。

カスタムロール budget_admin にスキーマ budgets_db.budgets_schema の予算を変更する権限 my_budget を付与します。

GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN
  TO ROLE budget_admin;
Copy

Budgetsのコストについて

Budgets機能をサポートするために、Snowflakeは SNOWFLAKE データベースにメタデータを格納します。このメタデータは、アカウント予算が有効化されていなくても、アカウントに格納されます。このメタデータのストレージは、お客様のアカウントに請求されます。

Budgets機能が有効な場合、Snowflakeはサーバーレスのバックグラウンドタスク(_MEASUREMENT_TASK と_BACKFILL_TASK)を実行し、アカウント予算とアカウントのカスタム予算のクレジット使用状況データを収集します。これらのタスクはアカウントに請求されます。

Budgetsのバックグラウンドタスクによって収集されたデータは、アカウント予算の SNOWFLAKE データベースに格納されます。データのストレージはお客様のアカウントに請求されます。

コストの調査

サーバーレスタスクのコストは、 Snowsight またはAccount Usage SERVERLESS_TASK_HISTORY ビュー を使用して表示できます。サービスの種類に基づくコストの表示に関する詳細情報については、 コンピューティングコストの調査 をご参照ください。

ストレージのコストは、 Snowsight を使用するか、Account Usageおよび組織の使用状況ビューをクエリすると表示できます。ストレージコストの表示の詳細については、 ストレージコストの調査 をご参照ください。

アカウントのBudgetsを有効にする

アカウントのBudgetsを有効にするには、アカウントの予算をアクティブ化します。

アカウント予算をアクティブ化する

アカウント予算をアクティブ化し、アカウントの支出制限を設定し、クレジットの使用状況が支出制限を超えた場合に通知を受け取るためのメールアドレスを指定します。

Snowsight または SQL を使用してアカウント予算をアクティブ化できます。

注釈

  • アカウント管理者のみがアカウント予算をアクティブ化できます。

  • アカウント予算をアクティブ化すると、非アクティブ化することはできません。

Snowsightを使用したアカウント予算のアクティブ化と設定

  1. Snowsight にサインインします。

  2. Select Admin » Cost Management

  3. Budgets を選択します。

  4. プロンプトが表示されたら、ウェアハウスを選択します。

  5. ダッシュボードの右上隅で、 Set up Account Budget を選択します。

  6. アカウントの目標支出制限を入力します。

  7. 通知メールを受け取るメールアドレスを入力します。

    注釈

    予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、通知メールの設定は失敗します。

  8. Finish Setup を選択します。

Snowsight を使用して通知用のメールアドレスを追加すると、Snowflake は メール通知統合 をバックグラウンドプロセスで作成し、次のアクションを実行します。

  • 通知メールを受信するために入力したメールアドレスを使用して、 default_budget_notification_integration という名前の新しいメール通知統合を作成します。

  • 統合の USAGE 権限を SNOWFLAKE アプリケーションに付与します。

SQL を使用したアカウント予算のアクティブ化と設定

  1. account_root_budget!ACTIVATE メソッドを使用してアカウント予算をアクティブ化します。

    CALL snowflake.local.account_root_budget!ACTIVATE();
    
    Copy
  2. <budget_name>!SET_SPENDING_LIMIT メソッドを使用して支出制限を設定します。

    CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(1000);
    
    Copy
  3. 予算通知を受け取るメールアドレスを NOTIFICATION INTEGRATION に作成します。

    このステップは オプション です。既存の NOTIFICATION INTEGRATION がある場合は、次のステップにスキップしてください。

    CREATE NOTIFICATION INTEGRATION budgets_notification_integration
      TYPE=EMAIL
      ENABLED=TRUE
      ALLOWED_RECIPIENTS=('costadmin@example.com','budgetadmin@example.com');
    
    Copy

    通知統合に USAGE 権限を付与します。

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy

    INTEGRATION NOTIFICATION の作成の詳細については、 通知統合の作成 をご参照ください。

  4. アカウント予算のメール通知を設定します。

    CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS(
       'budgets_notification_integration',
       'costadmin@example.com, budgetadmin@example.com');
    
    Copy

カスタム予算の作成

カスタム予算を作成して、アカウント内の特定のオブジェクトのクレジット使用状況を監視できます。

Snowsightを使用したカスタム予算の作成

  1. Snowsight にサインインします。

  2. Select Admin » Cost Management

  3. Budgets を選択します。

  4. ダッシュボードの右上隅で、 プラスアイコン (Budgetを追加)を選択します。

    注釈

    Budgetを追加アイコンが表示されない場合は、まず アカウント予算 をアクティブにする必要があります。

  5. Budget name を入力します。

  6. 予算を作成するデータベースとスキーマを選択します。

  7. Spending limit を入力します。

  8. 通知を受け取るメールアドレスを入力します。

    注釈

    予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、通知メールの設定は失敗します。

  9. Resources to monitor を選択します。

    • データベースを追加するには、 Databases を展開してデータベースを選択します。

    • スキーマにオブジェクトを追加するには、スキーマを展開して利用可能なオブジェクトをリストします。オブジェクトのカテゴリ(例: Tables または Tasks)を展開してオブジェクトを選択します。

    • ウェアハウスを追加するには、 Warehouses を展開してウェアハウスを選択します。

    注釈

    データベースまたはスキーマを選択すると、データベースまたはスキーマに含まれる サポートされたオブジェクト (例: テーブル)もすべて予算に追加されます。

Snowsight を使用して通知用のメールアドレスを追加すると、Snowflakeはバックグラウンドプロセスで default_budget_notification_integration という名前のメール通知統合を作成または更新します。通知統合が存在する場合、Snowflakeは入力した新しいメールアドレスをリスト内の既存のメールアドレスに追加します。

通知統合が存在しない場合、Snowflakeは通知統合を作成して USAGE 権限を付与します。詳細については、 アカウント予算セクションで説明されているステップ をご参照ください。

SQL を使用したカスタム予算の作成

カスタム予算を作成してから、支出制限と通知メールアドレスを設定します。

注釈

  • 予算を作成するロールは SNOWFLAKE データベース・ロール BUDGET_CREATOR とCREATE SNOWFLAKE.CORE.BUDGET 権限を付与される必要があります。詳細については、 Budgetのロールと権限 をご参照ください。

  • 通知を送信するには、 SNOWFLAKE アプリケーションに通知統合の USAGE 権限を付与する必要があります。

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  1. アカウントの既存の予算を確認します。

    SELECT SYSTEM$SHOW_BUDGETS_IN_ACCOUNT();
    
    Copy
  2. CREATE SNOWFLAKE.CORE.BUDGET コマンドを使用して budgets_db.budgets_schema に予算 my_budget を作成します。

    USE SCHEMA budgets_db.budgets_schema;
    
    CREATE SNOWFLAKE.CORE.BUDGET my_budget();
    
    Copy
  3. 支出制限を月500クレジットに設定します。

    CALL my_budget!SET_SPENDING_LIMIT(500);
    
    Copy
  4. 通知統合とメールアドレスを設定します。

    注釈

    メール NOTIFICATION INTEGRATION をまだ作成していない場合は、 アカウント予算セクションのステップ を参照して作成してください。

    CALL my_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration',
                                           'costadmin@example.com');
    
    Copy
  5. カスタム予算にオブジェクトを追加するには、予算の ADD_RESOURCE メソッドへの参照を渡す必要があります。たとえば、 t1 という名前のテーブルを my_budget という名前の予算に追加します。

    CALL budgets_db.budgets_schema.my_budget!ADD_RESOURCE(
       SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
    
    Copy

    SYSTEM$REFERENCE ステートメントは、 APPLYBUDGET 権限をテーブルに付与した TABLE オブジェクト t1 への参照を作成します。関数の3番目のパラメーターは、参照のスコープを指定し、この場合、「SESSION」はセッションスコープの参照を作成します。予算の ADD_RESOURCE メソッドに渡される参照は、任意の一時的な参照スコープで作成できます(つまり、3番目のパラメーターは「SESSION」または「CALL」のいずれかにできます)。

  6. ADMIN インスタンスロールをカスタム budget_admin ロールに付与します。

    GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.my_budget!ADMIN
      TO ROLE budget_admin;
    
    Copy

Snowsightを使用した予算のモニター

注釈

Snowsight を使用して予算を監視できるのは、アカウント管理者のみです。

Snowsight の Budgets ページを使用して、現在と過去の予算支出を表示できます。

  1. Snowsight にサインインします。

  2. Select Admin » Cost Management

  3. Budgets を選択します。

予算の Current Month ビューでは、当日までの1日あたりのクレジット使用状況を確認できます。その月の予算を超える可能性があるかどうかを確認できます。棒グラフは月末まで続き、その月の実際のクレジット使用状況に基づいた、クレジット使用状況の予測が表示されます。 Spending limit 行は、予算通知がトリガーされる支出制限を示しています。

予算の支出予測グラフ

時計アイコン (表示する月)を選択すると、 Current Month またはそれ以上の期間で表示をフィルターできます。

Spend (現在のクレジット使用状況)と Interval (当月の残り時間)を比較して、支出が月予算を上回っているかどうかを確認できます。

予算アイコン Budgets または リソースアイコン Resources を選択して、ビューをフィルターできます。

  • Budgets ビューでカスタム予算を選択すると、特定の予算の詳細を確認できます。

  • Resources ビューでは、 Service Type、オブジェクト NameCredit Usage でフィルターとソートができます。

制限事項

以下はBudgetsに関する制限事項です。

  • 現在、予算通知メールでは、通知メールがどのアカウントから送られてきたのかが明記されていません。

  • BUDGET クラスのインスタンスをターゲットアカウントに 複製 することはできません。

  • アカウントには最大100件のカスタム予算を含めることができます。

  • 現在、Budgetsは Snowpark Container Services のコストのモニタリングをサポートしていません。

  • 現在、Budgetsは ハイブリッドテーブル のコストのモニタリングをサポートしていません。

SQL を使用した予算の作成と編集のトラブルシューティング

次のシナリオは、 SQL を使用して予算を作成または編集する際に発生する可能性のある問題のトラブルシューティングに役立ちます。

アカウント予算をアクティブ化できない

アカウント予算をアクティブ化できない理由は複数あります。

エラー

Unknown user-defined function SNOWFLAKE.LOCAL.ACTIVATE

原因

Snowflakeアカウントが新しい場合、アカウント予算はまだアカウントで利用できません。

解決策

新しく作成したアカウントでアカウント予算が利用できるようになるまで待ちます。利用できるようになると、アクティブ化できます。

エラー

FAILURE: Uncaught exception of type 'BUDGET_ALREADY_ACTIVATED' on line X at position X

原因

アカウント予算はすでにアクティブ化されています。

解決策

<budget_name>!GET_CONFIG メソッドを呼び出すと、アクティブ化のタイムスタンプが表示されます。

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_CONFIG();
Copy

エラー

-20000 (P0001): Uncaught exception of type 'NO_PERMISSION_TO_ACTIVATE_BUDGET' on line X at position X

原因

アカウントはまだBudgets機能をサポートしていません。

解決策

Budgets機能は、すべてのSnowflakeエディションでプレビューを利用できます。トライアルアカウントまたは政府リージョンのアカウントではBudgetsは利用できません。

お客様のアカウントがサポートされているリージョンにあり、アカウント予算をアクティブ化できない場合は、 Snowflakeサポート にお問い合わせください。それ以外の場合は、将来のリリースでお住まいの地域をサポートする予定です。

カスタム予算を作成できない

カスタム予算を作成できない理由は複数あります。

エラー

FAILURE: SQL access control error: Insufficient privileges to operate on class 'BUDGET'

原因

使用しているロールにカスタム予算を作成する権限がありません。

解決策

必要な権限を持つロールを使用します。 Budgets作成に必要なロールと権限 をご参照ください。

エラー

FAILURE: Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 :
Uncaught exception of type 'UNSUPPORTED_BUDGET_TYPE' on line X at position X

原因

コンストラクターメソッドに引数を渡して予算を作成しています。

解決策

CREATE SNOWFLAKE.CORE.BUDGET を参照して、作成したステートメントを編集します。

カスタム予算をアクティブ化できない

エラー

FAILURE: Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 :
Uncaught exception of type 'UNSUPPORTED_BUDGET_TYPE' on line X at position X

原因

カスタム予算で ACTIVATE メソッドを呼び出そうとしました。

解決策

ACTIVATE メソッドはアカウント予算でのみ使用できます。カスタム予算を作成したら、 <budget_name>!SET_SPENDING_LIMIT<budget_name>!SET_EMAIL_NOTIFICATIONS メソッドを使用して予算を構成し、通知メールの受信を開始します。

アカウント予算のメソッドを呼び出すことができない

アカウント予算でメソッドを呼び出すと失敗する理由は複数あります。

エラー

-20000 (P0001): Uncaught exception of type 'FUNCTION_NOT_SUPPORTED_FOR_ACCOUNT_ROOT_BUDGET' on line 11 at position 18

原因

アカウント予算で次のいずれかのメソッドを呼び出そうとしました。

解決策

これらのメソッドはアカウント予算では使用できません。アカウント予算はアカウントでサポートされているすべてのオブジェクトを監視し、オブジェクトは追加または削除できません。詳細については、 アカウント予算およびカスタム予算 をご参照ください。

エラー

-20000 (P0001): Uncaught exception of type 'ACCOUNT_ROOT_BUDGET_NOT_ACTIVATED' on line X at position X

原因

アカウント予算が有効になる前に、アカウント予算でメソッドを呼び出そうとしました。

解決策

アカウント予算をアクティブ化します

アカウントでBudgets機能を使用できない

エラー

FAILURE: SQL compilation error: Class 'SNOWFLAKE.CORE.BUDGET' does not exist or not authorized.
000002 (0A000): Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 : Unsupported feature 'TOK_RESOURCE_GROUP'.

原因

アカウントはまだBudgets機能をサポートしていません。

解決策

Budgets機能は、すべてのSnowflakeエディションでプレビューを利用できます。Budgetsは、トライアルアカウントや政府リージョンのアカウントでは使用できません。

お客様のアカウントがサポートされているリージョンにある場合は、 Snowflakeサポート にお問い合わせください。それ以外の場合は、将来のリリースでお住まいの地域をサポートする予定です。