Data Quality を使用すると、データテーブルの監視ルールを設定できます。これらのルールは、テーブルデータが指定された要件を満たしているかどうかを検証し、問題のあるタスクを自動的にブロックして、ダーティデータが下流に伝播するのを防ぎます。これにより、出力データが期待どおりであることが保証されます。このトピックでは、テーブルの品質監視ルールを設定、実行、管理する方法について説明します。
前提条件
品質監視ルールを設定する前に、エンジンメタデータを取得する必要があります。品質ルールはエンジンデータテーブルに基づいており、対応するテーブルデータに適用されます。詳細については、「メタデータの取得」をご参照ください。
制限事項
データソースの制限:品質監視ルールは、MaxCompute、E-MapReduce、Hologres、CDH Hive、AnalyticDB for PostgreSQL、AnalyticDB for MySQL、StarRocks、MySQL、SQL Server、DLF、および Lindorm のデータソースに対してのみ設定できます。
ネットワークの制限:ルールを設定した後、テーブルデータを生成するスケジューリングノードは、安定したネットワーク接続を持つリソースグループを使用して、Data Quality のルールチェックをトリガーする必要があります。
ルール有効化の制限:動的しきい値を持つルールが正しく機能するには、21 日分のサンプリングレコードが必要です。レコードが 21 日分未満の場合、ルールチェックは異常になります。21 日分のサンプリングレコードがない場合は、ルールを設定し、スケジューリングノードに関連付けてから、データバックフィル機能を使用して必要な 21 日分のレコードを生成できます。
品質監視のコアコンポーネント
テーブルごとに品質監視ルールを設定することは、データ検証ロジックを定義し、インスタンス化するためのコアプロセスです。このプロセスにより、4 つの主要部分からなる完全な品質監視設定が作成されます。
監視範囲:データ品質チェックの対象アセットを指定します。設定には以下が含まれます。
監視対象:チェックする 1 つ以上の物理テーブルを選択します。パーティションテーブルと非パーティションテーブルの両方がサポートされています。
タイムスタンプ範囲:パーティションテーブルの場合、パーティションフィルター式を使用して、各チェック中にパーティションを動的にスキャンする必要があります。たとえば、
$[yyyymmdd-1]を使用して、データタイムスタンプの前日のパーティションデータをチェックします。
品質ルール:データが期待どおりであるかを判断するための特定の検証ロジックと基準を定義します。
ルールの定義:監視対象に 1 つ以上の品質ルールを追加できます。各ルールは、ルールテンプレートからインスタンス化されます。ルールテンプレートには次の種類があります。
システムテンプレート:DataWorks が提供する組み込みテンプレートです。完全性、一意性、有効性など、複数のディメンションをカバーします。例として、「テーブル行数の変動」や「フィールドの一意な値の数」などがあります。
カスタムテンプレート:ユーザーが SQL を使用して作成した、再利用可能なパーソナライズされた検証ロジックです。
ルールのプロパティ:各ルールには、主要なプロパティを設定する必要があります。これには、しきい値 (例:変動率が 30% を超えない) や重大度レベル (強制ルールまたはソフトルール) が含まれます。強制ルールのチェックに失敗した場合、関連するスケジューリングノードをブロックできます。
トリガーメソッド:品質監視ジョブがいつ実行されるかを定義します。
スケジューリングノードによるトリガー:品質監視ジョブを、上流の DataWorks スケジューリングノード (通常は監視対象テーブルを生成するノード) に関連付けます。スケジューリングノードが正常に実行されると、関連する品質ルールが自動的にトリガーされて検証が行われます。これは、自動化されたデータ品質保証のベストプラクティスです。
手動トリガー:検証プロセスはどのスケジューリングノードにも関連付けられておらず、インターフェイスから手動で開始する必要があります。この方法は、一時的な、一回限りのデータ探索や検証に適しています。
アラートポリシー:データ品質問題が発生した際の通知戦略を設定します。
アラートサブスクリプション:「失敗」や「警告」など、特定のルールチェック結果に対するアラートを設定できます。システムは、メール、ショートメッセージ、電話、DingTalk、Lark、WeCom グループチャットボット、カスタム Webhook など、さまざまなチャネルを介した通知の送信をサポートしています。
これら 4 つのコンポーネントを設定して保存すると、完全な品質監視プランが作成されます。本番環境に公開する前に、設定をテストすることを推奨します。
操作手順
1. テーブル品質詳細ページへの移動
Data Quality ページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、Data Quality に移動 をクリックします。
テーブルごとに監視ルールを設定するページに移動します。
左側のナビゲーションウィンドウで、 をクリックして、ルール設定ページに移動します。
左側の データソース リストで、ルールを設定するテーブルが含まれるデータベースを選択します。
データベースタイプ、データベース、またはテーブル名でテーブルをフィルターします。対象のテーブル名をクリックするか、操作 列の ルール管理 をクリックします。これにより、そのテーブルのテーブル品質詳細ページに移動します。
このページには、現在のテーブルに設定されているすべての品質監視ジョブとルールが表示されます。品質監視ジョブに関連付けられているかどうかに基づいて、ルールをすばやくフィルターできます。また、まだ品質監視ジョブに関連付けられていないルールの実行メソッドを定義することもできます。

