このトピックでは、Data Quality の監視ルールを使用して、データ同期ノードが毎日スケジュールされるときに発生する例外を検出する方法について説明します。このトピックでは、ユーザー情報テーブル ods_user_info_d_spark を使用し、ユーザー情報テーブルに同期される行数が 0 より大きいかどうかを監視する強制ルールと、テーブル内のビジネスプライマリキーが一意であるかどうかを監視する弱ルールがテーブルに設定されています。テーブルを生成するデータ同期ノードが毎日スケジュールされると、ルールがトリガーされ、ソースデータの欠落とプライマリキーの重複例外をリアルタイムで検出し、ノードの下流コンピューティングの信頼性を確保します。Data Quality で監視ルールを設定してデータ品質を監視するには、次のセクションをご参照ください。
前提条件
データは同期され、処理されます。
ApsaraDB RDS for MySQL テーブル ods_user_info_d の基本ユーザー情報は、Data Integration を使用して E-MapReduce (EMR) Serverless Spark ワークスペースに作成された ods_user_info_d_spark テーブルに同期されます。
Object Storage Service (OSS) の user_log.txt にあるユーザーの Web サイトアクセスログは、Data Integration を使用して EMR Serverless Spark ワークスペースに作成された ods_raw_log_d_spark テーブルに同期されます。
収集されたデータは、Data Studio で基本ユーザープロファイルデータに処理されます。
データ品質監視要件の分析
この例では、Data Quality を使用して、ユーザープロファイル分析ケースのソースデータへの変更と、ソースデータに対して抽出、変換、ロード (ETL) 操作が実行されたときに生成されるダーティデータを迅速に検出します。次の表に、ユーザープロファイル分析および処理手順の監視要件を示します。
テーブル名 | 詳細な要件 |
ods_raw_log_d_spark | 生ログデータテーブルに同期される行数が毎日 0 より大きいかどうかを監視する強制ルールを設定します。これにより、生ログデータが毎日正常に取得され、データ欠落による後続のコンピューティングへの影響を防ぎます。 |
ods_user_info_d_spark | ユーザー情報テーブルに同期される行数が毎日 0 より大きいかどうかを監視する強制ルールと、テーブル内のビジネスプライマリキーが毎日一意であるかどうかを監視する弱ルールを設定します。これにより、ユーザー情報が毎日正常に取得され、データの重複を防ぎ、後続のコンピューティングの正確性を確保します。 |
dwd_log_info_di_spark | 監視ルールを設定せずにノードを実行します。 |
dws_user_info_all_di_spark | 監視ルールを設定せずにノードを実行します。 |
ads_user_info_1d_spark | ユーザー情報テーブルの行数の変動を毎日監視するルールを設定します。このルールは、毎日のユニークビジター (UV) の変動を観察し、アプリケーションのステータスをいち早く把握するのに役立ちます。 |
次のセクションの手順を実行して、ods_user_info_d_spark テーブルの監視ルールを設定し、定周期スケジューリングに基づいて生成されるテーブルデータの品質を監視できます。
ステップ 1: [テーブルごとに設定] ページに移動する
Data Quality ページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[Data Quality に移動] をクリックします。
[テーブルごとに設定] ページに移動します。
Data Quality ページの左側のナビゲーションウィンドウで、 を選択します。[テーブルごとに設定] ページで、次のフィルター条件に基づいて目的のテーブルを検索します。
[接続] セクションで、[E-MapReduce] を選択します。
[テーブルごとに設定] ページの右側で、フィルター条件を指定して
ods_user_info_d_sparkテーブルを検索します。
検索結果で目的のテーブルを見つけ、[アクション] 列の [ルール管理] をクリックします。テーブルの [テーブル品質詳細] ページが表示されます。次のセクションでは、テーブルの設定について説明します。
ステップ 2: 監視ルールを設定する
このセクションでは、指定されたパーティションにデータが含まれているかどうかを監視するルールを ods_user_info_d_spark テーブルに設定します。設定には、監視ルールの作成、ルールのトリガーメソッドの指定、ルールによって検出された例外の処理ポリシーの指定が含まれます。
監視範囲を選択します。
[監視] タブで、[監視の作成] をクリックします。
[データ範囲] パラメーターを
dt=$[yyyymmdd-1]に設定します。説明定周期スケジューリングに基づいて生成されるテーブルデータを監視するには、[データ範囲] パラメーターの値が、当日にテーブルに対して生成されたパーティションに対応していることを確認してください。
監視ルールを作成します。
このセクションでは、テーブル内の行数が 0 より大きいかどうかを監視するルールを
ods_user_info_d_sparkテーブルに設定します。監視ルールの設定方法の詳細については、「単一テーブルの監視ルールを設定する」をご参照ください。[監視の作成] ページで、[ルールの作成] をクリックします。[ルールの作成] パネルが表示されます。
[ルールの作成] パネルの [システムテンプレート] タブで、[テーブルが空でない] ルールを見つけて [使用] をクリックします。パネルの右側で、[重要度] パラメーターを [強制ルール] に設定します。
説明この例では、ルールは 強制 ルールとして定義されています。これは、
ods_user_info_d_sparkテーブルの行数が 0 であることが判明した場合、アラートがトリガーされ、子孫ノードの実行がブロックされることを示します。[ルールの作成] パネルの [システムテンプレート] タブで、[一意の値。固定値] ルールを見つけて [使用] をクリックします。パネルの右側で、[ルール範囲]、[監視しきい値]、および [重要度] パラメーターを設定します。
[ルール範囲]:
uid(STRING)に設定します。[監視しきい値]:
通常しきい値パラメーターでは、比較演算子を = に、値を 0 に設定します。[重要度]:
弱ルールに設定します。
[決定] をクリックして、設定した監視ルールを保存します。
ルールのトリガーメソッドを指定します。
[トリガーメソッド] パラメーターを [本番環境でのノードスケジューリングによってトリガー] に設定し、データ同期中に作成された
ods_user_info_d_sparkノードを選択します。ルールによって検出された例外の処理ポリシーを指定します。
ビジネス要件に基づいて、処理ポリシーを [ノードの実行をブロック] または [受信者にアラート通知を送信] に設定します。
設定が完了したら、[保存] をクリックしてモニターの設定を保存します。
ステップ 3: モニターでテスト実行を実行する
設定が完了したら、テスト実行を実行して、モニターに関連付けられている監視ルールの設定が期待どおりに機能するかどうかを確認できます。ルールの設定が正しく、期待どおりであることを確認するには、モニターを作成してルールを関連付けた後、モニターでテスト実行を実行して、モニターの監視効果を確認します。
[ルール管理] タブの [監視の視点] セクションで、作成したモニターを選択します。次に、タブの右側にある [テスト実行] をクリックします。[テスト実行] ダイアログボックスが表示されます。
[テスト実行] ダイアログボックスで、[スケジューリング時間] パラメーターを設定し、[テスト実行] をクリックします。
テスト実行が完了したら、[詳細の表示] をクリックして、データがテストに合格したかどうかを確認します。
ステップ 4: モニターをサブスクライブする
監視ルールを設定した後、次の操作を実行して、アラート通知方法とアラート通知の送信先となる受信者を設定できます。
[ルール管理] タブの [監視の視点] セクションで、作成したモニターを選択します。
タブの右側にある [アラートサブスクリプション] をクリックします。
[アラートサブスクリプション] ダイアログボックスで、[通知方法] と [受信者] パラメーターを設定し、[アクション] 列の [保存] をクリックします。
サブスクリプション設定が完了したら、左側のナビゲーションウィンドウで を選択します。次に、[モニター] ページで [マイサブスクリプション] を選択して、サブスクライブしたモニターを表示および変更します。
次のステップ
データが処理された後、DataAnalysis を使用してデータを視覚化できます。詳細については、「ダッシュボードでデータを視覚化する」をご参照ください。