データ品質タスクを使用する

このドキュメントでは、組み込みの BigQuery テーブルと外部の BigQuery テーブルのデータ品質チェックをスケジューリングして実行できるようにする Dataplex Universal Catalog のデータ品質タスクを作成する方法について説明します。

詳細については、データ品質タスクの概要をご覧ください。

始める前に

このドキュメントでは、データ品質タスクを作成する既存の Dataplex Universal Catalog レイクがあることを前提としています。

Google API とサービスを有効にする

  1. Dataproc API を有効にします。

    API の有効化

  2. ネットワークとサブネットワークでプライベート Google アクセスを有効にします。Dataplex Universal Catalog のデータ品質タスクで使用する予定のネットワークで、プライベート Google アクセスを有効にします。Dataplex Universal Catalog のデータ品質タスクを作成する際にネットワークまたはサブネットワークを指定しない場合、Dataplex Universal Catalog はデフォルトのサブネットを使用します。その場合、デフォルトのサブネットでプライベート Google アクセスを有効にする必要があります。

仕様ファイルを作成する

Dataplex Universal Catalog は、ドライバ プログラムとしてオープンソースの CloudDQ を使用します。Dataplex Universal Catalog のデータ品質チェック要件は、CloudDQ YAML 仕様ファイルで定義されます。

データ品質タスクへの入力として、単一の YAML ファイル、または 1 つ以上の YAML ファイルを含む単一の ZIP アーカイブを作成できます。データ品質チェックの要件は、セクションごとに 1 ファイルで、別々の YAML 仕様ファイルにキャプチャすることをおすすめします。

仕様ファイルを準備する手順は次のとおりです。

  1. データ品質チェックの要件を定義する 1 つ以上の CloudDQ YAML 仕様ファイルを作成します。必要な構文の詳細については、このドキュメントの仕様ファイルについてのセクションをご覧ください。

    YAML 仕様ファイルを .yml 形式または .yaml 形式で保存します。複数の YAML 仕様ファイルを作成する場合は、すべてのファイルを 1 つの ZIP アーカイブに保存します。

  2. Cloud Storage バケットを作成する
  3. Cloud Storage バケットに仕様ファイルをアップロードします。

仕様ファイルについて

CloudDQ YAML 仕様ファイルには、次のセクションが必要です。

  • ルール(最上位の rules YAML ノードの下に定義される): 実行するルールのリスト。これらのルールは、NOT_NULLREGEX などの事前定義ルールタイプから作成することも、CUSTOM_SQL_EXPRCUSTOM_SQL_STATEMENT などのカスタム SQL ステートメントを拡張することもできます。CUSTOM_SQL_EXPR ステートメントは、custom_sql_exprFalse と評価したあらゆる行を失敗として報告します。CUSTOM_SQL_STATEMENT ステートメントは、ステートメント全体によって返されたあらゆる値を失敗として報告します。

  • 行フィルタ(最上位の row_filters YAML ノードで定義される): SQL 式。ブール値を定義して、検証のために基盤となるエンティティ サブジェクトからデータのサブセットをフェッチします。

  • ルール バインディング(最上位の rule_bindings YAML ノードの下で定義される): テーブルに適用する rulesrule filters を定義します。

  • ルールのディメンション(rule_dimensions YAML ノードで定義): ルールが対応する dimension フィールドで定義できるデータ品質ルールのディメンションの許可リストを定義します。

    例:

    rule_dimensions:
      - consistency
      - correctness
      - duplication
      - completeness
      - conformance

    ルールでは、dimension フィールドは省略可能です。いずれかのルールに dimension が含まれている場合、ルールのディメンションのセクションは必須です。

詳細については、CloudDQ リファレンス ガイド仕様ファイルのサンプルをご覧ください。

結果を保存するデータセットを作成する

  • 結果を保存するには、BigQuery データセットを作成します。

    データセットは、データ品質タスクを実行するテーブルと同じリージョンに存在する必要があります。

    Dataplex Universal Catalog はこのデータセットを使用して、結果を保存する選択したテーブルを作成または再利用します。

