2024年5月31日
【Google Cloud】Dataplexデータ品質について検証してみた(1/2)
-
- Category Google Cloud
![](https://sight-r.sts-inc.co.jp/wp/wp-content/uploads/2023/09/google_cloud_thumb.jpg)
今回は、Dataplexの「データ品質」の以下機能のうち、「①自動データ品質」について深堀しようと思います。
・データ品質管理
├①自動データ品質
└②データ品質タスク
・データプロファイリング
└③データプロファイリング
「自動データ品質」は、品質要件を定義し、その定義に基づいてデータを検証する機能です。
品質要件の定義には、以下を使用することができます。
- 組み込みのルール
- SQLを使用した独自のルール ※本記事
- 「データプロファイリング」を使用したルール
本記事では、このうち、「SQLを使用した独自のルール」を使用した流れについて確認していきます。
SQLを使用した独自のルール(カスタムSQLルール)について
今回は、以下サポートされているSQLを使用した独自のルール(カスタムSQLルール)の作成手順と結果を確認していきます。
- SQL 行チェックルール
- SQL 集計チェックルール
まず共通の手順として、「データ品質スキャンの作成」と「ルールの追加」があります。
※「データ品質スキャンの作成」は過去の投稿にて説明しておりますので、ぜひご覧ください。
以下から任意のルールを選択します。
SQL 行チェックルール
対象列に列レベルで、品質を確認します。
①対象テーブルを確認してみましょう。
パブリックデータの「bigquery-public-data.iowa_liquor_sales.sales」テーブルを利用します。
「vendor_number」列はstring型のため、integer型とfloat型が混在しているようなので、今回は「vendor_number」列を対象にルールを設定してみます。
②「ルール」を定義していきます。(必須項目のみ記載します。)
- ディメンション:以下から選択します。
完全性、精度、一貫性、有効性、一意性、鮮度、ボリューム - 合格のしきい値(%):Trueの割合を記載します。指定した値以下の場合にジョブが失敗となります。
- 列名:ルールを適用する対象列を指定します。
- SQL:カスタムSQLを記載します。
今回はIntegerの場合(数字のみ)をTrueとしたカスタムルールを記載します。
REGEXP_EXTRACT(vendor_number, ‘^[0-9]+$’) IS NOT NULL
③ジョブの結果を確認します。
ジョブの結果がエラーのため、少なくともInteger以外があることが分かります。
「失敗した行数」から「vendor_number」列にInteger以外が23.13%ある結果となりました。
SQL 集計チェックルール
対象列の全体のデータを集計し、品質を確認します。
①対象テーブルを確認してみましょう。
パブリックデータの「bigquery-public-data.austin_incidents.incidents_2008」テーブルを利用します。
2008年用のテーブルのため、「date」列に2008年のデータのみがあるのかを確認します。
②「ルール」を定義していきます。(必須項目のみ記載します。)
「SQL 集計チェックルール」とほとんど同じ項目です。
集計チェックルールは列全体に対して一度だけTureかFalseを返すため、しきい値はありません。
- ディメンション:上記記載と同じ内容です。
- 列名:ルールを適用する対象列を指定します。
- SQL:カスタムSQLを記載します。
「date」列に2008年以外のデータがあるかを確認します。
min(date) >= “2008-01-01” AND max(date) <= “2008-12-31”
③ジョブの結果を確認します。
成功しているため、2008年以外のデータがないことが分かります。
④2008年以外のデータをテーブルに追加して、再度ジョブの結果を確認します。
失敗した結果を見るために、2008年以外のデータを追加します。
データの追加後にジョブの実行結果を見ると、レコード数の増加が確認でき、エラーになっていることも確認できます。
ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。