Data Quality を使用して、データテーブルの品質モニタリングルールを設定できます。これらのルールを使用して、テーブルデータが要件を満たしているかどうかをモニターし、問題のあるタスクを自動的にブロックし、ダーティデータのダウンストリームへの伝播を防ぐことで、出力データが期待どおりであることを確実にできます。このトピックでは、特定のテーブルの品質モニタリングルールを設定、実行、および管理する方法について説明します。
前提条件
エンジンのデータテーブルに品質ルールを設定する前に、まずそのメタデータを取得しておく必要があります。詳細については、「メタデータ取得」をご参照ください。
制限
-
データソースの制限: 品質モニタリングルールは、MaxCompute、E-MapReduce、Hologres、CDH Hive、AnalyticDB for PostgreSQL、AnalyticDB for MySQL、StarRocks、MySQL、SQL Server、DLF、および Lindorm のデータソースにのみ対応しています。
-
ネットワークの制限: ルールを設定した後、テーブルデータを生成するスケジューリングノードは、ネットワーク接続がアクティブなリソースグループを使用して、Data Quality のルールチェックをトリガーする必要があります。
-
ルールの有効性に関する制限: 動的しきい値を使用するルールが正しく機能するには、少なくとも 21 日分のサンプルデータが必要です。21 日未満のデータしかない場合、ルールチェックが失敗するか、不正確な結果となる可能性があります。この場合、ルールを設定してスケジューリングタスクに関連付けた後、バックフィル機能を使用して必要なサンプルデータを生成できます。
品質モニタリングのコアコンポーネント
テーブルに品質ルールを設定すると、完全な品質モニタリングプランが作成されます。このプランは、次の 4 つの主要なコンポーネントで構成されます。
-
監視範囲:データ品質チェックの対象アセットを指定します。設定には以下が含まれます。
-
[監視対象]:データ品質チェックのために選択された物理テーブル。パーティションテーブルと非パーティションテーブルの両方を監視できます。
-
データ範囲:パーティションテーブルの場合、パーティションフィルター式で、各チェック時にスキャンするパーティションを動的に定義します。例えば、
$[yyyymmdd-1]を使用して、業務日の前日のパーティションデータをチェックします。
-
-
[品質ルール]:データが期待どおりであるかどうかを判断するための、特定の検証ロジックと測定基準を定義します。
-
ルール定義:監視対象に 1 つ以上の品質ルールを追加できます。各ルールは、ルールテンプレートからインスタンス化されます。テンプレートには、次のタイプがあります。
-
システムテンプレート:DataWorks の組み込みテンプレートで、完全性、一意性、有効性などの複数のディメンションに対応します。例として、「テーブル行数の変動」や「フィールド一意値数」などがあります。
-
カスタムテンプレート:SQL を記述して、再利用可能でパーソナライズされた検証ロジックを作成するユーザー定義のテンプレートです。
-
-
ルールプロパティ:各ルールには、しきい値 (例:変動率が 30% を超えない) や重要度 (強ルールまたは弱ルール) などの主要なプロパティを設定する必要があります。強ルールのチェックが失敗した場合、関連するスケジューリングタスクをブロックできます。
-
-
[トリガー方式]:品質モニタリングタスクをいつ実行するかを定義します。
-
スケジュールトリガー:品質モニタリングを上流の DataWorks スケジューリングノード (通常は監視対象テーブルを生成するノード) に関連付けます。スケジューリングノードが正常に実行されると、関連する品質ルールが自動的にトリガーされます。これは、自動化されたデータ品質保証のベストプラクティスです。
-
[手動トリガー]:検証プロセスはスケジューリングタスクに関連付けられず、UI から手動で開始する必要があります。この方法は、一時的な一回限りのデータ探索と検証に適しています。
-
-
アラートポリシー:データ品質の問題が検出された場合の通知方法を設定します。
-
アラートサブスクリプション:「失敗」や「警告」など、特定のルールチェック結果に対してアラートを設定できます。システムは、メール、SMS、電話、DingTalk、Lark、WeCom チャットボット、カスタム Webhook など、さまざまなチャネルを通じて通知を送信できます。
-
これら 4 つのコンポーネントを設定して保存すると、完全な品質モニタリングプランが作成されます。本番環境にデプロイする前に、テスト実行機能を使用して設定を検証することを推奨します。
手順
ステップ 1: テーブルの品質詳細ページへの移動
データ品質ページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ品質に移動] をクリックします。
-
テーブルのルール設定ページに移動します。
左側のナビゲーションペインで、 をクリックして、ルール設定ページに移動します。
-
左側の データソース リストから、ルールを設定するテーブルが含まれているデータベースを選択します。
-
データベースタイプ、データベース、テーブル名などの条件でテーブルをフィルタリングします。対象のテーブル名をクリックするか、操作 列の ルール管理 をクリックして、テーブルの品質詳細ページを開きます。
このページには、テーブルのすべての品質モニターとルールが表示されます。品質モニターに関連付けられているかどうかでルールをフィルタリングし、関連付けられていないルールの実行モードを定義できます。
-
ステップ2: 品質モニターの作成
-
品質モニターを作成します。
品質モニターは、次のいずれかの方法で作成できます。
-
方法 1: テーブル品質の詳細 ページの ルール管理 タブで、品質モニタリングビュー の横にある
アイコンをクリックして、品質モニターを作成します。 -
方法 2: テーブル品質の詳細 ページで品質モニタリングタブに切り替え、品質モニタリングの作成 をクリックします。
-
-
品質モニターのパラメータを設定します。
パラメータ
パラメータ
説明
[基本設定]
[品質モニタリング名]
品質モニターのカスタム名を入力します。
[品質モニタリングのオーナー]
品質モニタの所有者を指定します。アラートサブスクリプションでは、この所有者を メール通知、メールおよび SMS 通知、または 電話番号 通知の受信者として設定できます。
[監視対象]
データ品質をチェックする対象オブジェクト。デフォルトでは、現在のテーブルです。
[タイムスタンプ範囲]
パーティションフィルター式を使用して、チェック対象のテーブルパーティションを定義します。
-
非パーティションテーブル:このパラメーターを設定する必要はありません。デフォルトでは、全テーブル がチェックされています。
-
パーティションテーブル:式は
partition_name=partition_value形式である必要があります。パーティション値は、固定値または 付録2:組み込みパーティションフィルター式 の値を使用できます。
説明カスタムテンプレートまたはカスタム SQL を使用してルールを設定する場合、カスタム SQL 自体がどのパーティションをチェックするかを決定するため、この設定は無視されます。
[品質ルールの選択]
[品質ルールの選択]
指定したデータ範囲に適用するデータ品質ルールを選択します。
説明-
異なるパーティションに対して複数の品質モニターを作成し、それぞれに異なるデータ品質ルールを関連付けることができます。
-
データ品質ルールをまだ作成していない場合は、この手順をスキップできます。品質モニターを先に作成してから、後でルールを追加できます。データ品質ルールの作成方法の詳細については、ステップ3:データ品質ルールの設定をご参照ください。
[実行設定]
[トリガー方式]
品質モニターをトリガーする方法。
-
本番スケジューリング トリガー:品質モニターを DataWorks オペレーションセンターの指定された定期スケジューリングタスクに関連付けます。タスクが正常に実行されると、この品質モニター内のデータ品質ルールが自動的にトリガーされます。ドライランタスクは、データ品質ルールチェックをトリガーしません。
-
手動トリガー:現在の品質モニターに関連付けられたデータ品質ルールを手動でトリガーします。
重要監視するテーブルが MaxCompute テーブルではなく、トリガー方式 を 本番スケジューリング トリガー に設定した場合、選択された定期的にスケジュールされたタスクはパブリックスケジューリングリソースグループを使用できません。そうしないと、品質モニタの実行時にエラーが発生します。
[スケジューリングノードの関連付け]
トリガー方式 を 本番スケジューリング トリガー に設定した場合、このパラメーターで関連するスケジューリングノードを指定できます。 指定されたスケジューリングノードが正常に実行されると、データ品質ルールが自動的にトリガーされます。
[実行リソースの選択]
データ品質ルールチェックの実行に使用するコンピューティングリソース。デフォルトでは、ワークスペース内の監視対象テーブルのデータソースが選択されます。別のデータソースを選択する場合は、そのリソースがテーブルにアクセスできることを確認してください。
[品質問題処理ポリシー]
[問題対応ポリシー]
データ品質問題が検出された際に適用するポリシー。
-
アラート:データ品質問題が検出されると、品質モニターのサブスクライバーにアラート通知が送信されます。
デフォルトの条件は、
強制ルール - 重大な異常、強制ルール - 警告の異常、強制ルール - チェックの失敗、弱ルール - 重大な異常、弱ルール - 警告の異常、弱ルール - チェックの失敗です。 -
ブロック:データ品質問題が検出されると、システムはトリガー元の本番スケジューリングノードを失敗させ、その下流ノードをブロックします。このアクションにより、本番パイプラインがブロックされ、問題のあるデータの拡散を防ぎます。
デフォルトの条件は
強制ルール - 重大な異常です。重要ポリシーをブロックに設定した場合、データ品質の問題が検出されるとアラートもトリガーされます。
[アラート方法の設定]
アラート通知は、メール通知、メールおよび SMS 通知、DingTalk グループボット、DingTalk グループボット @ALL、Lark グループボット、WeCom ボット、カスタム Webhook、または 電話番号 で送信できます。
説明-
DingTalk、Lark、または企業WeChat チャットボットを使用するには、チャットボットを追加して Webhook URL を取得し、その URL をアラートサブスクリプション設定に貼り付けます。
-
カスタム Webhook メソッドは、DataWorks エンタープライズ版でのみサポートされています。カスタム Webhook 経由で DataWorks が送信するアラート通知のメッセージ形式については、「付録: Webhook メッセージ形式」をご参照ください。
-
通知方法としてメール通知、メールおよび SMS 通知、または電話番号を選択した場合、権限付与オブジェクトをData Quality モニタリングのオーナー、オンコールスケジュール、またはスケジュールタスクの所有者に設定できます。
-
[Data Quality モニタリングのオーナー]: 現在の品質モニターの 基本設定 セクションで指定された 品質モニタリングのオーナー にアラート通知を送信します。
-
オンコールスケジュール:関連付けられたスケジューリングノードが品質アラートをトリガーすると、システムは シフトスケジュールにおける当日の当番ユーザー に通知を送信します。
-
[スケジュールタスクの所有者]:アラート通知は、品質モニタに関連付けられているスケジューリングノードのオーナーに送信されます。
-
-
-
保存 をクリックして、品質モニターを作成します。
ステップ 3:品質ルールの設定
品質ルールは、組み込みのテーブルレベルおよびフィールドレベルのルールテンプレートに基づいて設定できます。組み込みのルールテンプレートの詳細については、「組み込みルールテンプレートの表示」をご参照ください。
-
テーブル品質の詳細 ページで ルール管理 タブをクリックし、作成した品質モニターを選択してから、ルールの作成 をクリックしてルール設定ページに移動します。
-
品質ルールを作成します。
データ品質では、ルールを設定するために次の方法があります。ビジネス要件に最も適した方法を選択してください。
方法 1:システムテンプレート
データ品質は、数十の組み込み ルールテンプレート を提供します。左側のペインで、テンプレートの横にある [+ Use] をクリックすると、品質ルールをすばやく作成できます。一度に複数のルールを追加できます。
上部にある [+ System Template Rule] をクリックし、ルールテンプレート パラメーターを変更してルールテンプレートを変更することもできます。
方法 2:カスタムテンプレート
説明カスタムテンプレートを使用してルールを作成する前に、 に移動して、カスタムルールテンプレートを作成する必要があります。詳細については、「カスタムルールテンプレートの作成と管理」をご参照ください。
カスタムテンプレートを使用すると、FLAG パラメーター や検証用の SQL などの基本設定が自動的に入力されます。カスタムの ルール名 を指定し、ルールのタイプに基づいて監視しきい値を設定できます。たとえば、数値ルールには正常しきい値とエラーしきい値が必要ですが、変動タイプのルールには警告しきい値も必要です。
方法 3:カスタム SQL
この方法では、テーブルのデータ品質検証ロジックをカスタマイズできます。
方法 4: カスタムスクリプト
カスタムスクリプトのルールは、時間レベルおよび分レベルのデータ検証をサポートします。スクリプトルールの作成方法については、「システムルールテンプレートの使用」をご参照ください。例:
- assertion: change 30 minutes ago for max(id) = 15 name: 30-minute difference in max value of id field is 15 -
(オプション) 設定したルールを品質モニターに追加します。品質モニターの詳細については、「ステップ 2. 品質モニターの作成」をご参照ください。
説明品質ルールは、品質モニターに追加された後にのみトリガーできます。ここで既存の品質モニターを選択するか、品質モニターを設定する際に [Select Quality Rule] ステップでこの品質ルールを選択できます。
-
OK をクリックします。
ステップ 4: ルールのテスト
品質モニターのルールは、次の方法でテストできます。
ルール管理タブ
-
ルール管理 タブの 品質モニタリングビュー で、作成した品質モニターを見つけ、テスト実行 をクリックします。
-
テスト実行 ダイアログボックスで、タイムスタンプ範囲 や スケジュール時刻 などのパラメーターを確認し、テスト実行 をクリックします。起動が完了しました。 メッセージが表示されたら、詳細を表示 をクリックしてテスト実行の詳細を表示できます。
品質モニタリングタブ
-
品質モニタリング タブで、作成した品質モニターを探し、操作 列の テスト をクリックします。
-
テスト実行 ダイアログボックスで、タイムスタンプ範囲 や スケジュール時刻 などのパラメーターを確認し、テスト実行 をクリックします。起動が完了しました。 メッセージが表示されたら、詳細を表示 をクリックしてテスト実行の詳細を表示できます。
ステップ 5:アラートサブスクリプションの変更
ステップ 2. 品質モニターの作成 でアラートサブスクリプションを設定しました。ルールがトリガーされると、システムは指定されたアラート受信者に通知を送信します。アラート受信者を変更する必要がある場合は、次のいずれかの方法でアラートサブスクリプションを変更できます。
[ルール管理] タブ
-
ルール管理 タブの 品質モニタリングビュー で、作成した品質モニターを見つけ、
をクリックしてから、アラートのサブスクライブ を選択します。 -
アラートのサブスクライブ ダイアログボックスで、サブスクリプション方式 と 宛先オブジェクト を追加した後、操作 列の 保存 をクリックします。 保存後、さらに通知方法を追加できます。
サポートされている通知方法には、メール通知、メールおよび SMS 通知、DingTalk グループボット、DingTalk グループボット @ALL、Lark グループボット、WeCom ボット、カスタム Webhook、および電話番号があります。
説明-
DingTalk、Lark、または企業WeChat チャットボットを使用するには、チャットボットを追加して Webhook URL を取得し、その URL をアラートサブスクリプション設定に貼り付けます。
-
カスタム Webhook メソッドは、DataWorks エンタープライズ版でのみサポートされています。カスタム Webhook 経由で DataWorks が送信するアラート通知のメッセージ形式については、「付録: Webhook メッセージ形式」をご参照ください。
-
通知方法としてメール通知、メールおよび SMS 通知、または電話番号を選択した場合、権限付与オブジェクトをData Quality モニタリングのオーナー、オンコールスケジュール、またはスケジュールタスクの所有者に設定できます。
-
[Data Quality モニタリングのオーナー]: 現在の品質モニターの 基本設定 セクションで指定された 品質モニタリングのオーナー にアラート通知を送信します。
-
オンコールスケジュール:関連付けられたスケジューリングノードが品質アラートをトリガーすると、システムは シフトスケジュールにおける当日の当番ユーザー に通知を送信します。
-
[スケジュールタスクの所有者]:アラート通知は、品質モニタに関連付けられているスケジューリングノードのオーナーに送信されます。
-
-
[品質モニタリング] タブ
-
品質モニタリング タブで、作成した品質モニターを見つけ、操作 列で を選択します。
-
アラートのサブスクライブ ダイアログボックスで、サブスクリプション方式 と 宛先オブジェクト を追加した後、操作 列の 保存 をクリックします。 保存後、さらに通知方法を追加できます。
サポートされている通知方法には、メール通知、メールおよび SMS 通知、DingTalk グループボット、DingTalk グループボット @ALL、Lark グループボット、WeCom ボット、カスタム Webhook、および電話番号があります。
説明-
DingTalk、Lark、または企業WeChat チャットボットを使用するには、チャットボットを追加して Webhook URL を取得し、その URL をアラートサブスクリプション設定に貼り付けます。
-
カスタム Webhook メソッドは、DataWorks エンタープライズ版でのみサポートされています。カスタム Webhook 経由で DataWorks が送信するアラート通知のメッセージ形式については、「付録: Webhook メッセージ形式」をご参照ください。
-
通知方法としてメール通知、メールおよび SMS 通知、または電話番号を選択した場合、権限付与オブジェクトをData Quality モニタリングのオーナー、オンコールスケジュール、またはスケジュールタスクの所有者に設定できます。
-
[Data Quality モニタリングのオーナー]: 現在の品質モニターの 基本設定 セクションで指定された 品質モニタリングのオーナー にアラート通知を送信します。
-
オンコールスケジュール:関連付けられたスケジューリングノードが品質アラートをトリガーすると、システムは シフトスケジュールにおける当日の当番ユーザー に通知を送信します。
-
[スケジュールタスクの所有者]:アラート通知は、品質モニタに関連付けられているスケジューリングノードのオーナーに送信されます。
-
-
次のステップ
品質モニターの実行後、ナビゲーションペインで 品質運用保守 に移動し、品質モニタリング と 実行記録 をクリックすると、テーブルの品質チェックステータスと、品質ルールチェックの全履歴を表示できます。
付録
付録1:変動率と標準スコアの計算式
-
変動率の計算式:
変動率 = (サンプル値 - ベースライン値) / ベースライン値-
サンプル値:当日のサンプルの値です。たとえば、SQLタスクのテーブル行数について1日の変動率をチェックする場合、サンプル値は当日のパーティションの行数です。
-
ベースライン値:過去のサンプルからの参照値です。
説明-
ルールが SQL タスクの
テーブル行数、1日の変動率チェックの場合、ベースライン値は前日のパーティションの行数です。 -
ルールが SQL タスクの
テーブル行数、7日間の平均変動率チェックの場合、ベースライン値は過去 7 日間の平均行数です。
-
-
標準スコアの計算式:
(現在のサンプル値 - 過去 N 日間の平均値) / 標準偏差説明標準スコアは、BIGINT や DOUBLE などの数値型にのみ使用できます。
付録2:組み込みパーティション式
次のシナリオを想定します:
-
データタイムスタンプ (bizdate) は
20240524です -
スケジュール時刻は
10:30:00です
|
パーティション式 |
説明 |
例 |
|
|
現在のデータタイムスタンプのパーティションデータをチェックします。 |
|
|
|
データタイムスタンプの前日のパーティションデータをチェックします。 |
|
|
|
データタイムスタンプの 7 日前 (1 週間前) のパーティションデータをチェックします。 |
|
|
|
前月の同日のパーティションデータをチェックします。 |
|
|
|
現在のデータタイムスタンプについて、スケジュール時刻の秒まで含めたパーティションをチェックします。 |
|
|
|
現在のデータタイムスタンプの深夜 (00:00:00) のパーティションをチェックします。 |
|
|
|
スケジュール時刻の 1 時間前のパーティションをチェックします。 |
|
|
|
(時間単位のパーティションの場合) 1 時間前のパーティションをチェックします。形式は通常 |
|
|
|
(分レベルのパーティションの場合) スケジューリング時刻の 30 分前の時刻に対応するパーティションをチェックします。 形式は通常 |
|
|
|
(2階層パーティションの場合) データタイムスタンプの前日のすべての時間ごとのパーティションをチェックします。 |
|