サービス アカウントを作成する

次の Identity and Access Management(IAM)のロールと権限を持つサービス アカウントを作成します。

詳細設定を使用する

この手順は省略可能です。

  • BigQuery はデフォルトで、現在のプロジェクトでデータ品質チェックを実行します。別のプロジェクトを選択してこの BigQuery ジョブを実行できます。タスクの --execution-args プロパティには --gcp_project_id TASK_ARGS 引数を使用します。

  • BigQuery クエリを実行するように指定されたプロジェクト ID が、サービス アカウント(--execution-service-account で指定)が作成されるプロジェクトと異なる場合は、プロジェクト間のサービス アカウントの使用を無効にするiam.disableServiceAccountCreation)組織のポリシーがオフになっていることを確認します。また、BigQuery クエリが実行されているプロジェクトの BigQuery ジョブ スケジュールにサービス アカウントがアクセスできることを確認してください。

制限事項

特定のデータ品質タスクに指定するすべてのテーブルは、同じ Google Cloudリージョンに属している必要があります。

データ品質タスクをスケジュール設定する

コンソール

  1. Google Cloud コンソールで、Dataplex Universal Catalog の [処理] ページに移動します。

    [処理] に移動

  2. [タスクの作成] をクリックします。
  3. [データ品質の確認] カードで、[タスクを作成] をクリックします。
  4. [Dataplex レイク] で、レイクを選択します。
  5. [ID] に ID を入力します。
  6. [データ品質仕様] セクションで、次のようにします。
    1. [Select GCS file] フィールドで [参照] をクリックします。
    2. Cloud Storage バケットを選択します。

    3. [Select] をクリックします。

  7. [結果テーブル] セクションで、次のようにします。

    1. [BigQuery データセットの選択] フィールドで、[参照] をクリックします。

    2. 検証結果を格納する BigQuery データセットを選択します。

    3. [選択] をクリックします。

    4. [BigQuery テーブル] フィールドに、結果を保存するテーブルの名前を入力します。テーブルが存在しない場合は、Dataplex Universal Catalog によって作成されます。dq_summary という名前は内部処理タスク用に予約されているため、使用しないでください。

  8. [サービス アカウント] セクションで、[ユーザー サービス アカウント] メニューからサービス アカウントを選択します。

  9. [続行] をクリックします。

  10. [スケジュールの設定] セクションで、データ品質タスクの実行スケジュールを構成します。

  11. [作成] をクリックします。

gcloud CLI

Dataplex Universal Catalog タスクの gcloud CLI コマンドを使用したデータ品質タスクの実行例を次に示します。

export USER_CLOUDDQ_YAML_CONFIGS_GCS_PATH="USER_CLOUDDQ_YAML_CONFIGS_GCS_PATH"

# Google Cloud project where the Dataplex Universal Catalog task is created.
export GOOGLE_CLOUD_PROJECT="GOOGLE_CLOUD_PROJECT"

# Google Cloud region for the Dataplex Universal Catalog lake.
export DATAPLEX_REGION_ID="DATAPLEX_REGION_ID"

# Public Cloud Storage bucket containing the prebuilt data quality executable artifact. There is one bucket for each Google Cloud region.
export DATAPLEX_PUBLIC_GCS_BUCKET_NAME="dataplex-clouddq-artifacts-${DATAPLEX_REGION_ID}"

# The Dataplex Universal Catalog lake where your task is created.
export DATAPLEX_LAKE_ID="DATAPLEX_LAKE_ID"

# The service account used for running the task. Ensure that this service account
has sufficient IAM permissions on your project, including
BigQuery Data Editor, BigQuery Job User,
Dataplex Universal Catalog Editor, Managed Service for Apache Spark Worker, and Service
Usage Consumer.
export DATAPLEX_TASK_SERVICE_ACCOUNT="DATAPLEX_TASK_SERVICE_ACCOUNT"

