Microsoft Azure Event GridのSnowpipeエラー通知の有効化

このトピックでは、Snowpipeのエラー通知を Microsoft Azure Event Grid (Event Grid)にプッシュする手順について説明します。

この機能は、次に挙げる型のロードのエラー通知をプッシュできます。

  • 自動インジェストSnowpipe。

  • Snowpipe insertFiles REST API エンドポイントへの呼び出し。

  • Kafka用Snowflakeコネクタを使用したApache KafkaとSnowpipeインジェスチョンメソッド併用のロード限定。

クラウドプラットフォームのサポート

現在この機能は、Microsoft AzureでホストされているSnowflakeアカウントに限定されています。Snowpipeは、サポートされているクラウドストレージサービスのファイルからデータを読み込むことができます。Event Gridへのプッシュ通知は、AzureでホストされているSnowflakeアカウントでのみサポートされます

メモ

  • Snowflakeは、エラー通知のメッセージ配信が最低1回あることを保証します(つまり、最低1回の試行が成功することを保証するためにメッセージ配信が複数回試行されることにより、メッセージが重複する可能性があります)。

  • この機能は、通知統合オブジェクトを使用して実装されます。通知統合は、Snowflakeとサードパーティのクラウドメッセージキューサービス間のインターフェイスを提供するSnowflakeオブジェクトです。単一の通知統合で複数のパイプをサポートできます。

エラー通知の有効化

通知統合の作成

Microsoft Azure Event Gridトピックに通知を送信する通知統合の作成 をご参照ください。

パイプでエラー通知を有効にする

単一の通知統合は、複数のパイプで共有できます。エラーメッセージの本文は、パイプ、外部ステージとパス、およびエラーが発生したファイルなどの詳細を識別します。

パイプのエラー通知を有効にするには、 ERROR_INTEGRATION パラメーター値を指定します。

注釈

通知統合を参照するパイプを作成または変更するには、通知統合に対する USAGE 権限を持つロールが必要です。さらに、ロールには、スキーマに対する CREATE PIPE 権限、またはパイプに対する OWNERSHIP 権限のいずれかが必要です。

Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.

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

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

新しいパイプ

CREATE PIPE を使用して新しいパイプを作成します。

CREATE PIPE <name>
  AUTO_INGEST = TRUE
  [ INTEGRATION = '<string>' ]
  ERROR_INTEGRATION = <integration_name>
  AS <copy_statement>
Copy

条件:

ERROR_INTEGRATION = <統合名>

Snowflakeでの通知統合の作成 で作成した通知統合の名前。

例:

CREATE PIPE mypipe
  AUTO_INGEST = TRUE
  INTEGRATION = 'my_storage_int'
  ERROR_INTEGRATION = my_notification_int
  AS
  COPY INTO mydb.public.mytable
  FROM @mydb.public.mystage;
Copy

既存のパイプ

ALTER PIPE を使用して既存のパイプを変更します。

ALTER PIPE <name> SET ERROR_INTEGRATION = <integration_name>;
Copy

<integration_name> は、 Snowflakeでの通知統合の作成 で作成した通知統合の名前です。

例:

ALTER PIPE mypipe SET ERROR_INTEGRATION = my_notification_int;
Copy

エラー通知のメッセージペイロード

エラーメッセージの本文は、パイプとロード中に発生したエラーを識別します。

以下は、Snowpipeエラーを説明するサンプルのメッセージペイロードです。ペイロードには、1つ以上のエラーメッセージを含めることができます。

{\"version\":\"1.0\",\"messageId\":\"a62e34bc-6141-4e95-92d8-f04fe43b43f5\",\"messageType\":\"INGEST_FAILED_FILE\",\"timestamp\":\"2021-10-22T19:15:29.471Z\",\"accountName\":\"MYACCOUNT\",\"pipeName\":\"MYDB.MYSCHEMA.MYPIPE\",\"tableName\":\"MYDB.MYSCHEMA.MYTABLE\",\"stageLocation\":\"azure://myaccount.blob.core.windows.net/mycontainer/mypath\",\"messages\":[{\"fileName\":\"/file1.csv_0_0_0.csv.gz\",\"firstError\":\"Numeric value 'abc' is not recognized\"}]}
Copy

ペイロードの値を処理するには、文字列を JSON オブジェクトに解析する必要があることに注意してください。