予算のトラブルシューティング¶
This topic explains how to monitor budgets for problems and provides solutions to common issues.
Using an event table to monitor budgets¶
You can use an event table to collect telemetry data related to budgets. After Snowflake starts collecting the data in the event table, you can query the table, create a stream to track changes, or set alerts to send notifications when certain events occur.
If you want to collect telemetry data for budgets, you must enable the ENABLE_BUDGET_EVENT_LOGGING account parameter. To start collecting data, run the following command:
ALTER ACCOUNT SET ENABLE_BUDGET_EVENT_LOGGING = TRUE;
Understanding the events¶
The following table describes the values in the event table that correspond to budget events so you can focus on the appropriate events. For detailed information about the structure of an event table, see イベントテーブル列.
Event table column |
Field |
Value |
Description |
|---|---|---|---|
|
|
|
Unique ID of the budget instance. |
|
|
Fully qualified name of the budget instance. |
|
|
|
|
Constant identifier for all budget telemetry events. |
|
n/a |
|
Indicates a budget log event. |
|
|
|
Descriptive event name. Possible values include the following:
|
|
|
Severity level of budget event. |
|
|
|
|
Descriptive event message, often including contextual details such as an integration name or operation. |
Use the following examples to better understand how to identify budget events in an event table.
- Query: Find all events related to the propagation of all budgets within the account
SELECT TIMESTAMP, RESOURCE_ATTRIBUTES, SCOPE, RECORD_TYPE, RECORD, VALUE FROM SNOWFLAKE.TELEMETRY.EVENTS WHERE RECORD_TYPE = 'EVENT' AND SCOPE['name'] = 'snow.cost.budget';
- Query: Find all events related to a specific budget (for example,
MY_DB.SCH1.MY_BUDGET) SELECT TIMESTAMP, RESOURCE_ATTRIBUTES, SCOPE, RECORD_TYPE, RECORD, VALUE FROM SNOWFLAKE.TELEMETRY.EVENTS WHERE RECORD_TYPE = 'EVENT' AND SCOPE['name'] = 'snow.cost.budget' AND RESOURCE_ATTRIBUTES['snow.cost.budget.name'] ILIKE 'MY_DB.SCH1.MY_BUDGET';
Troubleshooting specific problems¶
次のシナリオは、 予算を作成または編集する際に発生する可能性のある問題のトラブルシューティングに役立ちます。
アカウント予算をアクティブ化できない¶
アカウント予算をアクティブ化できない理由は複数あります。
エラー |
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();
|
エラー |
-20000 (P0001): Uncaught exception of type 'NO_PERMISSION_TO_ACTIVATE_BUDGET' on line X at position X
|
|---|---|
原因 |
アカウントはまだBudgets機能をサポートしていません。 |
解決策 |
予算機能は、Govリージョンのアカウントでは使用できません。将来のリリースでGovリージョンをサポートする予定です。 |
カスタム予算を作成できない¶
カスタム予算を作成できない理由は複数あります。
エラー |
FAILURE: SQL access control error: Insufficient privileges to operate on class '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
|
|---|---|
原因 |
コンストラクターメソッドに引数を渡して予算を作成しています。 |
解決策 |
CREATE 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
|
|---|---|
原因 |
アカウント予算が有効になる前に、アカウント予算でメソッドを呼び出そうとしました。 |
解決策 |
カスタム予算からオブジェクトを追加または削除することはできません¶
カスタム予算からのオブジェクトの追加や削除を成功させるには、メソッドを呼び出すために使用されるロールが 必要な権限とロール を持っている必要があります。
エラー |
002141 (42601): SQL compilation error:
Unknown user-defined function <budget_db>.<budget_schema>.<budget_name>!ADD_RESOURCE
|
|---|---|
原因 |
インスタンスメソッドの呼び出しに使用したロールには、予算からオブジェクトを追加(または削除)するために必要な権限がありません。 |
解決策 |
メソッドの呼び出しに使用されるロールに、必要なインスタンスロールと権限を付与します。詳細については、 カスタム予算をモニターするカスタムロールを作成する をご参照ください。 |
エラー |
002003 (02000): SQL compilation error:
<object_type> '<object_name>' does not exist or not authorized.
|
|---|---|
原因 |
カスタム予算にオブジェクトを追加しようとしましたが、メソッドの呼び出しに使用したロールに必要な権限がありません。 |
解決策 |
予算からオブジェクトを追加(または削除)するには、メソッドの呼び出しに使用されるロールがオブジェクトに対してAPPLYBUDGET権限を持っている必要があります。親オブジェクトがデータベースまたはスキーマの場合、そのオブジェクトを含むデータベースとスキーマのUSAGE権限も必要です。 詳細については、 必須オブジェクト権限 リストをご参照ください。 |
エラー |
Uncaught exception of type 'EXPRESSION_ERROR' on line 10 at position 21 :
Privilege 'APPLYBUDGET' is not authorized on the reference object.
|
|---|---|
原因 |
SYSTEM $ REFERENCE ステートメントで PRIVILEGE パラメーターを指定せずにオブジェクトの参照を作成しようとしました。 |
解決策 |
オブジェクトの APPLYBUDGET 権限で参照を作成します。 |
エラー |
505001 (55000): Uncaught exception of type 'EXPRESSION_ERROR' on line 10
at position 21 : Specified object does not exist or not authorized for
the reference.
|
|---|---|
原因 |
このエラーメッセージには複数の原因があります。
|
解決策 |
|
予算のメール通知は設定できません¶
以下のシナリオは、 <budget_name>!SET_EMAIL_NOTIFICATIONS メソッドを呼び出す際の一般的な問題のトラブルシューティングに役立ちます。
エラー |
Unknown user-defined function <database_name>.<schema_name>.<budget_name>.SET_EMAIL_NOTIFICATIONS
|
|---|---|
原因 |
カスタム予算の電子メール通知を設定するために使用したロールに、 ADMIN インスタンスロールがありません。 |
解決策 |
必要な権限とロールを持つロールを使用します。SET_EMAIL_NOTIFICATIONS については、 アクセス制御の要件 をご参照ください。 |
エラー |
Integration '<INTEG_NAME>' does not exist or not authorized.
|
|---|---|
原因 |
通知統合が存在しません。 |
解決策 |
有効な通知統合を使用します。詳細については、 メール通知統合の作成 をご参照ください。ALLOWED_RECIPIENTSリストに予算通知用のメールアドレスを含めます。 |
エラー |
FAILURE: Uncaught exception of type 'EXPRESSION_ERROR' on line 16 at position 34 : Following email address(es) are not
allowed by the email integration <INTEGRATION_NAME>: [<email>]
|
|---|---|
原因 |
メールアドレスが通知統合に含まれていません。 |
解決策 |
通知統合にメールアドレスを追加するか、 ALLOWED_RECIPIENTS リストにすべてのメールアドレスを含む通知統合を使用します。 |
エラー |
Email recipients in the given list at indexes [<index_list>] are not allowed. Either these email addresses are not yet validated
or do not belong to any user in the current account.
|
|---|---|
原因 |
追加しようとしたメールアドレスの一部または全部が検証されていません。 |
解決策 |
メール通知受信者のメールアドレスを認証します。 をご参照ください。 |
GET_SERVICE_TYPE_USAGEメソッドを正常に呼び出せません¶
以下のシナリオは、 <budget_name>!GET_SERVICE_TYPE_USAGE メソッドを呼び出す際の一般的な問題のトラブルシューティングに役立ちます。
エラー |
001044 (42P13): SQL compilation error: error line 0 at position -1 Invalid argument types for function 'GET_SERVICE_TYPE_USAGE':
(VARCHAR(X), VARCHAR(X), VARCHAR(X), VARCHAR(X))
|
|---|---|
原因 |
無効な引数または間違った数の引数でメソッドが呼び出されました。 |
解決策 |
メソッドを呼び出す際に使用する引数が有効かどうか、必要な引数がすべて含まれているかどうかを確認します。 |
エラー |
002151 (22023): Uncaught exception of type 'STATEMENT_ERROR' on line 16 at position 23 : SQL compilation error:
[:TIME_DEPART] is not a valid date/time component for function DATE_TRUNC.
|
|---|---|
原因 |
引数 TIME_DEPART が無効な文字列です。 |
解決策 |
参照トピックにある TIME_DEPART 引数 の有効な値のいずれかを使用します。 |
エラー |
100094 (22000): Uncaught exception of type 'STATEMENT_ERROR' on line 16 at position 23 : Unknown timezone: '<invalid_timezone>'
|
|---|---|
原因 |
引数 USER_TIMEZONE が無効な文字列です。 |
解決策 |
有効なタイムゾーン文字列を使用します。詳細については、 GET_SERVICE_TYPE_USAGE の使用上の注意 をご参照ください。 |
アカウントで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機能をサポートしていません。 |
解決策 |
予算機能は、Govリージョンのアカウントでは使用できません。将来のリリースでGovリージョンをサポートする予定です。 |