2. 品質監視ジョブの作成
新しい品質監視ジョブを作成します。
品質監視ジョブは、次の 2 つの方法のいずれかで作成できます。
ルール管理ページ
テーブルの テーブル品質詳細 ページで、ルール管理 タブをクリックします。モニター視点 の横にある
アイコンをクリックして、新しい品質監視ジョブを作成します。
品質監視ページ
テーブルの テーブル品質詳細 ページで、モニター タブに切り替えます。モニターの作成 をクリックします。

品質監視ジョブのパラメーターを設定します。
設定項目
パラメーター
説明
基本設定
モニター名
監視ルールのカスタム名を入力します。
品質監視のオーナー
必要に応じて、モニターのオーナーを指定できます。アラートサブスクリプションを設定する際に、メール、メールと SMS、または 電話 を使用して、モニターのオーナーをアラート受信者として指定できます。
監視対象
データ品質チェックの対象オブジェクトです。デフォルトでは、現在のテーブルです。
データ範囲
パーティションフィルター式を使用して、品質ルールによってチェックされるパーティションを定義します。
非パーティションテーブルの場合、このパラメーターを設定する必要はありません。デフォルトでテーブル内のすべてのデータがチェックされます。
パーティションテーブル:式の形式は
partition_name=partition_valueです。パーティション値は、静的フィールドまたは付録 2 の組み込みパーティションフィルター式にすることができます。
説明この設定は、カスタムテンプレートまたはカスタム SQL を使用してルールを設定する場合には有効になりません。カスタムテンプレートまたはカスタム SQL で設定されたルールの場合、チェックされるパーティションはカスタム SQL によって決定されます。
監視ルール
監視ルール
品質監視ジョブに品質ルールを関連付けて、現在のタイムスタンプ範囲のデータが期待どおりであるかをどのルールでチェックするかを決定します。
説明異なるパーティションに対して複数の品質監視ジョブを作成し、それらを異なる品質ルールに関連付けることができます。これにより、異なるパーティションに異なる検証ルールを適用できます。
まだ品質ルールを作成していない場合は、このステップを一旦スキップできます。まず品質監視ジョブを作成し、後でルールを追加します。品質ルールの作成方法の詳細については、「3. Data Quality ルールの設定」をご参照ください。
実行設定
トリガーメソッド
モニターのトリガーメソッドです。
本番環境のノードスケジューリングによってトリガー:モニターに関連付けたスケジューリングノードがオペレーションセンターで実行完了後、モニターに関連付けられたルールが自動的にトリガーされます。ドライランノードは監視ルールの実行をトリガーしないことに注意してください。
手動でトリガー:モニターに関連付けられた監視ルールは手動でトリガーされます。
重要データ品質をチェックしたいテーブルが非 MaxCompute テーブルで、トリガーメソッド に 本番環境のノードスケジューリングによってトリガー が選択されている場合、スケジューリング用の共有リソースグループで実行されるスケジューリングノードをモニターに関連付けることはできません。そうしないと、モニターの実行時にエラーが報告される可能性があります。
関連スケジューリングノード
トリガーメソッド パラメーターを 本番環境のノードスケジューリングによってトリガー に設定した場合、このパラメーターを設定して、モニターに関連付けるスケジューリングノードを選択できます。スケジューリングノードの実行が完了すると、モニターに関連付けられたルールが自動的にトリガーされます。
実行リソース
品質ルールチェックの実行に必要なコンピューティングリソースです。デフォルトでは、ワークスペース内の監視対象テーブルのデータソースが選択されます。別のデータソースを選択した場合は、対応するリソースがテーブルにアクセスできることを確認してください。
処理ポリシー
品質問題処理ポリシー
データ品質問題が検出された場合に使用するブロックまたはアラートポリシーを設定します。
ブロック:データ品質問題が検出されると、システムはテーブルの品質チェックをトリガーした本番スケジューリングノードを特定します。その後、ノードを失敗に設定し、下流のノードは実行されません。これにより、問題のあるデータの拡散を防ぐために本番パイプラインがブロックされます。
デフォルトは
強制ルール - 重大な異常です。アラート:データ品質問題が検出されると、品質監視ジョブのアラートサブスクリプションチャネルにアラートメッセージが送信されます。
デフォルトは、
強制ルール - 重大な異常、強制ルール - 警告の異常、強制ルール - チェック失敗、ソフトルール - 重大な異常、ソフトルール - 警告の異常、およびソフトルール - チェック失敗です。
アラートメソッド設定
メール、メールと SMS、DingTalk チャットボット、DingTalk チャットボット @ALL、Lark グループチャットボット、Enterprise WeCom Robot、カスタム Webhook、または 電話 を使用してアラート通知を送信できます。
説明DingTalk チャットボット、Lark チャットボット、または WeChat チャットボットを追加して Webhook URL を取得できます。その後、Webhook URL をアラートサブスクリプションダイアログボックスの受信者フィールドにコピーします。
カスタム Webhook 通知メソッドは DataWorks Enterprise Edition でのみサポートされています。カスタム Webhook を使用して送信されるアラート通知のメッセージ形式については、「付録:カスタム Webhook URL を使用して送信されるアラート通知のメッセージ形式」をご参照ください。
メール、メールと SMS、または 電話 を通知メソッドとして選択した場合、受信者 を モニターのオーナー、勤怠表、または ノードのオーナー として指定できます。
Data Quality 監視のオーナー:アラート情報は、現在の品質モニターの 基本設定 セクションで設定された 品質監視のオーナー に送信されます。
勤怠表:モニターに関連付けられた監視ルールがトリガーされ、アラートが生成されると、システムは勤怠表のその日の当番者にアラート通知を送信します。
スケジューリングタスクのオーナー:アラート通知は、モニターに関連付けられたスケジューリングノードのオーナーに送信されます。
保存 をクリックして、品質監視ジョブを作成します。
3. Data Quality ルールの設定
組み込みのテーブルレベルおよびフィールドレベルの監視テンプレートに基づいて品質ルールを設定できます。組み込みルールテンプレートの詳細については、「組み込みルールテンプレートの表示」をご参照ください。
テーブル品質詳細 ページの ルール管理 タブで、作成した品質監視ジョブを選択します。次に、ルールの作成 をクリックして、ルール設定ページに移動します。
Data Quality ルールを作成します。
Data Quality は、品質監視ルールを設定するための以下のメソッドを提供します。必要に応じていずれかを選択してください。
メソッド 1:システムテンプレートの使用
Data Quality には、数十の組み込み品質ルールテンプレートがあります。左側で + 使用 をクリックすると、テンプレートから品質監視ルールをすばやく作成できます。一度に複数のルールを追加できます。
上部の + システムテンプレートルール をクリックし、ルールテンプレート パラメーターを変更して対象のルールテンプレートを選択できます。
メソッド 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. 品質監視ジョブの作成」をご参照ください。
説明設定した監視ルールは、モニターに追加した場合にのみトリガーできます。ルールをモニターに関連付けるには、ここで既存のモニターを選択するか、モニターを設定する際に 監視ルール セクションでルールを選択します。

