SnowflakeでData Metric Functionsによりデータ品質問題を検知したらメール通知できる機能を試してみた
さがらです。
先日のアップデートにより、SnowsightからCortex AIの機能を用いてData Metric Functionsを簡単に定義できる機能がプレビューでリリースされました。下記は実際に私が試した際のブログです。
この機能を試した際に「問題を検知した時に通知ができると嬉しいな」と強く感じたのですが、@jimatomo93さんから、プレビュー機能でデータ品質チェックで問題を検知した場合に通知する機能がリリースされていることを伺いました。
「これはとてもありがたい機能だ!」と感じたので、実際に試してみました。その内容について本記事でまとめてみます。
事前準備
宛先のメールアドレスをユーザーとして登録
Snowflakeではメールを送信する際に宛先のメールアドレスをユーザーとして登録しておく必要があります。
こちらの手順については、以下のブログの「Snowflakeでユーザーを作成」章をご確認ください。
※もし、メールアドレスの確認処理がうまく送信されない場合は、SYSTEM$START_USER_EMAIL_VERIFICATION関数を使うことでも、メールアドレスの確認処理を行なうことが可能です。
Data Metric Functionsをテーブルに設定
続いて、Data Metric Functionsをテーブルに設定します。
こちらは現在Snowsightから簡単に設定できます。以下のブログが参考になると思います。
Notification Integrationを設定
まず、対象のメールアドレスに対するNotification Integrationを設定します。
以下は公式Docのサンプルクエリですが、このようなクエリでNotification Integrationを設定します。ALLOWED_RECIPIENTSで通知先となるメールアドレスを設定するのがポイントです。
USE ROLE ACCOUNTADMIN;
CREATE NOTIFICATION INTEGRATION my_email_int
TYPE=EMAIL
ENABLED=TRUE
ALLOWED_RECIPIENTS = ('joe.smith@example.com');
データベース所有者のロールに対して権限を付与
次に、Data Metric Functionsを設定しているテーブルが属するデータベースの所有者に対して必要な権限を付与します。
今回はSYSADMINがデータベースの所有者であったため、以下のクエリを実行しました。
USE ROLE ACCOUNTADMIN;
GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE SYSADMIN;
GRANT USAGE ON INTEGRATION my_email_int TO ROLE SYSADMIN;
データ品質問題の検知時に通知するようにデータベースを設定変更
以下のようなクエリを実行して、データ品質問題の検知時に通知するようにデータベースを設定変更します。
USE ROLE SYSADMIN;
ALTER DATABASE data_quality_demo SET DATA_QUALITY_MONITORING_SETTINGS =
$$
notification:
enabled: TRUE
integrations:
- MY_EMAIL_INT
metadata_included: TRUE
$$
設定値の確認
以下のようにDATA_METRIC_FUNCTION_REFERENCES関数を使うことで、通知設定がされているかを確認可能です。
USE DATABASE data_quality_demo;
USE SCHEMA INFORMATION_SCHEMA;
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
REF_ENTITY_NAME => 'data_quality_demo.public.orders',
REF_ENTITY_DOMAIN => 'table'
)
);
下図のようにdata_quality_notification_status列がENABLEDになっていれば問題ないです。

動作確認
対象のテーブルに対するデータ品質チェックを5分ごとに設定した上で、動作確認します。
このテーブルでは、必ずデータ品質チェックが失敗するようなデータを登録しております。

約5分後、下図のようにメールが届きました!

最後に
SnowflakeでData Metric Functionsによりデータ品質問題を検知したらメール通知できる機能を試してみました。
Data Metric Functionsを使う場合は、ぜひ併せてご活用ください!







