Data Quality を使用すると、単一テーブルの監視ルールを設定して、テーブルデータの品質が特定の条件を満たしているかどうかを監視できます。データ品質の問題が検出された場合、問題が発生したタスクはブロックされ、ダーティデータがダウンストリームに広がるのを防ぎます。これにより、生成されたテーブルデータがビジネス要件を満たすことが保証されます。このトピックでは、単一テーブルの監視ルールを設定し、モニターを実行し、その他の関連操作を実行する方法について説明します。
前提条件
コンピュートエンジンのメタデータが収集されます。監視ルールは、コンピュートエンジンのデータテーブルに基づいて設定され、テーブルのデータ品質を監視するために使用されます。したがって、監視ルールを作成して設定する前に、まず目的のコンピュートエンジンのメタデータを収集する必要があります。詳細については、「メタデータ収集」をご参照ください。
設定プロセス
テーブルの監視ルールを設定するには、次の手順を実行する必要があります:
監視ルールに基づいてデータ品質をチェックするテーブルを選択します。
テーブルの品質モニターを作成します。
テーブルのモニターを作成および設定する際に、パーティションなどの監視したいテーブルデータの範囲を指定し、モニターに関連付ける監視ルールを選択できます。これにより、モニターはルールに基づいて指定されたテーブルデータの品質を監視するために使用できます。
同じテーブルの異なるパーティションに対して異なるモニターを作成し、異なる監視ルールをモニターに関連付けることができます。これにより、パーティションは異なるデータ品質チェックロジックに基づいて監視できます。
モニターのトリガーメソッドを指定できます。モニターは、テーブルを生成するスケジューリングノードが実行されたとき、または手動でモニターを実行したときにトリガーできます。
アラートを送信する条件を指定できます。データ品質チェック結果の重大度に基づいてアラートを送信するかどうかを決定できます。テーブル内のデータ変更が自動的にチェックされる際に、データ品質問題の重大度に基づいて監視対象テーブルを生成するタスクをブロックするかどうかを決定できます。
データ品質ルールを設定して品質監視に追加します。
テーブルのデータ品質を監視する基準となる監視ルールを選択できます。ルールで定義された特定のチェックメソッドが実装され、テーブルデータがビジネス要件を満たしているかどうかが判断されます。
Data Quality では、組み込みのルールテンプレートに基づいて監視ルールを作成したり、カスタム SQL 文ロジックに基づいてカスタムテンプレートルールを作成したりできます。
組み込みテンプレートルール: DataWorks が提供する組み込みルールテンプレートに基づいて監視ルールを作成できます。
カスタムテンプレートルール: パーティションフィルター式で指定されたデータの品質を監視するための要件を組み込みルールテンプレートが満たせない場合は、カスタムテンプレートルールを作成できます。頻繁に使用するカスタムルールをルールテンプレートとして保存し、将来使用することができます。
モニターをテストし、サブスクライブします。
制限事項
監視ルールは、MaxCompute、E-MapReduce (EMR)、Hologres、CDH Hive、AnalyticDB for PostgreSQL、AnalyticDB for MySQL、StarRocks、MySQL などの特定のタイプのデータソースに対してのみ設定できます。データソースの監視ルールを設定した後、ルールをトリガーしてデータソース内のテーブルのデータ品質をチェックできるのは、テーブルデータを生成するスケジューリングノードがデータソースに接続されているリソースグループで実行されている場合のみです。
動的しきい値ルールを使用してデータ品質チェックを実行するには、21 日間のサンプリングレコードが利用可能であることを確認する必要があります。サンプリングレコードの収集期間が 21 日未満の場合、動的しきい値ルールを使用すると例外が発生する可能性があります。動的しきい値ルールを設定する際に 21 日間のサンプリングレコードが利用できない場合は、ルールをスケジューリングノードに関連付けた後、データバックフィル機能を使用して必要なデータを補足できます。
手順
ステップ 1: テーブル品質詳細ページに移動する
Data Quality ページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[Data Quality に移動] をクリックします。
[テーブルごとに設定] ページに移動します。
左側のナビゲーションウィンドウで、 を選択します。
[接続] セクションで、ルールを設定するテーブルが存在するデータベースを選択します。
データベースタイプ、データベース、テーブル名などの条件に基づいて目的のテーブルを検索します。次に、テーブルの名前をクリックするか、テーブルの [アクション] 列にある [ルール管理] をクリックして、テーブル品質詳細ページに移動します。
このページには、テーブルに設定されているすべてのモニターとルールが表示されます。ルールがモニターに関連付けられているかどうかに基づいて、ルールをすばやくフィルターできます。モニターに関連付けられていないルールについては、ルールの実行モードを指定できます。