決定 をクリックします。
4. ルール実行のテスト
品質監視ジョブ内のルールのトリガーは、以下の方法でテストできます。
ルール管理タブからのテスト実行
ルール管理 タブの モニター視点 で、作成した品質監視ジョブを見つけ、テスト実行 をクリックします。

テスト実行 ダイアログボックスで、データ範囲 や スケジューリング時間 などのパラメーターの設定を確認し、テスト実行 をクリックします。開始済み が表示されたら、詳細の表示 をクリックしてテスト実行の結果を表示できます。

モニタータブからのテスト実行
[モニター] タブで、作成したモニターを探し、[アクション] 列でを選択します。

テスト実行 ダイアログボックスで、データ範囲 や スケジューリング時間 などのパラメーターの設定を確認し、テスト実行 をクリックします。開始済み が表示されたら、詳細の表示 をクリックしてテスト実行の結果を表示できます。

5. アラートサブスクリプションの変更
ステップ 2. 品質監視ジョブの作成 でアラートサブスクリプションを設定しました。ルールがトリガーされると、システムは対応するアラート受信者に通知を送信します。他のユーザーに通知するためにアラートサブスクリプションを変更したい場合は、以下の方法で設定できます。
ルール管理タブでのサブスクリプション
ルール管理 タブの モニター視点 で、作成した品質監視ジョブを見つけ、以下に示すようにアラートサブスクリプションページを開きます。

