<budget_name>!ADD_CUSTOM_ACTION¶
予算にストアドプロシージャを関連付けます。これにより、予測支出または実際の支出が指定したしきい値に達した際に、そのプロシージャが呼び出されるようになります。プロシージャは、:doc:`参照</sql-reference/references>`を使用して関連付ける必要があります。
詳細については、 予算のカスタムアクション をご参照ください。
構文¶
<budget_name>!ADD_CUSTOM_ACTION (
{ '<stored_procedure_reference>' | <reference_statement> },
{ <array_of_arguments> | <array_construct_statement> },
[ { 'ACTUAL' | 'PROJECTED' }, ]
<threshold> )
引数¶
'stored_procedure_reference'プロシージャに解決されるシリアル化された文字列表現。この文字列は SYSTEM$REFERENCE 関数の出力です。
reference_statement予算にプロシージャを関連付ける際に、参照を作成するための:doc:`/sql-reference/functions/system_reference`文。
array_of_argumentsストアドプロシージャに渡す引数の配列。
array_construct_statement0個、1個、または複数の入力値から構成された配列を返す:doc:`ARRAY_CONSTRUCT</sql-reference/functions/array_construct>`文。
{ 'ACTUAL' | 'PROJECTED'}アクションを実際の支出に基づいてトリガーするか、予測支出に基づいてトリガーするかを制御します。
'ACTUAL'--- 実際の支出が:samp:{threshold}`に達したときに、ストアドプロシージャが呼び出されます。:code:'PROJECTED` --- 支出が:samp:`{threshold}`に達すると予測されたときに、ストアドプロシージャが呼び出されます。このパラメーターを指定しなかった場合、デフォルトで``PROJECTED``が適用されます。
threshold予算制限のパーセンテージ。実際の支出または予測支出が予算上限のこの割合を超えたとSnowflakeが判断した際に、ストアドプロシージャが呼び出されます。
0から1,000までの数値を指定してください(0と1,000も含まれます)。
戻り値¶
プロシージャが予算に正常に関連付けられたかどうかを示すVARCHAR値を返します。
プロシージャが予算に関連付けられなかった場合、メソッドはエラーメッセージを返します。
アクセス制御の要件¶
予算に対してこのメソッドを呼び出すには、以下の権限およびロールが必要です。
予算インスタンスの ADMIN インスタンスロール。
予算インスタンスを含んでいるデータベースとスキーマに対する USAGE 権限。
ストアドプロシージャを格納しているデータベースおよびスキーマに対するUSAGE権限。
ストアドプロシージャに対するUSAGE権限。
詳細については、 Budgetのロールと権限 をご参照ください。
使用上の注意¶
このメソッドを呼び出しても、オブジェクトは返されません。このため、メソッドの連結を使って、このメソッドの戻り値で別のメソッドを呼び出すことはできません。換わりに、各メソッドを別々の SQL ステートメントで呼び出します。
例¶
支出が予算上限の75%に達すると予測された際に呼び出されるよう、:code:`budget_db.sch1.my_budget`予算に:code:`alert_team`ストアドプロシージャを関連付けます。
CALL budget_db.sch1.my_budget!ADD_CUSTOM_ACTION(
SYSTEM$REFERENCE('PROCEDURE', 'code_db.sch1.alert_team(string, string, string)', 'SESSION', 'USAGE'),
ARRAY_CONSTRUCT('admin@example.com', 'Budget Alert', 'Spending at 75% of budget limit'),
'PROJECTED',
75);
支出が予算上限の90%に達した際に呼び出されるよう、:code:`budget_db.sch1.my_budget`予算に:code:`alert_team`ストアドプロシージャを関連付けます。
CALL budget_db.sch1.my_budget!ADD_CUSTOM_ACTION(
SYSTEM$REFERENCE('PROCEDURE', 'code_db.sch1.alert_team(string, number)', 'SESSION', 'USAGE'),
ARRAY_CONSTRUCT('Critical budget threshold', 90),
'ACTUAL',
90);