Data Quality には、事前に定義済みのテーブルレベルおよびフィールドレベルの監視テンプレートが用意されています。このトピックでは、テンプレートを使用して監視ルールを設定する方法について説明します。
制限事項
テンプレートを使用した監視ルールの設定は、MaxCompute、EMR、Hologres、CDH Hive、AnalyticDB for PostgreSQL、AnalyticDB for MySQL、StarRocks、MySQL、Lindorm、SQL Server、および DLF のデータソースに対して行えます。
設定フロー
テンプレートを使用して品質ルールを設定する手順は、以下のとおりです。
ルールテンプレートを選択し、ルールパラメーターを設定します。
組み込みテンプレートは、テーブルレベルルールテンプレートとフィールドレベルルールテンプレートに分類されます。テンプレートを選択すると、Data Quality ルールのチェック方法を定義できます。このルールでは、チェック対象としてテーブルを指定します。Data Quality ルールは、テーブルデータをチェックする具体的な方法を定義し、期待値を満たしているかどうかを判断します。
ルールチェックが必要なテーブルまたはフィールドを一括で追加します
チェック対象のテーブルまたはフィールドを一括で選択し、ルールテンプレートを適用できます。
品質ルールを特定のオブジェクト(例:パーティションテーブルの特定のパーティションなど、テーブルのデータ範囲)に対する品質モニターに関連付けることで、そのデータに対して実行する品質チェックを定義できます。
操作手順
ステップ 1. 「テンプレートによる設定」ページに移動します
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[Data Quality に移動] をクリックします。
左側ナビゲーションウィンドウで、を選択します。
Data Quality には、組み込みのテーブルレベルおよびフィールドレベルのルールテンプレートが用意されています。監視ルールの設定をクリックすると、複数のテーブルまたはフィールドに対して同時にルールを設定できます。

ステップ 2. 監視ルールのプロパティを設定します
複数のテーブルまたはパーティションに一括適用するテンプレートを選択し、監視ルールの設定を操作列でクリックして、監視ルールの一括追加ページを開きます。
監視ルールの基本属性を設定します。
パラメーター
説明
データソースタイプ
この監視ルールを適用するテーブルのデータソースタイプを選択します。
説明テンプレートを使用した監視ルールの設定は、MaxCompute、EMR、Hologres、CDH Hive、AnalyticDB for PostgreSQL、AnalyticDB for MySQL、StarRocks、MySQL、Lindorm、SQL Server、および DLF のデータソースに対して行えます。
ルールソース
組み込みテンプレートおよび選択したルールテンプレートが表示されます。この設定は変更できません。その他の組み込みルールテンプレートについては、「組み込みルールテンプレートの確認」をご参照ください。
テンプレート
ルール名
システムによりルール名が自動生成されます。必要に応じて、名前の末尾を調整できます。
監視ルールの高度なプロパティを設定します。
パラメーター
説明
重要度
比較方法
監視しきい値
ステータス
重要次へをクリックして、監視ルールの生成ページに進みます。
ステップ 3. チェック対象の複数テーブルまたはフィールドを追加します
選択したテーブルレベルルールテンプレートまたはフィールドレベルルールテンプレートに基づき、ルールチェック用のテーブルまたはフィールドを一括で追加できます。
テーブルの追加
テーブルの追加をクリックします。一括作成ページで、ルールを設定するテーブルを選択します。
説明リストには、前ステップの基本属性セクションで設定したデータソースタイプに一致するすべてのテーブルが表示されます。テーブル名を入力して結果を絞り込むこともできます。
テーブルを選択後、確認をクリックして、ルールを設定するテーブルリストに追加します。
フィールドの追加
フィールドの追加をクリックします。フィールドの選択ダイアログボックスで、監視ルールを設定するフィールドを含むテーブルを選択します。
説明[選択するテーブル] エリアには、前のステップの [基本属性] セクションで設定した [データソースタイプ] に基づいて、利用可能なテーブルが一覧表示されます。
テーブルを選択すると、フィールドの選択セクションにそのテーブルのすべてのフィールドが表示され、フィールド名およびフィールドの説明でフィルターできます。