アラートサブスクリプション ダイアログボックスで、通知メソッド と 受信者 を追加し、操作 列の 保存 をクリックします。設定を保存した後、異なる通知メソッドとアラート受信者で別のサブスクリプションを設定できます。
Data Quality は、メール、メールと SMS、DingTalk チャットボット、DingTalk チャットボット @ALL、Lark グループチャットボット、Enterprise Wechat Robot、カスタム Webhook、および 電話 の通知メソッドをサポートしています。
説明DingTalk チャットボット、Lark チャットボット、または WeChat チャットボットを追加して Webhook URL を取得できます。その後、Webhook URL をアラートサブスクリプションダイアログボックスの受信者フィールドにコピーします。
カスタム Webhook 通知メソッドは DataWorks Enterprise Edition でのみサポートされています。カスタム Webhook を使用して送信されるアラート通知のメッセージ形式については、「付録:カスタム Webhook URL を使用して送信されるアラート通知のメッセージ形式」をご参照ください。
メール、メールと SMS、または 電話 を通知メソッドとして選択した場合、受信者 を モニターのオーナー、勤怠表、または ノードのオーナー として指定できます。
Data Quality 監視のオーナー:アラート情報は、現在の品質モニターの 基本設定 セクションで設定された 品質監視のオーナー に送信されます。
勤怠表:モニターに関連付けられた監視ルールがトリガーされ、アラートが生成されると、システムは勤怠表のその日の当番者にアラート通知を送信します。
スケジューリングタスクのオーナー:アラート通知は、モニターに関連付けられたスケジューリングノードのオーナーに送信されます。
品質監視タブからのサブスクライブ
品質監視 タブで、作成した品質監視ジョブを見つけ、操作 列で をクリックします。

