データ測定関数を使用してデータ品質チェックを実行します。

このトピックでは、データ メトリック関数 (DMF) をテーブルまたはビューに関連付け、定期的にデータ品質チェックを実行する方法について説明します。また、 DMF をテーブルやビューに関連付ける前にテストしたい場合など、 DMF を直接呼び出す方法についても説明します。

DMF と関連付けて、データ品質チェックを自動化します。

DMF をテーブルや表示に関連付けて、定期的に自動的に呼び出すことができます。DMF を関連付ける際、どの列を引数として DMF に渡すかを指定します。

データ品質チェックを自動化するために、 DMF をテーブルやビューに関連付けるプロセスは2段階あります。

  1. DMFs の実行頻度を決定するテーブルまたは表示に スケジュールをセット します。DMF をテーブルまたは表示に関連付ける前に、スケジュールをセットする必要があります。

  2. テーブルまたは表示に DMF を関連付けます

DMF 実行スケジュール

テーブルのデータ品質測定を自動化するために、 DMFs をスケジュールして実行することができます。

Snowflakeは、テーブルのOWNERSHIP権限を持つロールであるテーブル所有者ロールを使用して、スケジュールされたDMFを呼び出します。テーブル所有者ロールにはこれらの付与が必要です。

  • ユーザー定義のDMFに対するUSAGE権限、およびユーザー定義のDMFを格納するデータベースとスキーマのUSAGE権限。

  • DMFがシステムDMFの場合、DATA_METRIC_USERデータベースロール。

  • アカウントのEXECUTE DATAMETRICFUNCTION権限。

テーブル、ビュー、またはマテリアライズドビューの DATA_METRIC_SCHEDULE オブジェクトパラメータを使用すると、 DMFs を実行できるタイミングをスケジュールできます。テーブルまたはビュー上のすべてのデータメトリック関数は、同じスケジュールに従います。

DMFを実行するスケジュールには3つのアプローチがあります。

  • DMFを指定した分数後に実行するように設定します。

  • cron式を使用して、DMFを特定の頻度で実行するようにスケジュールします。

  • トリガーイベントを使用して、テーブルに新しい行が挿入されるなど、 DML 変更 があった場合に、DMF を実行するようにスケジュールします。ただし、

例:

データメトリック関数のスケジュールを5分ごとに実行するように設定します。

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

データメトリック関数のスケジュールを毎日8:00 AM に実行するように設定します。

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
Copy

平日のみ8:00 AM にデータメトリック関数のスケジュールを実行するように設定します。

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
Copy

1日3回、0600時、1200時、1800時(UTC)に実行するよう、データメトリック関数のスケジュールを設定します。

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
Copy

新しい行の挿入など、一般的な DML 操作でテーブルが変更されたときに実行されるデータメトリック関数を設定します。

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Copy

SHOW PARAMETERS コマンドを使用すると、サポートされているテーブルオブジェクトの DMF スケジュールを表示できます:

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;
Copy
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| key                  | value                          | default | level | description                                                                                                                  | type   |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC |         | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+

表示およびマテリアライズドビューオブジェクトの場合、 TABLE をオブジェクトドメインとして指定し、以下のようにスケジュールを確認します。

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
Copy

注釈

テーブルの DMF を変更してから、テーブルに割り当てられている以前の DMFs にスケジューリングの変更が反映されるまで、10分のタイムラグがあります。ただし、 DMF が新たにテーブルに割り当てられた場合は、10分間の遅延は適用されません。DMF スケジューリングと DMF 設定解除操作を慎重に計画し、予想される DMF コスト に合わせてください。

さらに、 DATA_QUALITY_MONITORING_RESULTS ビューにクエリするなどして、 DMF の結果を評価する場合は、クエリで measurement_time 列を評価の基礎として指定します。DMF の評価を開始する内部プロセスがあり、 INSERT 操作などのテーブル更新が、スケジュールされた時刻と測定時刻の間に発生する可能性があります。 measurement_time 列を使用すると、測定時間が DMF の評価時間を示すため、 DMF の結果をより正確に評価できます。

DMF をテーブルに関連付けます。

ALTER TABLE または ALTER VIEW コマンドを使用して、 DMF を関連付け、引数として渡される列を指定します。例えば、次のコマンドはシステム DMF NULL_COUNT とテーブル t を関連付けます。DMF が実行されると、 c1 列の NULL 値の数が返されます。

ALTER TABLE t
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT
    ON (c1);
Copy

注釈

マテリアライズドビューの列に DMF を追加したり、マテリアライズドビューの列から DMF を削除するには、 ALTER VIEW コマンドを使用します。

オブジェクトから DMF をドロップします。

ALTER TABLE または ALTER VIEW コマンドを使用して DMF をドロップできます。例:

ALTER TABLE t
  DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
    ON (c1, c2, c3);
Copy

DMF を手動で呼び出します。

DMF を直接呼び出すと、テーブルや表示に関連付ける前に DMF の出力をテストするのに便利です。

DMFを呼び出すには、以下の構文を使用します。

SELECT <data_metric_function>(<query>)
Copy

条件:

data_metric_function

システムまたはユーザー定義のDMFを指定します。

query

テーブルまたはビューのSQLクエリを指定します。

クエリによって投影される列は、 DMF シグネチャの列引数と一致しなければなりません。

注釈

以下のシステム DMFs は引数を取らないため、この構文には従いません:

例えば、3つの列を引数として受け取るカスタム DMF count_positive_numbers を呼び出すには、以下のように実行します:

SELECT governance.dmfs.count_positive_numbers(
  SELECT c1, c2, c3
  FROM t);
Copy

例えば、 NULL_COUNT (システムデータメトリック関数) システム DMF を呼び出して、 ssn 列の NULL 値の数を表示するには、以下を実行します:

SELECT SNOWFLAKE.CORE.NULL_COUNT(
  SELECT ssn
  FROM hr.tables.empl_info);
Copy