ステップ 2: モニターを作成する
モニターを作成します。
次のいずれかの方法でモニターを作成できます:
ルール管理タブ
[テーブル品質詳細] ページで、[ルール管理] タブをクリックします。[モニター視点]
の横にあるアイコンをクリックします。
モニタータブ
[テーブル品質詳細] ページで、[モニター] タブをクリックします。[モニターの作成] をクリックします。

品質監視のパラメーターを設定します。
設定項目
パラメーター
説明
基本設定
モニター名
モニターの名前。
モニターのオーナー
必要に応じてモニターのオーナーを指定できます。アラートサブスクリプションを設定する際に、[メール]、[メールと SMS]、または [電話] を使用して、モニターのオーナーをアラート受信者として指定できます。
監視対象
データ品質をチェックするオブジェクト。デフォルト値は現在のテーブルです。
データ範囲
品質を監視するテーブルデータの範囲。パーティションフィルター式を使用して、チェックする必要があるパーティションを定義できます。
非パーティションテーブルの場合、このパラメーターを設定する必要はありません。デフォルトで [テーブル内のすべてのデータ] がチェックされます。
パーティションテーブルの場合、このパラメーターを
パーティションキー=パーティション値形式の値に設定する必要があります。パーティション値は、定数または組み込みパーティションフィルター式にすることができます。
説明カスタムテンプレートまたはカスタム SQL 文に基づいて監視ルールを設定する場合、このパラメーターは有効になりません。代わりに、ルールによってチェックされるパーティションは、ルールで指定されたカスタム SQL 文によって決定されます。
品質ルールの選択
品質ルールの選択
モニターに関連付ける監視ルール。指定された範囲のデータの品質は、ルールに基づいて監視されます。
説明同じテーブルの異なるパーティションに対して異なるモニターを作成し、異なる監視ルールをモニターに関連付けることができます。これにより、パーティションは異なるデータ品質チェックロジックに基づいて監視できます。
監視ルールを作成していない場合は、このパラメーターの設定をスキップして、まずモニターの作成を完了できます。監視ルールを作成および設定するときに、監視ルールをモニターに追加できます。監視ルールの作成と設定の詳細については、「ステップ 3: 監視ルールを設定する」をご参照ください。
実行設定
トリガーメソッド
モニターのトリガーメソッド。
[本番環境でのノードスケジューリングによるトリガー]: モニターに関連付けたスケジューリングノードがオペレーションセンターで実行を完了すると、モニターに関連付けられているルールが自動的にトリガーされます。ドライランノードは監視ルールをトリガーして実行しないことに注意してください。
[手動でトリガー]: モニターに関連付けられている監視ルールは手動でトリガーされます。
重要データ品質をチェックするテーブルが非 MaxCompute テーブルで、[トリガーメソッド] に [本番環境でのノードスケジューリングによるトリガー] が選択されている場合、スケジューリング用の共有リソースグループで実行されるスケジューリングノードをモニターに関連付けることはできません。そうしないと、モニターの実行時にエラーが報告される可能性があります。
関連スケジューリングノード
[トリガーメソッド] パラメーターを [本番環境でのノードスケジューリングによるトリガー] に設定した場合、このパラメーターを設定して、モニターに関連付けるスケジューリングノードを選択できます。スケジューリングノードの実行が完了すると、モニターに関連付けられているルールが自動的にトリガーされます。
実行リソース
ルールの実行に必要なリソース。デフォルトでは、現在のワークスペースで監視対象のテーブルが属するデータソースが選択されます。別のデータソースを選択する場合は、関連リソースが監視対象のテーブルにアクセスできることを確認してください。
処理ポリシー
品質問題処理ポリシー
検出されたデータ品質問題を処理するために使用されるブロッキングまたはアラートポリシー。
ブロック: テーブルでデータ品質の問題が検出された場合、テーブルを生成する本番環境のスケジューリングノードが識別され、システムはそのノードの実行ステータスを [失敗] に設定します。この場合、ノードの子孫ノードは実行できなくなり、ダーティデータの拡散を防ぐために本番リンクがブロックされます。
デフォルト値:
強いルール・赤色異常。アラート: テーブルでデータ品質の問題が検出された場合、システムは設定された通知方法を使用してアラート受信者にアラート通知を送信します。
デフォルト値:
強いルール・赤色異常、強いルール・橙色例外、強いルール・チェック失敗、弱いルール・赤色異常、弱いルール・橙色例外、および弱いルール・チェック失敗。
アラート設定
[メール]、[メールと SMS]、[DingTalk チャットボット]、[DingTalk チャットボット @ALL]、[Lark グループチャットボット]、[WeCom ロボット]、[カスタム WebHook]、または [電話] を使用してアラート通知を送信できます。
説明DingTalk チャットボット、Lark チャットボット、または WeChat チャットボットを追加して、Webhook URL を取得できます。次に、Webhook URL を [サブスクリプションの管理] ダイアログボックスの [受信者] フィールドにコピーします。
[カスタム Webhook] 通知方法は、DataWorks Enterprise Edition でのみサポートされています。[カスタム Webhook] を使用して送信されるアラート通知のメッセージ形式の詳細については、「付録: カスタム Webhook URL を使用して送信されるアラート通知のメッセージ形式」をご参照ください。
[メール]、[メールと SMS]、または [電話] を通知方法として選択した場合、[承認オブジェクト] を [モニターのオーナー]、[勤怠表]、または [ノードのオーナー] として指定できます。
[Data Quality 監視オーナー]: アラート情報は、現在の品質モニターの [基本設定] セクションで設定された [品質監視オーナー] に送信されます。
[勤怠表]: モニターに関連付けられた監視ルールがトリガーされてアラートが生成されると、システムは勤怠表の当日の担当者にアラート通知を送信します。
[ノードのオーナー]: アラート通知は、モニターに関連付けられたスケジューリングノードの [オーナー] に送信されます。
[保存] をクリックして、モニターの作成を完了します。
ステップ 3: 監視ルールを設定する
組み込みのテーブルレベルまたはフィールドレベルのルールテンプレートに基づいて監視ルールを設定できます。組み込みのルールテンプレートの詳細については、「組み込みルールテンプレートの表示」をご参照ください。
[テーブル品質詳細] ページで、[ルール管理] タブをクリックし、作成したモニターを選択してから、[ルールの作成] をクリックします。[ルールの作成] パネルが表示されます。
監視ルールを作成します。
Data Quality が提供する次のいずれかの方法を使用して、ビジネス要件に基づいて監視ルールを設定できます。
方法 1: 組み込みルールテンプレートに基づいてルールを設定する
Data Quality は、数十の組み込みルールテンプレートを提供します。組み込みルールテンプレートに基づいて、監視ルールをすばやく作成できます。
説明[ルールの作成] パネルの上部で、[+ システムテンプレートルール] をクリックできます。次に、[テンプレート] パラメーターを設定して、目的のルールテンプレートを選択できます。
または、[ルールの作成] パネルの左側のナビゲーションウィンドウで目的の組み込みルールテンプレートを見つけて、[+ 使用] をクリックすることもできます。
同時に複数のルールを追加できます。

