CREATE ALERT¶
現在のスキーマに新しい アラート を作成します。
- こちらもご参照ください。
構文¶
CREATE [ OR REPLACE ] ALERT [ IF NOT EXISTS ] <name>
WAREHOUSE = <warehouse_name>
SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }'
IF( EXISTS(
<condition>
))
THEN
<action>
必須パラメーター¶
name
アラートの識別子(つまり、名前)を指定する文字列。アラートが作成されるスキーマに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
WAREHOUSE = warehouse_name
このアラートを実行するためのコンピューティングリソースを提供する仮想ウェアハウスを指定します。
SCHEDULE ...
アラートの条件を定期的に評価するスケジュールを指定します。
次のいずれかの方法でスケジュールを指定できます。
USING CRON expr time_zone
アラートの条件を定期的に評価するためのcron式とタイムゾーンを指定します。標準のcronユーティリティ構文のサブセットをサポートします。
cron式は、次のフィールドで構成されます。
# __________ minute (0-59) # | ________ hour (0-23) # | | ______ day of month (1-31, or L) # | | | ____ month (1-12, JAN-DEC) # | | | | _ day of week (0-6, SUN-SAT, or L) # | | | | | # | | | | | * * * * *
次の特殊文字がサポートされています。
特殊文字
説明
*
ワイルドカード。フィールドのオカレンスを指定します。
L
「最後」の略。曜日フィールドで使用すると、特定の月の「最後の金曜日」(「5L」)などの構造を指定できます。月の日フィールドでは、月の最後の日を指定します。
/n
特定の時間単位における
n
番目のインスタンスを示します。時間の各クォンタムは独立して計算されます。たとえば、月フィールドに
4/3
が指定されている場合、条件の評価は4月、7月、および10月(つまり、年の4番目の月から始まる3か月ごと)にスケジュールされます。その後も同じスケジュールが維持されます。つまり、条件は1月(10月の実行から3か月後)に評価されるようにスケジュールされてはいません。
注釈
cron式は現在、指定されたタイムゾーンに対してのみ評価します。アカウントの TIMEZONE パラメーター値を変更(またはユーザーレベルまたはセッションレベルで値を設定)しても、アラートのタイムゾーンは変更 されません。
cron式は、アラートの条件を評価するためのすべての 有効な 時間を定義します。Snowflakeは、このスケジュールに基づいて条件を評価しようとします。ただし、次の有効な実行時間が始まる前に前の実行が完了していない場合、有効な実行時間はスキップされます。
cron式に特定の月の日と曜日の両方が含まれている場合、条件の評価は月の日または曜日の いずれか を満たす日にスケジュールされます。たとえば、
SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'
は、月の10日から20日、およびそれらの日付以外の火曜日または木曜日の 0AM に評価をスケジュールします。
num MINUTE
アラートの評価間に挿入される待機時間の間隔(分単位)を指定します。正の整数のみを受け入れます。
num M
構文もサポートしています。あいまいさを避けるために、アラートの再開時(ALTER ALERT RESUME を使用)には 基本間隔時間 が設定されます。
基本間隔時間は、現在のクロックタイムから間隔カウンターを開始します。たとえば、アラートが
10 MINUTE
で作成され、アラートが9:03 AM に再開される場合、アラートの条件は9:13 AM、9:23 AM というように評価されます。絶対精度を確保するために最善を尽くしますが、保証されるのは、設定間隔の 前に 条件が評価されないようにすることのみです(たとえば、現在の例では、条件は最初に9:14 AM に評価されることはあっても、9:12 AM に評価されることは決してありません)。注釈
サポートされる最大値は
11520
(8日間)です。num MINUTE
の値がこれよりも大きいアラートの条件が評価されることはありません。
condition
アラートの条件を表す SQL ステートメント。次のコマンドを使用できます。
ステートメントが1つ以上の行を返す場合にアラートのアクションが実行されます。
action
条件が1つ以上の行を返す場合に実行する SQL ステートメント。
メール通知を送信するには、 SYSTEM$SEND_EMAIL() ストアドプロシージャを呼び出し ます。
注釈
アラートのアクションで匿名のSnowflakeスクリプトブロックを使用する場合は、値を返すと、アラート履歴に誤ったステータス、クエリ ID、およびエラー情報が記録される可能性があります。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
EXECUTE ALERT |
アカウント |
|
CREATE ALERT |
スキーマ |
|
USAGE |
ウェアハウス |
アラートに使用されるウェアハウスで必要です。 |
スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
アラートは、アラート所有者に付与された権限(つまり、アラートに対する OWNERSHIP 権限を持つロール)を使用して実行されます。アラートを実行するために最低限必要な権限のリストについては、 アラートを作成する権限の付与 をご参照ください。
条件とアクションの SQL ステートメントを実行するために必要な権限がアラート所有者ロールにあることを確認するには、 CREATE ALERT で指定する前に、アラート所有者ロールを使用してこれらのステートメントを実行することをお勧めします。
アラートを作成すると、アラートはデフォルトで中断されます。
アラートをアクティブにするには、 ALTER ALERT ... RESUME を実行する必要があります。