監視ルールを設定するフィールドを選択し、作成をクリックします。フィールドはルールを設定するフィールドリストに追加されます。
ステップ 4. 品質モニターの作成または関連付けを行います
品質ルールを品質モニターに関連付けることで、オブジェクトデータに対してどの品質ルールを使用するかを定義できます。オブジェクトとは、チェック対象テーブルの特定のタイムスタンプ範囲(例:パーティションテーブルの特定のパーティション)を指します。
モニターは個別または一括で設定できます。
一括設定
ルールを追加する 1 つ以上のテーブルまたはフィールドを選択後、モニターの設定をクリックします。

一括での自動関連付け、一括関連付け解除、および一括追加を実行できます。
自動関連付け:選択したテーブルまたはフィールドを、既存の品質モニタリングに自動的に関連付けます。
関連付け解除:選択したテーブルまたはフィールドの品質モニタリングをキャンセルします。
一括追加:選択したテーブルに対して品質モニタリングのデータ範囲および実行設定を構成します。
設定項目
備考
データ範囲
パーティションフィルター式を使用して、品質ルールでチェックするパーティションを定義します。
非パーティションテーブルの場合、デフォルトでテーブル全体がチェックされます。WHERE 句を使用して範囲を指定できます。
パーティションテーブルの場合、式の形式は
partition_name=partition_valueです。パーティション値は静的フィールド、または付録 2 の組み込みパーティションフィルター式のいずれかになります。
実行設定
トリガー方法
重要関連付けられたスケジューリングノード
トリガー方法パラメーターを本番環境でのノードスケジューリングによってトリガーに設定した場合、このパラメーターを設定してモニターに関連付けるスケジューリングノードを選択できます。スケジューリングノードの実行が完了すると、モニターに関連付けられたルールが自動的にトリガーされます。
実行リソース
品質ルールチェックの実行に必要なコンピューティングリソースです。デフォルトでは、ワークスペース内の監視対象テーブルのデータソースが選択されます。別のデータソースを選択する場合は、対応するリソースがテーブルにアクセスできることを確認してください。
単一テーブル設定
対象テーブルまたはフィールドの右側にある品質モニタリング列で、品質ルールを品質モニタリングジョブに関連付けられます。既存の品質モニタリングジョブを選択するか、新規品質モニタリングをクリックして新しいジョブを作成します。

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

ステップ 5. ルールの実行をテストします
監視ルールの生成をクリックして、監視ルールの検証ページを開きます。監視ルールの検証ページでは、以下の操作を実行できます。
テスト実行:ルール設定が正しいことを検証します。
ルールの作成後、1 つ以上のルールを選択してテスト実行を実行できます。テスト実行ダイアログボックスで、データタイムスタンプ(シミュレートされたトリガー時刻)を選択します。システムは、指定された時刻およびデータ範囲に基づいて、検証対象テーブルのパーティション値を計算します。テスト実行をクリックして、指定されたテーブルパーティションのデータが設定されたデータ品質ルールに準拠しているかどうかをチェックします。

テスト実行が完了すると、操作列の実行履歴をクリックして、詳細を確認し、関連操作を実行できます。
サブスクリプション:アラートの受信者です。
説明関連付けられたスケジューリング:ルールのトリガー方法を指定します。
推奨実行モードを使用または実行モードを手動で指定をクリックして、1 つ以上の Data Quality ルールをテーブルデータを生成するスケジューリングノードに関連付けます。オペレーションセンターでは、これらのノードには自動スケジュールされた定期インスタンス、手動でトリガーされたデータバックフィルインスタンス、およびテストインスタンスが含まれます。ノードタスクが実行されると、Data Quality ルールチェックがトリガーされます。ルールの強度を設定することで、ノードが失敗して終了するかどうかを制御し、ダーティデータの拡散を防止できます。
推奨実行モード:システムは、テーブルデータを出力するノードのデータリネージに基づき、選択したルールを推奨スケジューリングノードに自動的に関連付けます。
手動実行モード:選択したルールを指定したスケジューリングノードに手動で関連付けます。
重要ルールは、対応するスケジューリングノードに関連付けることで、自動的にトリガーされます。

