データ品質問題の通知送信

Snowflakeは、データメトリック関数(DMF)によって返される値がデータ品質に問題があることを示す場合を識別する次の機能を提供します。

  • 期待 --- ブール式を使用してDMFの出力を予想値と比較できます。ブール式と一致しない戻り値は、期待値違反と見なされます。

  • 異常検出 --- Snowflakeは、DMFの出力が異常を構成した場合、それを自動的に検出します。DMFによって返された値が、過去のデータに基づき、予想範囲を上回るまたは下回る場合に異常が発生します。

通知統合を使用して、これらの機能のいずれかがデータ品質の問題を特定した場合に通知を送信できます。Snowflakeが構成された後、期待違反があるか、Snowflakeが異常を識別するたびに、通知が送信されます。

データベースレベルで通知を有効にします。有効にすると、そのデータベースの中の関連付けられたDMFを持つすべてのオブジェクトが品質に問題がある場合に通知を生成します。通知が有効になっているデータベース内では、データベースとDMFのオブジェクト間の特定の関連付けについて、通知をオフにすることができます。

ワークフロー

データ品質問題に関する通知を送信するためのSnowflakeの構成は、次のタスクで構成されます。

  1. 通知統合を作成します

  2. データベース所有者に アクセス制御権限を付与します

  3. 通知をオンにし、それらを送信する通知統合を指定するために データベースを変更します

このワークフローのエンドツーエンドの例については、 拡張例 を参照してください。

通知統合を作成する

通知統合は、Snowflakeとサードパーティのメッセージングサービス間のインターフェースを提供するSnowflakeオブジェクトです。データ品質問題に関する通知を送信するには、メッセージングサービスの通知統合を作成します。データ品質モニタリングは、以下のタイプの通知をサポートします。

  • メール通知

  • ウェブフックを使用して、Slackなどの外部システム経由で送信される通知。

メールで通知を送信する

メールアドレスのリストに通知を送信するには、 CREATE NOTIFICATION INTEGRATION ステートメントを実行して型 EMAIL の統合を作成します。統合では、ALLOWED_RECIPIENTSパラメーターを使用して、通知が送信されるメールアドレスのリストを指定する必要があります。確認済みメールアドレスのみを追加できます。メールアドレスの確認については、 メール通知受信者のメールアドレスを認証します。 をご参照ください。

Tip

Snowflakeの外部で管理されている配信リストやグループにメール通知を送信することができます。詳細については、関連する ナレッジベース記事 をご参照ください。

例えば、データ品質に問題があった場合にユーザー joe.smith@example.com にメールを送信できるようにするために通知統合を作成するには、次のコマンドを実行してください。

CREATE NOTIFICATION INTEGRATION my_email_int
  TYPE=EMAIL
  ENABLED=TRUE
  ALLOWED_RECIPIENTS = ('joe.smith@example.com');
Copy

注釈

メール通知は、SnowflakeのAmazon Web Services(AWS)デプロイメントで、 AWS Simple Email Service(SES)を使用して処理されます。AWS を使用して送信されたメールメッセージのコンテンツは、メッセージの配信を管理するために最大30日間Snowflakeによって保持される場合があります。この期間を過ぎると、メッセージのコンテンツは削除されます。

外部システムのWebhookを使用した通知の送信

Webhook統合を作成することで、外部システムを介してデータ品質通知を送信することができます。使用できる外部システムのリストについては、 Webhook通知の送信 をご参照ください。

Webhookを使用してデータ品質通知を送信するには、以下のステップを完了します。

  1. Webhook URLのシークレットを作成します

  2. Webhook通知統合を作成します

例えば、Slackを使用して通知を送信したい場合は、以下のコマンドを実行できます。

CREATE OR REPLACE SECRET my_slack_webhook_secret
  TYPE = GENERIC_STRING
  SECRET_STRING = 'T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX';

CREATE OR REPLACE NOTIFICATION INTEGRATION my_slack_webhook_int
  TYPE=WEBHOOK
  ENABLED=TRUE
  WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
  WEBHOOK_SECRET=my_db.sch1.my_slack_webhook_secret
  WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
  WEBHOOK_HEADERS=('Content-Type'='application/json');
Copy

権限を付与する

データベース内のオブジェクトの通知を設定するには、データベース所有者に次の権限が必要です。

  • アカウントに対する MANAGE DATA QUALITY

  • 通知統合に対するUSAGE