方法 2: カスタムルールテンプレートに基づいてルールを設定する
説明この方法を使用してルールを作成する前に、 に移動してカスタムルールテンプレートを作成する必要があります。詳細については、「カスタムルールテンプレートの作成と管理」をご参照ください。
カスタムルールテンプレートを参照すると、[FLAG パラメーター] や [SQL] などのテンプレートの基本設定が自動的に表示されます。ビジネス要件に基づいて [ルール名] パラメーターを設定し、ルールタイプに基づいて [監視しきい値] パラメーターを設定できます。たとえば、数値ルールには正常しきい値と重大しきい値を定義する必要があり、変動タイプのルールには正常しきい値と重大しきい値に加えて警告しきい値を定義する必要があります。

方法 3: カスタム SQL 文に基づいてルールを設定する
この方法では、ビジネス要件に基づいてテーブルのデータ品質チェックロジックを設定できます。

任意。設定したルールをモニターに追加します。モニターの詳細については、「ステップ 2: モニターを作成する」をご参照ください。
説明設定した監視ルールは、ルールをモニターに追加した場合にのみトリガーできます。ルールをモニターに関連付けるには、ここで既存のモニターを選択するか、モニターを設定するときに [監視ルール] セクションでルールを選択します。

[決定] をクリックします。
ステップ 4: ルールをテストする
モニターに関連付けたルールがどのようにトリガーされるかをテストするには、次のいずれかの方法を使用できます:
[ルール管理] タブでテスト実行を実行する
[ルール管理] タブで、[モニター視点] セクションで作成したモニターを見つけ、[テスト実行] をクリックします。

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

[モニター] タブでテスト実行を実行する
[モニター] タブで、作成したモニターを見つけ、[アクション] 列の [テスト] をクリックします。

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

ステップ 5: モニターのアラートサブスクリプションを変更する
ステップ 2 でモニターを作成したときに、すでにアラートサブスクリプションを設定しています。ルールがトリガーされると、システムは指定されたアラート受信者に通知を送信します。他のユーザーに通知するためにアラートサブスクリプションを変更する場合は、次のいずれかの方法を使用できます:
[ルール管理] タブでモニターをサブスクライブする
[ルール管理] タブで、[モニター視点] セクションで作成したモニターを見つけ、次の図に示す手順を実行してアラートサブスクリプションページを開きます。