削除:選択した 1 つ以上のルールを削除します。
ルールの詳細を表示:ルールの操作列でルールの詳細を表示をクリックして、詳細ページを開きます。このページでは、ルールの変更、開始、停止、削除、強度の指定、およびログの確認が可能です。
テスト実行が成功し、スケジュールが関連付けられた後、チェック完了をクリックします。
次のステップ
モニターの実行後、左側ナビゲーションウィンドウで品質運用管理を選択し、モニターおよび実行履歴をクリックして、指定されたテーブルの品質チェックステータスおよび完全な品質ルールチェックレコードを確認できます。
付録:Webhook メッセージ形式
このセクションでは、DataWorks がカスタム Webhookを使用して送信するアラート通知のメッセージ形式およびパラメーターについて説明します。
サンプルメッセージ
{
"detailUrl": "https://dqc-cn-zhangjiakou.data.aliyun.com/?defaultProjectId=3058#/jobDetail?envType=ODPS&projectName=yongxunQA_zhangbei_standard&tableName=sx_up_001&entityId=10878&taskId=16876941111958fa4ce0e0b5746379cd9bc67999d05f8&bizDate=1687536000000&executeTime=1687694111000",
"datasourceName": "emr_test_01",
"engineTypeName": "EMR",
"projectName": "Project name",
"dqcEntityQuality": {
"entityName": "tb_auto_test",
"actualExpression": "ds=20230625",
"strongRuleAlarmNum": 1,
"weakRuleAlarmNum": 0
},
"ruleChecks": [
{
"blockType": 0,
"warningThreshold": 0.1,
"property": "id",
"tableName": "tb_auto_test",
"comment": "Test a monitoring rule",
"checkResultStatus": 2,
"templateName": "Compare the Number of Unique Field Values Against Expectation",
"checkerName": "fulx",
"ruleId": 123421,
"fixedCheck": false,
"op": "",
"upperValue": 22200,
"actualExpression": "ds=20230625",
"externalId": "123112232",
"timeCost": "10",
"trend": "up",
"externalType": "CWF2",
"bizDate": 1600704000000,
"checkResult": 2,
"matchExpression": "ds=$[yyyymmdd]",
"checkerType": 0,
"projectName": "auto_test",
"beginTime": 1600704000000,
"dateType": "YMD",
"criticalThreshold": "0.6",
"isPrediction": false,
"ruleName": "Rule name",
"checkerId": 7,
"discreteCheck": true,
"endTime": 1600704000000,
"MethodName": "max",
"lowerValue": 2344,
"entityId": 12142421,
"whereCondition": "type!='type2'",
"expectValue": 90,
"templateId": 5,
"taskId": "16008552981681a0d6",
"id": 234241453,
"open": true,
"referenceValue": [
{
"discreteProperty": "type1",
"value": 20,
"bizDate": "1600704000000",
"singleCheckResult": 2,
"threshold": 0.2
}
],
"sampleValue": [
{
"discreteProperty": "type2",
"bizDate": "1600704000000",
"value": 23
}
]
}
]
}パラメーターの説明
名前 | タイプ | サンプル値 | 説明 |
ProjectName | String | autotest | データ品質を監視するコンピュートエンジンインスタンスまたはデータソースの名前です。 |
actualExpression | String | ds=20200925 | 監視対象データソーステーブルのパーティションです。 |
RuleChecks | RuleChecks の配列 | 検証結果のリストです。 | |
BlockType | Integer | 1 | 検証ルールの強度です。この値はルールの重要度を示します。有効な値は以下のとおりです。
|
WarningThreshold | Float | 0.1 | 警告しきい値です。この値は期待値からの偏差を示します。必要に応じてこのしきい値をカスタマイズしてください。 |
Property | String | type | ルールがチェックするデータソーステーブルの列です。 |
TableName | String | dual | 検証対象のテーブル名です。 |
Comment | String | ルールの説明です。 | 検証ルールの説明です。 |
CheckResultStatus | Integer | 2 | チェック結果のステータスです。 |
TemplateName | String | Compare number of unique field values against expectation | 検証テンプレートの名前です。 |
CheckerName | String | fulx | チェッカーの名前です。 |
RuleId | Long | 123421 | ルール ID です。 |
FixedCheck | Boolean | false | チェックに固定値を使用するかどうかを指定します。有効な値は以下のとおりです。
|
Op | String | > | 比較演算子です。 |
UpperValue | Float | 22200 | 予測上限値です。しきい値を設定すると自動的に生成されます。 |
ActualExpression | String | ds=20200925 | データソーステーブルで実際に検証されるパーティションです。 |
ExternalId | String | 123112232 | スケジュールタスクのノード ID です。 |
TimeCost | String | 10 | 検証タスクの所要時間です。 |
Trend | String | up | 監視結果の傾向です。 |
ExternalType | String | CWF2 | CDN マッピングシステムのタイプです。CWF のみサポートされています。 |
BizDate | Long | 1600704000000 | データタイムスタンプです。チェック対象のビジネスエンティティがオフラインデータの場合、データタイムスタンプは通常、チェック実行日の前日になります。 |
CheckResult | Integer | 2 | 検証結果です。 |
MatchExpression | String | ds=$[yyyymmdd] | パーティションフィルター式です。 |
CheckerType | Integer | 0 | チェッカーのタイプです。 |
ProjectName | String | autotest | データ品質チェックのコンピュートエンジンまたはデータソースの名前です。 |
BeginTime | Long | 1600704000000 | 検証操作の開始時刻です。 |
DateType | String | YMD | スケジューリングサイクルのタイプです。通常は YMD(年次・月次・日次タスク)になります。 |
CriticalThreshold | Float | 0.6 | エラーしきい値は、期待値からの偏差の程度を示します。必要に応じてこのしきい値をカスタマイズしてください。強制ルールがエラーしきい値をトリガーすると、スケジューリングタスクがブロックされます。 |
IsPrediction | Boolean | false | 結果が予測かどうかを指定します。有効な値は以下のとおりです。
|
RuleName | String | ルールの名前です。 | ルールの名前です。 |
CheckerId | Integer | 7 | チェッカーの ID です。 |
DiscreteCheck | Boolean | true | 監視が離散的かどうかを指定します。有効な値は以下のとおりです。
|
EndTime | Long | 1600704000000 | 検証結果のクエリの終了時刻です。 |
MethodName | String | max | サンプルデータの収集に使用されるメソッドです。例:avg、count、sum、min、max、count_distinct、user_defined、table_count、table_size、table_dt_load_count、table_dt_refuseload_count、null_value、null_value/table_count、(table_count-count_distinct)/table_count、table_count-count_distinct など。 |
LowerValue | Float | 2344 | 下限予測値です。この値は、設定したしきい値に基づいて自動的に生成されます。 |
EntityId | Long | 14534343 | パーティションフィルター式の ID です。 |
WhereCondition | String | type!='type2' | 検証タスクのフィルター条件です。 |
ExpectValue | Float | 90 | 期待値です。 |
TemplateId | Integer | 5 | 検証テンプレートの ID です。 |
TaskId | String | 16008552981681a0d6**** | 検証タスクの ID です。 |
Id | Long | 2231123 | プライマリキーの ID です。 |
ReferenceValue | ReferenceValue の配列 | 過去のサンプル値です。 | |
DiscreteProperty | String | type1 | GROUP BY 句でグループ化した結果のサンプルフィールドの値です。たとえば、Gender フィールドでグループ化する場合、DiscreteProperty の値は Male、Female、null になります。 |
Value | Float | 20 | サンプル値です。 |
BizDate | String | 1600704000000 | データタイムスタンプです。チェック対象のエンティティがオフラインデータの場合、タイムスタンプは通常、チェック実行日の前日になります。 |
SingleCheckResult | Integer | 2 | 検証結果文字列です。 |
Threshold | Float | 0.2 | しきい値です。 |
SampleValue | SampleValue の配列 | 現在のサンプル値です。 | |
DiscreteProperty | String | type2 | GROUP BY 句でグループ化した結果のサンプルフィールドの値です。たとえば、Gender フィールドでグループ化する場合、DiscreteProperty の値は Male、Female、null になります。 |
BizDate | String | 1600704000000 | データタイムスタンプです。検証対象のビジネスエンティティがオフラインデータである場合、値は通常、検証操作の前日になります。 |
Value | Float | 23 | サンプル値です。 |
Open | Boolean | true | ルールが有効かどうかを示します。 |