CREATE ALERT

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

このコマンドは、次のバリアントもサポートしています。

  • CREATE ALERT ... CLONE (既存アラートのクローンを作成)

Tip

SQL 以外にも、 Snowflake REST APIs、 Snowflake Python APIs、 Snowflake CLI などのインターフェイスを使うことができます。代替インターフェイス をご参照ください。

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

ALTER ALERT , DESCRIBE ALERT, DROP ALERT , SHOW ALERTS , EXECUTE ALERT

重要

新しく作成またはクローンされたアラートは、作成時に中断されます。中断されたアラートの再開については、 アラートの中断と再開 をご参照ください。

構文

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

バリアント構文

CREATE ALERT ... CLONE

同じパラメーター値で新しいアラートを作成します。

CREATE [ OR REPLACE ] ALERT <name> CLONE <source_alert>
  [ ... ]
Copy

詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。

注釈

CREATE ALERT <名前> CLONE を使用してアラートをクローンするか、アラートを含むスキーマまたはデータベースをクローンすると、新しいアラートは、明示的に上書きしたプロパティを除き、元のアラートのプロパティすべてを持ちます。

必須パラメーター

name

アラートの識別子(つまり、名前)を指定する文字列。アラートが作成されるスキーマに対して一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

タグ の名前とタグ文字列の値を指定します。

タグ値は常に文字列であり、タグ値の最大文字数は256です。

ステートメントでのタグの指定に関する情報については、 オブジェクトのタグクォータ をご参照ください。

IF( EXISTS( condition ))

アラートの条件を表す SQL ステートメント。次のコマンドを使用できます。

ステートメントが1つ以上の行を返す場合にアラートのアクションが実行されます。

THEN action

条件が1つ以上の行を返す場合に実行する SQL ステートメント。

通知を送信するには、 SYSTEM$SEND_EMAIL または SYSTEM$SEND_SNOWFLAKE_NOTIFICATION ストアドプロシージャを呼び出します

オプションのパラメーター

WAREHOUSE = warehouse_name

このアラートを実行するためのコンピューティングリソースを提供する仮想ウェアハウスを指定します。

注釈

サーバーレスアラート に対してはこのプロパティを設定しないでください。

SCHEDULE ...

アラートの条件を定期的に評価するスケジュールを指定します。

アラートを作成する際、このパラメーターを省略するか、 NULL に設定すると、 新しいデータに対するアラート が作成されます。

スケジュールに対するアラートでは、以下のいずれかの方法でスケジュールを指定できます。

  • 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 の値がこれよりも大きいアラートの条件が評価されることはありません。

COMMENT = 'string_literal'

アラートのコメントを指定します。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

注意

EXECUTE MANAGED ALERT

アカウント

サーバーレスアラート でのみ必要です。

EXECUTE ALERT

アカウント

CREATE ALERT

スキーマ

USAGE

ウェアハウス

使用するウェアハウスを指定するアラート にのみ必要です。

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • アラートは、アラート所有者に付与された権限(つまり、アラートに対する OWNERSHIP 権限を持つロール)を使用して実行されます。アラートを実行するために最低限必要な権限のリストについては、 アラートを作成する権限の付与 をご参照ください。

    条件とアクションの SQL ステートメントを実行するために必要な権限がアラート所有者ロールにあることを確認するには、 CREATE ALERT で指定する前に、アラート所有者ロールを使用してこれらのステートメントを実行することをお勧めします。

  • アラートを作成すると、アラートはデフォルトで中断されます。

    アラートをアクティブにするには、 ALTER ALERT ... RESUME を実行する必要があります。

  • CREATE ALERT または ALTER ALERT を実行すると、条件とアクションのステートメントに対して、以下のようないくつかの検証チェックが実行されません。

    • オブジェクトの識別子の解決。

    • 式のデータ型の解決。

    • 関数呼び出しの引数の数と型の検証。

    CREATE ALERT コマンドと ALTER ALERT コマンドは、条件またはアクションの SQL ステートメントで無効な識別子、不正なデータ型、関数引数の不正な数と型などが指定されていても失敗しません。その代わり、アラートが実行されると失敗します。

    既存アラートの失敗を確認するには、 ALERT_HISTORY テーブル関数を使用します。

    このような失敗を避けるために、アラートの条件とアクションを指定する前に、それらの条件とアクションの SQL 式とステートメントを検証します。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

  • OR REPLACEIF NOT EXISTS 句は互いに排他的です。両方を同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

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

代替インターフェイス