# If you want to use a different dataset for storing the intermediate data quality summary results
and the BigQuery views associated with each rule binding, use the following:
export CLOUDDQ_BIGQUERY_DATASET="CLOUDDQ_BIGQUERY_DATASET"

# The BigQuery dataset where the final results of the data quality checks are stored.
This could be the same as CLOUDDQ_BIGQUERY_DATASET.
export TARGET_BQ_DATASET="TARGET_BQ_DATASET"

# The BigQuery table where the final results of the data quality checks are stored.
export TARGET_BQ_TABLE="TARGET_BQ_TABLE"

# The unique identifier for the task.
export TASK_ID="TASK_ID"

gcloud dataplex tasks create \
    --location="${DATAPLEX_REGION_ID}" \
    --lake="${DATAPLEX_LAKE_ID}" \
    --trigger-type=ON_DEMAND \
    --execution-service-account="$DATAPLEX_TASK_SERVICE_ACCOUNT" \
    --spark-python-script-file="gs://${DATAPLEX_PUBLIC_GCS_BUCKET_NAME}/clouddq_pyspark_driver.py" \
    --spark-file-uris="gs://${DATAPLEX_PUBLIC_GCS_BUCKET_NAME}/clouddq-executable.zip","gs://${DATAPLEX_PUBLIC_GCS_BUCKET_NAME}/clouddq-executable.zip.hashsum","${USER_CLOUDDQ_YAML_CONFIGS_GCS_PATH}" \
    --execution-args=^::^TASK_ARGS="clouddq-executable.zip, ALL, ${USER_CLOUDDQ_YAML_CONFIGS_GCS_PATH}, --gcp_project_id='GOOGLE_CLOUD_PROJECT', --gcp_region_id='${DATAPLEX_REGION_ID}', --gcp_bq_dataset_id='${TARGET_BQ_DATASET}', --target_bigquery_summary_table='${GOOGLE_CLOUD_PROJECT}.${TARGET_BQ_DATASET}.${TARGET_BQ_TABLE}'," \
    "$TASK_ID"
パラメータ 説明
USER_CLOUDDQ_YAML_CONFIGS_GCS_PATH データ品質タスクのデータ品質 YAML 構成入力への Cloud Storage パス。.yml 形式または .yaml 形式の単一の YAML ファイル、または複数の YAML ファイルを含む ZIP アーカイブを使用できます。
GOOGLE_CLOUD_PROJECT Dataplex Universal Catalog タスクと BigQuery ジョブが作成される Google Cloud プロジェクト。
DATAPLEX_REGION_ID データ品質タスクが作成される Dataplex Universal Catalog レイクのリージョン。
SERVICE_ACCOUNT タスクを実行するために使用されるサービス アカウント。このサービス アカウントに、始める前にセクションに概説されているとおりに十分な IAM 権限があることを確認してください。

--execution-args の場合、次の引数を、配置した引数として次の順序で渡す必要があります。

引数 説明
clouddq-executable.zip Cloud Storage の公開バケットから spark-file-uris で渡されたプリコンパイルされた実行可能ファイル。
ALL すべてのルール バインディングを実行します。または、特定のルール バインディングをカンマ区切りのリストとして指定できます。 例: RULE_1,RULE_2
gcp-project-id BigQuery クエリを実行するプロジェクト ID。
gcp-region-id データ品質検証用の BigQuery ジョブを実行するリージョン。このリージョンは、gcp-bq-dataset-idtarget_bigquery_summary_table のリージョンと同じにする必要があります。
gcp-bq-dataset-id rule_binding ビューと中間データ品質サマリーの結果を保存するために使用される BigQuery データセットです。
target-bigquery-summary-table データ品質チェックの最終結果が保存される BigQuery テーブルのテーブル ID 参照。ID 値 dq_summary は内部処理タスク用に予約されているため、使用しないでください。