データ測定関数を使用してデータ品質チェックを実行します。¶
このトピックでは、データ メトリック関数 (DMF) をテーブルまたはビューに関連付け、定期的にデータ品質チェックを実行する方法について説明します。また、 DMF をテーブルやビューに関連付ける前にテストしたい場合など、 DMF を直接呼び出す方法についても説明します。
DMF と関連付けて、データ品質チェックを自動化します。¶
DMF をテーブルや表示に関連付けて、定期的に自動的に呼び出すことができます。DMF を関連付ける際、どの列を引数として DMF に渡すかを指定します。
データ品質チェックを自動化するために、 DMF をテーブルやビューに関連付けるプロセスは2段階あります。
DMFs の実行頻度を決定するテーブルまたは表示に スケジュールをセット します。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 を実行するようにスケジュールします。ただし、
テーブルの再クラスタリング は、 DMF の実行をトリガーしません。
トリガーアプローチは、特定の種類のテーブルにのみ利用可能です。詳細については、 ALTER TABLE ... SET DATA_METRIC_SCHEDULE をご参照ください。
例:
データメトリック関数のスケジュールを5分ごとに実行するように設定します。
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = '5 MINUTE';
データメトリック関数のスケジュールを毎日8:00 AM に実行するように設定します。
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
平日のみ8:00 AM にデータメトリック関数のスケジュールを実行するように設定します。
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
1日3回、0600時、1200時、1800時(UTC)に実行するよう、データメトリック関数のスケジュールを設定します。
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
新しい行の挿入など、一般的な DML 操作でテーブルが変更されたときに実行されるデータメトリック関数を設定します。
ALTER TABLE hr.tables.empl_info SET DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
SHOW PARAMETERS コマンドを使用すると、サポートされているテーブルオブジェクトの DMF スケジュールを表示できます:
SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+ | 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;
注釈
テーブルの 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);
注釈
マテリアライズドビューの列に 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);
DMF を手動で呼び出します。¶
DMF を直接呼び出すと、テーブルや表示に関連付ける前に DMF の出力をテストするのに便利です。
DMFを呼び出すには、以下の構文を使用します。
SELECT <data_metric_function>(<query>)
条件:
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);
例えば、 NULL_COUNT (システムデータメトリック関数) システム DMF を呼び出して、 ssn
列の NULL 値の数を表示するには、以下を実行します:
SELECT SNOWFLAKE.CORE.NULL_COUNT(
SELECT ssn
FROM hr.tables.empl_info);