2024年5月31日

【Google Cloud】Dataplexデータ品質について検証してみた(1/2)


Content
こんにちは。Google Cloud研究開発チームです。
今回は、Dataplexの「データ品質」の以下機能のうち、「①自動データ品質」について深堀しようと思います。
・データ品質管理
├①自動データ品質
└②データ品質タスク
・データプロファイリング
└③データプロファイリング

「自動データ品質」は、品質要件を定義し、その定義に基づいてデータを検証する機能です。
品質要件の定義には、以下を使用することができます。
 

本記事では、このうち、「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年以外のデータを追加します。
データの追加後にジョブの実行結果を見ると、レコード数の増加が確認でき、エラーになっていることも確認できます。

2024年5月31日 【Google Cloud】Dataplexデータ品質について検証してみた(1/2)

Category Google Cloud

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら