
みなさま、こんにちは。Y.Yです。
今回は、Google Cloud(GCP)で現在(本記事執筆時点)プレビューで公開されているDataplexのAutoDQに関する記事です。
AutoDQを使うと、以下のような指定したルールに基づいてデータの品質をチェックすることができます。
・範囲チェック(格納されている数値データは0以上1000以下かなど)
・Not Nullチェック(NULLデータが含まれていないか)
・一意性チェック(重複データが含まれていないか)
・正規表現チェック(○○から始まる文字列データが入っているかなど)
など
本記事ではAutoDQを使い、人口データテーブルに対して、人口データが0より大きい値で構成されていることを確認し、0以下のデータが含まれていたらアラートを飛ばしてみます。
是非ご覧ください!
今回は、Google Cloud(GCP)で現在(本記事執筆時点)プレビューで公開されているDataplexのAutoDQに関する記事です。
AutoDQを使うと、以下のような指定したルールに基づいてデータの品質をチェックすることができます。
・範囲チェック(格納されている数値データは0以上1000以下かなど)
・Not Nullチェック(NULLデータが含まれていないか)
・一意性チェック(重複データが含まれていないか)
・正規表現チェック(○○から始まる文字列データが入っているかなど)
など
本記事ではAutoDQを使い、人口データテーブルに対して、人口データが0より大きい値で構成されていることを確認し、0以下のデータが含まれていたらアラートを飛ばしてみます。
是非ご覧ください!
設定
まずは、データ品質スキャンの設定を行っていきます。
ConsoleでDataplexのデータ品質画面を開き、「データ品質スキャンを作成」を押下します。
スキャンID、スキャンするテーブル、範囲を指定します。
スキャンするテーブルは、Dataplexで定義したレイク・ゾーン・アセット内のテーブルから選択できます。
(レイク・ゾーン・アセットの設定はDataplexプロファイル機能の記事で行ったため省略します。)
範囲はデータ全体かインクリメンタル(タイムスタンプ列を指定)のいずれかです。
データ品質ルールを定めます。
今回は、「推奨/事前定義済み」のルールを指定します。
チェック対象の列とルールのソースを指定します。
ルールを追加したら編集ボタンを押下して、範囲を指定します。
今回は0より大きければ合格値です。最小値に0を入れます。
(下のチェックを設定すると0は合格に含まれません)
最後にスケジュールを指定します。今回はオンデマンドにします。
(繰り返しを指定すれば、データ品質スキャンを定期実行できます。)
ConsoleでDataplexのデータ品質画面を開き、「データ品質スキャンを作成」を押下します。

スキャンID、スキャンするテーブル、範囲を指定します。
スキャンするテーブルは、Dataplexで定義したレイク・ゾーン・アセット内のテーブルから選択できます。
(レイク・ゾーン・アセットの設定はDataplexプロファイル機能の記事で行ったため省略します。)
範囲はデータ全体かインクリメンタル(タイムスタンプ列を指定)のいずれかです。

データ品質ルールを定めます。
今回は、「推奨/事前定義済み」のルールを指定します。

チェック対象の列とルールのソースを指定します。

ルールを追加したら編集ボタンを押下して、範囲を指定します。

今回は0より大きければ合格値です。最小値に0を入れます。
(下のチェックを設定すると0は合格に含まれません)

最後にスケジュールを指定します。今回はオンデマンドにします。
(繰り返しを指定すれば、データ品質スキャンを定期実行できます。)

データ品質スキャン実行
スキャンの作成が完了したので実行してみます。
作成したスキャンのページを開き、「今すぐ実行」を押下します。
データが正常なときの実行結果です。
エラー発生時(チェックに引っかかるデータがあるとき)の実行結果です。
実行結果の画面からは
・スキャンしたレコード数
・エラー数
・エラーレコードを取得するSQL
・ジョブのログ
などが確認できました。
作成したスキャンのページを開き、「今すぐ実行」を押下します。

正常時

エラー発生時

実行結果の画面からは
・スキャンしたレコード数
・エラー数
・エラーレコードを取得するSQL
・ジョブのログ
などが確認できました。
アラート設定
最後に、Cloud LoggingとCloud Monitoringを用いて、スキャンでエラーになった際にアラートを飛ばす設定を行ってみます。
Cloud Loggingでログベースの指標を作成します。
ログフィルタには以下の式を入力します。
ログベースの指標を作成したら、アラートを作成します。
指標を作成すると、下図のように「指標に基づくアラートを作成する」と表示されます。
押下してアラート作成画面に移ります。
metricには先程作成したログベースの指標をフィルタリングする式が入力されます。
指標が1度でもカウントされたらアラートが飛ぶように設定していきます。
アラートを作成できたら、もう一度データ品質スキャンを実行してみます。
エラーデータがある状態で実行したところ、以下のアラートメールが届きました。
アラート作成

ログフィルタには以下の式を入力します。
resource.type="dataplex.googleapis.com/DataScan"
AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED
AND resource.labels.resource_container="projects/{プロジェクトNo}"
AND resource.labels.datascan_id="{スキャンID}
AND NOT jsonPayload.dataQuality.passed=true

ログベースの指標を作成したら、アラートを作成します。
指標を作成すると、下図のように「指標に基づくアラートを作成する」と表示されます。
押下してアラート作成画面に移ります。

metricには先程作成したログベースの指標をフィルタリングする式が入力されます。
指標が1度でもカウントされたらアラートが飛ぶように設定していきます。


アラート確認
エラーデータがある状態で実行したところ、以下のアラートメールが届きました。

まとめ
今回は、DataplexのAutoDQを実際に使ってみました。
ルールに基づいたデータの品質チェックをスケジューリングできるのは便利ですね。
データを定期連携するようなシステムで効果を発揮しそうです。
皆さんも是非使ってみてください!
ご覧いただきありがとうございました。
当社、システムサポートは、Google Cloudの導入・移行・運営支援を行っています。
お問い合わせは以下よりお願いいたします。
ルールに基づいたデータの品質チェックをスケジューリングできるのは便利ですね。
データを定期連携するようなシステムで効果を発揮しそうです。
皆さんも是非使ってみてください!
ご覧いただきありがとうございました。
当社、システムサポートは、Google Cloudの導入・移行・運営支援を行っています。
お問い合わせは以下よりお願いいたします。