CREATE ALERT

現在のスキーマに新しい アラート を作成します。

こちらもご参照ください。

ALTER ALERTDESCRIBE ALERTDROP ALERTSHOW ALERTS

構文

CREATE [ OR REPLACE ] ALERT [ IF NOT EXISTS ] <name>
  WAREHOUSE = <warehouse_name>
  SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }'
  IF( EXISTS(
    <condition>
  ))
  THEN
    <action>
Copy

必須パラメーター

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)
    # | | | | |
    # | | | | |
      * * * * *
    
    Copy

    次の特殊文字がサポートされています。

    特殊文字

    説明

    *

    ワイルドカード。フィールドのオカレンスを指定します。

    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 を実行する必要があります。

アラートの作成 をご参照ください。