カスタム予算¶
カスタム予算を使用すると、オブジェクトのカスタムグループのコンピューティングコストを監視できます。次の2つの方法で監視するオブジェクトを指定できます。
予算にタグを追加します。指定されたタグ/値ペアを持つすべてのオブジェクトは、予算によって監視されます。
各オブジェクトを個別に予算に追加します。
同じ予算が、個別に追加されたオブジェクトと、タグを使用して追加されたオブジェクトを追跡します。オブジェクトが複数の理由で予算に含まれている場合(たとえば、オブジェクトが個別に追加され、指定されたタグ/値ペアを持つ場合)、そのオブジェクトのクレジット使用状況は予算の支出制限に対して1回だけカウントされます。
カスタム予算にオブジェクトを追加すると、予算はバックグラウンドのメンテナンス操作やサーバーレス機能を含む、オブジェクトのすべての計算コストを監視します。たとえば、カスタム予算にテーブルを追加し、そのテーブルで自動クラスタリングを有効にした場合、予算は自動クラスタリングのバックグラウンドメンテナンスのクレジット使用状況を監視します。
カスタム予算でサポート対象となるオブジェクト¶
以下のタイプのSnowflakeオブジェクトを監視するカスタム予算を作成できます。
オブジェクト |
監視されたコスト |
---|---|
アラート |
サーバーレスアラートはアカウント予算によって監視されます。ユーザー管理ウェアハウスを使用して実行されるアラートのクレジット使用状況を監視するには、そのウェアハウスを予算に追加する必要があります。アラートのコストについては、 警告のコストの理解 をご覧ください。 |
アプリ . (Snowflake Native Apps) |
Snowflake Native App によって作成され所有されているオブジェクトの予算の動作は、アプリを直接追加するか、タグを追加するかによって異なります。
|
コンピューティングプール |
Snowpark Container Servicesのコンピューティングプールの使用状況。詳細については、 コンピューティングプールコスト をご参照ください。 |
データベース |
データベースを予算に追加すると、そのデータベースに含まれるすべてのサポート対象オブジェクトも自動的に追加されます。予算は以下のオブジェクトとサーバーレス機能のクレジット使用状況を監視します。
|
マテリアライズドビュー |
マテリアライズドビューのバックグラウンドメンテナンス。詳細については、 マテリアライズドビューのコスト をご参照ください。 |
スキーマ |
スキーマを予算に追加すると、スキーマが含むすべてのサポート対象オブジェクトも自動的に追加されます。予算は上記のようにスキーマオブジェクトのクレジット使用状況を監視します。 |
パイプ |
Snowpipeを使用したデータ読み込み中のリソース消費。詳細については、 Snowpipeコスト をご参照ください。 |
テーブル |
|
タスク |
サーバーレスのタスクはカスタム予算によって監視されます。ユーザーが管理するウェアハウスを使用して実行されるタスクのクレジット使用状況を監視するには、そのウェアハウスを予算に追加する必要があります。詳細については、 タスクのコスト をご参照ください。 |
ウェアハウス |
クエリ実行、ウェブインターフェイス、その他の機能(仮想ウェアハウスのクレジット使用状況 を参照)、サーバーレスタスク、 クラウドサービスのコンピューティング のためのコンピューティングリソース。 |
詳細については、 カスタム予算に対してタグを追加または削除する をご参照ください。
カスタム予算の作成¶
次のセクションでは、カスタム予算の作成方法について説明します。
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 を選択します。
|sf-plus-icon-button|(予算を追加)を選択します。
Budget name を入力します。
予算を作成するデータベースとスキーマを選択します。
Spending limit を入力します。
通知を受け取るメールアドレスを入力します。
注釈
予算の通知用に追加された各メールアドレスは、 検証済み である必要があります。リスト内のメールアドレスが 検証されていない 場合、通知メールの設定は失敗します。
+ Tag & resources を選択して、カスタム予算に追加するタグとリソースを追加します。
注釈
データベースまたはスキーマを選択すると、データベースまたはスキーマに含まれる サポートされたオブジェクト (例: テーブル)もすべて予算に追加されます。
個々のオブジェクトを直接追加する場合、1つのカスタム予算に追加できるのは1つのオブジェクトのみです。このケースでは、オブジェクトが現在1つのカスタム予算に含まれており、そのオブジェクトを2つ目のカスタム予算に追加した場合、予算は警告を出さずにオブジェクトを1つ目のカスタム予算から削除します。この動作は、タグを使用してオブジェクトを予算に追加する場合には適用されません。タグを使用してオブジェクトを予算に追加する場合、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;
カスタム予算に対してオブジェクトを追加または削除する¶
Snowsight または SQL を使って、カスタム予算に対してオブジェクトを追加または削除できます。
注釈
カスタム予算からオブジェクトを追加または削除するには、予算とオブジェクトに対する必要な権限を持つロールを使用する必要があります。詳細については、 カスタム予算を管理するカスタムロールを作成する をご参照ください。
Snowsight を使用してカスタム予算からオブジェクトを追加または削除する¶
Snowsight にサインインします。
Admin » Cost Management を選択します。
Budgets を選択します。
編集する予算を選択します。
ダッシュボードで、|sf-pencil-icon|(編集アイコン)を選択します。
+ Tags & resources を選択して、カスタム予算に追加するオブジェクトを選択します。
注釈
データベースまたはスキーマを選択すると、データベースまたはスキーマに含まれる サポートされたオブジェクト (例: テーブル)もすべて予算に追加されます。
個々のオブジェクトを直接追加する場合、1つのカスタム予算に追加できるのは1つのオブジェクトのみです。このケースでは、オブジェクトが現在1つのカスタム予算に含まれており、そのオブジェクトを2つ目のカスタム予算に追加した場合、予算は警告を出さずにオブジェクトを1つ目のカスタム予算から削除します。この動作は、タグを使用してオブジェクトを予算に追加する場合には適用されません。タグを使用してオブジェクトを予算に追加する場合、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( SELECT SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'applybudget'));
SYSTEM$REFERENCE 関数は、テーブルに対する TABLE 権限が付与された、
t1
オブジェクト APPLYBUDGET の参照を作成します。これにより、予算はアカウント内の指定されたオブジェクトをモニターできるようになります。関数の3番目のパラメーターは、参照のスコープを指定し、この場合、「SESSION」はセッションスコープの参照を作成します。予算の ADD_RESOURCE メソッドに渡される参照は、任意の一時的な参照スコープで作成できます(つまり、3番目のパラメーターは「SESSION」または「CALL」のいずれかにできます)。注釈
予算に Snowflake Native App を追加する場合は、 SYSTEM$REFERENCE を呼び出す際、
object_type
引数に'DATABASE'
('APPLICATION'
ではない)を指定します。オブジェクトと権限の包括的なリストについては、 参照のサポートされるオブジェクト型と権限 をご参照ください。
注釈
個々のオブジェクトを直接追加する場合、1つのカスタム予算に追加できるのは1つのオブジェクトのみです。このケースでは、オブジェクトが現在1つのカスタム予算に含まれており、そのオブジェクトを2つ目のカスタム予算に追加した場合、予算は警告を出さずにオブジェクトを1つ目のカスタム予算から削除します。この動作は、タグを使用してオブジェクトを予算に追加する場合には適用されません。タグを使用してオブジェクトを予算に追加する場合、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( SELECT SYSTEM$REFERENCE('DATABASE', 'db1', 'SESSION', 'applybudget'));