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

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

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

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

Use an ALTER TABLE or ALTER VIEW command to associate a DMF and specify which columns are passed as arguments. For example, the following command associates the NULL_COUNT system DMF with table t. When the DMF runs, it will return the number of NULL values in the column c1.

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

一部の DMFs は、引数として列を受け入れません。例えば、ROW_COUNT システム DMF をビュー v2 と関連付けるには、次のコマンドを実行します。

ALTER VIEW v2
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT
    ON ();
Copy

ACCEPTED_VALUES</sql-reference/functions/dmf_accepted_values>`DMF には、Lambda式と列名が含まれており、予想される値と一致しない記録の数を確認できます。例えば、次のステートメントは関数をテーブル ``t1` に関連付け、関数は age 列の値が5と等しく ない 記録の数を返します。

ALTER TABLE t1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ACCEPTED_VALUES ON (age, age -> age = 5);
Copy

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

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

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

DMFsのスケジュールを調整します。

The DATA_METRIC_SCHEDULE object parameter for a table, view, or materialized view controls how often DMFs run. By default, the schedule is set to one hour. All data metric functions on a table or view follow the same schedule.

You can use the following approaches to schedule your DMF to run:

  • 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 の結果をより正確に評価できます。

DMFsを一時停止する

DMFを一時停止して、テーブルに関連付けられていても実行されないようにできます。または、単一のステートメントでテーブルに関連付けられたすべてのDMFsを一時停止できます。

  • テーブルに関連付けられている 特定のDMFを一時停止するには 、関連付けを変更してSUSPENDパラメーターを設定します。例:

    ALTER TABLE t1
      MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON ( col1 )
        SUSPEND;
    
    Copy

    DMFの実行を再開するには、別のMODIFY DATA METRIC FUNCTIONステートメントを使用して、RESUMEパラメーターを設定します。

  • テーブルに関連付けられた すべてのDMFsを一時停止するには 、テーブルのスケジュールを空文字列に設定します。例:

    ALTER TABLE t1 SET DATA_METRIC_SCHEDULE = '';
    
    Copy

    DMFsを再開するには、DATA_METRIC_SCHEDULEパラメーターを有効な値に設定します。

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

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

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

SELECT <data_metric_function>(<query>)
Copy

条件:

data_metric_function

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

query

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

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

注釈

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

例えば、カスタム DMF``count_positive_numbers`` を呼び出して引数として3つの列を受け入れるには、次のコマンドを実行します。

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

カスタム DMF が複数のテーブルからの引数を受け入れる場合は、列を投影する各クエリは括弧で囲む必要があります。例えば、REFERENTIAL_CHECKDMF を手動で呼び出す場合、次を実行します。

SELECT referential_check( (SELECT id FROM salesorders), (SELECT id FROM salespeople) );
Copy