[サブスクリプションの管理] ダイアログボックスで、[通知方法] と [受信者] を追加し、[アクション] 列の [保存] をクリックします。設定を保存した後、別の通知方法とアラート受信者で別のサブスクリプションを設定できます。
Data Quality は、[メール]、[メールと SMS]、[DingTalk チャットボット]、[DingTalk チャットボット @ALL]、[Lark グループチャットボット]、[WeCom ロボット]、[カスタム 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 グループチャットボット]、[WeCom ロボット]、[カスタム Webhook]、および [電話] の通知方法をサポートしています。
説明DingTalk チャットボット、Lark チャットボット、または WeChat チャットボットを追加して、Webhook URL を取得できます。次に、Webhook URL を [サブスクリプションの管理] ダイアログボックスの [受信者] フィールドにコピーします。
[カスタム Webhook] 通知方法は、DataWorks Enterprise Edition でのみサポートされています。[カスタム Webhook] を使用して送信されるアラート通知のメッセージ形式の詳細については、「付録: カスタム Webhook URL を使用して送信されるアラート通知のメッセージ形式」をご参照ください。
[メール]、[メールと SMS]、または [電話] を通知方法として選択した場合、[承認オブジェクト] を [モニターのオーナー]、[勤怠表]、または [ノードのオーナー] として指定できます。
[Data Quality 監視オーナー]: アラート情報は、現在の品質モニターの [基本設定] セクションで設定された [品質監視オーナー] に送信されます。
[勤怠表]: モニターに関連付けられた監視ルールがトリガーされてアラートが生成されると、システムは勤怠表の当日の担当者にアラート通知を送信します。
[ノードのオーナー]: アラート通知は、モニターに関連付けられたスケジューリングノードの [オーナー] に送信されます。
次のステップ
モニターが実行された後、左側のナビゲーションウィンドウで [品質 O&M] を選択し、[モニター] と [実行記録] をクリックして、指定されたテーブルの品質チェックステータスと完全な品質ルールチェックレコードを表示できます。
付録
付録 1: 変動率と分散の計算式
変動率の計算式:
変動率 = (サンプル値 - ベースライン値)/ベースライン値サンプル値: 当日のサンプル値。たとえば、1 日以内の SQL タスクのテーブル行数の変動をチェックする場合、サンプル値はその日のパーティション内のテーブル行数です。
ベースライン値: 過去 N 日間から収集された比較値。
説明1 日以内の SQL タスクのテーブル行数の変動をチェックする場合、ベースライン値は前日のパーティション内のテーブル行数です。7 日以内の SQL タスクのテーブル行数の平均変動をチェックする場合、ベースライン値は過去 7 日間の平均テーブル行数です。
分散の計算式:
(現在のサンプル値 - 過去 N 日間の平均値)/標準偏差説明上記の式を使用して、BIGINT や DOUBLE フィールドなどの数値フィールドの変動分散のみを計算できます。
付録 2: 組み込みパーティションフィルター式
$[yyyymmdd-1]
パーティションは日次パーティションです。データタイムスタンプに一致するパーティションデータをチェックする必要があります。
$[yyyymmdd-1]/hour=$[hh24]
パーティションはレベル 2 パーティションです。スケジューリング日のすべてのレベル 2 パーティションをチェックする必要があります。
$[yyyymmdd]
パーティションは日次パーティションです。スケジューリング日のパーティションデータをチェックする必要があります。
$[yyyymmddhh24miss]
パーティションには、20211216174847 などの 24 時間形式の時刻情報が含まれています。bizdate で指定された日の特定の時点のパーティションデータをチェックする必要があります。
$[yyyymmddhh24miss-1/24]
パーティションには、20211216174847 などの 24 時間形式の時刻情報が含まれています。bizdate で指定された日の特定の時点より 1 時間前のパーティションデータをチェックする必要があります。
$[yyyymmdd]000000
パーティションは、20211216000000 など、毎日 00:00 のパーティションです。bizdate で指定された日の 00:00 のパーティションデータをチェックする必要があります。
$[yyyymmdd-7]
パーティションは、20211216 などの日次パーティションです。スケジューリング日より 7 日前のパーティションをチェックする必要があります。
$[hh24miss-1/24]
パーティションは、180000 などの時間単位のパーティションです。スケジューリング時刻より 1 時間前のパーティションをチェックする必要があります。
$[hh24miss-30/24/60]
パーティションは、180000 などの時間単位のパーティションです。スケジューリング時刻より 30 分前のパーティションをチェックする必要があります。
$[add_months(yyyymmdd,-1)]
パーティションは、20211208 などの日次パーティションです。スケジューリング日より 1 か月前のパーティションをチェックする必要があります。