アラートサブスクリプション ダイアログボックスで、通知メソッド と 受信者 を追加し、操作 列の 保存 をクリックします。設定を保存した後、異なる通知メソッドとアラート受信者で別のサブスクリプションを設定できます。
Data Quality は、メール、メールと SMS、DingTalk チャットボット、DingTalk チャットボット @ALL、Lark グループチャットボット、Enterprise Wechat Robot、カスタム Webhook、および 電話 の通知メソッドをサポートしています。
説明DingTalk チャットボット、Lark チャットボット、または WeChat チャットボットを追加して Webhook URL を取得できます。その後、Webhook URL をアラートサブスクリプションダイアログボックスの受信者フィールドにコピーします。
カスタム Webhook 通知メソッドは DataWorks Enterprise Edition でのみサポートされています。カスタム Webhook を使用して送信されるアラート通知のメッセージ形式については、「付録:カスタム Webhook URL を使用して送信されるアラート通知のメッセージ形式」をご参照ください。
メール、メールと SMS、または 電話 を通知メソッドとして選択した場合、受信者 を モニターのオーナー、勤怠表、または ノードのオーナー として指定できます。
Data Quality 監視のオーナー:アラート情報は、現在の品質モニターの 基本設定 セクションで設定された 品質監視のオーナー に送信されます。
勤怠表:モニターに関連付けられた監視ルールがトリガーされ、アラートが生成されると、システムは勤怠表のその日の当番者にアラート通知を送信します。
スケジューリングタスクのオーナー:アラート通知は、モニターに関連付けられたスケジューリングノードのオーナーに送信されます。
次のステップ
モニターが実行された後、左側のナビゲーションウィンドウで 品質 O&M を選択し、モニター と 実行記録 をクリックして、指定したテーブルの品質チェックステータスと完全な品質ルールチェック記録を表示できます。
付録
付録 1:変動率と分散の数式
変動率の数式:
変動率 = (サンプル値 - ベースライン値) / ベースライン値サンプル値:当日に収集されたサンプルの特定の値。たとえば、SQL タスクのテーブル行数の 1 日の変動チェックの場合、サンプルは当日のパーティションの行数です。
ベースライン値:過去のサンプルとの比較値。
説明ルールが SQL タスクの
テーブル行数の 1 日の変動率チェックである場合、ベースライン値は前日のパーティションのテーブル行数です。ルールが SQL タスクの
テーブル行数の 7 日間平均変動率チェックである場合、ベースライン値は過去 7 日間のテーブル行データの平均です。
分散変動の数式:
(現在のサンプル - 過去 N 日間の平均) / 標準偏差説明分散は、BIGINT や DOUBLE などの数値型でのみ使用できます。
付録 2:組み込みパーティションフィルター式
シナリオ:
データタイムスタンプ (bizdate) は
20240524です。スケジューリングされた時刻は
10:30:00です。
パーティションフィルター式 | チェック対象の説明 | 例 (シナリオに基づく) |
| 現在のデータタイムスタンプのパーティションデータをチェックします。 |
|
| データタイムスタンプの前日のパーティションデータをチェックします。 |
|
| データタイムスタンプの 7 日前 (1 週間前) のパーティションデータをチェックします。 |
|
| データタイムスタンプの前月の同日のパーティションデータをチェックします。 |
|
| 現在のデータタイムスタンプのパーティションを、現在のスケジューリングされた時刻 (秒レベル) まで正確にチェックします。 |
|
| 現在のデータタイムスタンプの深夜 0 時に、第 2 レベルのパーティションデータをチェックします。 |
|
| 現在のデータタイムスタンプを基準に、スケジュール時刻の 1 時間前から第 2 レベルのパーティションデータをチェックします。 |
|
| (時間単位のパーティションの場合) スケジューリングされた時刻の 1 時間前のパーティションをチェックします。形式は通常 |
|
| (分レベルのパーティションの場合) スケジューリングされた時刻の 30 分前のパーティションをチェックします。形式は通常 |
|
| (サブパーティションの場合) データタイムスタンプの前日のすべての時間単位のパーティションデータをチェックします。 |
|