例えば、 data_steward ロールを持つユーザーがデータベース my_db の所有者だとします。通知統合 my_email_int を使用して、 my_db のテーブルとビューに関連付けられたDMFsによって発見された品質問題について通知を送信するには、次のコマンドを実行します。

GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE data_steward;
GRANT USAGE ON INTEGRATION my_email_int TO ROLE data_steward;
Copy

データ品質通知用のデータベース設定の構成

通知統合を作成し、必要な権限を付与したら、DATA_QUALITY_MONITORING_SETTINGSプロパティを持つ ALTER DATABASE ステートメントを実行することでデータベースの通知をオンにすることができます。このプロパティは ドル引用符付き YAML仕様を使用して通知設定を定義します。

このプロパティを設定すると、データ品質通知の3つの側面が制御されます。

  • データベースに対して通知が有効になっているか無効になっているか。

  • どの 通知統合 が通知を送信するか。複数の通知統合を指定して、異なるチャネルから通知を送信することができます。

  • 通知に、データ品質に問題がある特定のテーブルやビューの名前が含まれるかどうか。このメタデータは、問題をすばやく特定して対処するのに役立ちます。

例:

ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS =
  $$
  notification:
    enabled: TRUE
    integrations:
      - EMAIL_NOTIFY_INT
      - WEBHOOK_NOTIFY_INT
    metadata_included: TRUE
  $$
Copy
  • データベース my_db に対して通知が有効になっています。

  • 通知は、2つの通知統合 email_notify_int および webhook_notify_int を通じて送信されます。これは、データ品質の問題が両方のチャネルで通知をトリガーすることを意味します。

  • 通知には、オブジェクトとその関連するDMFを識別するメタデータが含まれます。

特定のDMF関連付けの通知をオフにする

デフォルトでは、データベースの通知をオンにすると、データベース内のオブジェクトのデータ品質に問題がある場合に通知が生成されます。オブジェクトとDMFの間の特定の関連付けの通知をオフにして、通知の送信を防ぐことができます。関連付けの通知をオフにするには、ALTER <object> MODIFY DATA METRIC FUNCTIONステートメントを実行して、DATA_QUALITY_NOTIFICATIONパラメーターをFALSEに設定します。

たとえば、ビュー v2 を含むデータベースに対して通知がオンになっているとします。BLANK_COUNT DMFが列 c1 の品質問題を検出した場合に通知の送信を希望しない場合は、次のコマンドを実行します。

ALTER VIEW v2
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.BLANK_COUNT ON (c1)
    SET DATA_QUALITY_NOTIFICATION = FALSE;
Copy

通知がオンになっているかどうかを確認する

DATA_METRIC_FUNCTION_REFERENCES 関数は、オブジェクトとDMFの関連付けに関する情報を返します。出力には列 data_quality_notification_status が含まれ、これを使用して、関連付けで通知がオンになっているかどうかを判断できます。

拡張例

アカウントに以下のようなアイテムがあるとします。

  • 2つのテーブル( t1 および t2 )および1つのビュー( v1 )を含むデータベース my_db

  • 両方の関連付けに対して異常検出がオンのROW_COUNT DMFに関連付けられているテーブル t1 および t2

  • ロール analystmy_db の所有者です。

  • ビュー v1 はNULL_COUNT DMFに関連付けられており、関連付けに定義された期待があります。

テーブル t1 または t2 に異常があった場合にユーザーがメールを受信できるようにしたいですが、ビュー v1 に品質問題がある場合に通知を送信することは希望しません。

  1. データ品質に問題がある場合に誰が通知を受け取る必要があるかを示す 通知統合を作成します

    CREATE NOTIFICATION INTEGRATION notify_int
      TYPE=EMAIL
      ENABLED=TRUE
      ALLOWED_RECIPIENTS=('joe.smith@example.com');
    
    Copy
  2. my_db の所有者であるロール analyst への新しい通知統合に対して 権限を付与します

    GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst;
    GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
    
    Copy
  3. データベースの設定を構成して 通知をオンにします。これらの通知には、データ品質に問題があったオブジェクトの名前が含まれます。

    ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS =
      $$
      notification:
        enabled: TRUE
        integrations:
          - NOTIFY_INT
        metadata_included: TRUE
      $$
    
    Copy
  4. ビュー v1 およびNULL_COUNT DMF間の関連付けの 通知をオフにします

    ALTER VIEW v1
      MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1)
        SET DATA_QUALITY_NOTIFICATION = FALSE;
    
    Copy