このドキュメントでは、組み込みの BigQuery テーブルと外部の BigQuery テーブルのデータ品質チェックをスケジューリングして実行できるようにする Dataplex Universal Catalog のデータ品質タスクを作成する方法について説明します。
詳細については、データ品質タスクの概要をご覧ください。
始める前に
このドキュメントでは、データ品質タスクを作成する既存の Dataplex Universal Catalog レイクがあることを前提としています。
Google API とサービスを有効にする
Dataproc API を有効にします。
ネットワークとサブネットワークでプライベート 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 つ以上の CloudDQ YAML 仕様ファイルを作成します。必要な構文の詳細については、このドキュメントの仕様ファイルについてのセクションをご覧ください。
YAML 仕様ファイルを
.yml形式または.yaml形式で保存します。複数の YAML 仕様ファイルを作成する場合は、すべてのファイルを 1 つの ZIP アーカイブに保存します。 - Cloud Storage バケットを作成する。
- Cloud Storage バケットに仕様ファイルをアップロードします。
仕様ファイルについて
CloudDQ YAML 仕様ファイルには、次のセクションが必要です。
ルール(最上位の
rulesYAML ノードの下に定義される): 実行するルールのリスト。これらのルールは、NOT_NULLやREGEXなどの事前定義ルールタイプから作成することも、CUSTOM_SQL_EXPRやCUSTOM_SQL_STATEMENTなどのカスタム SQL ステートメントを拡張することもできます。CUSTOM_SQL_EXPRステートメントは、custom_sql_exprがFalseと評価したあらゆる行を失敗として報告します。CUSTOM_SQL_STATEMENTステートメントは、ステートメント全体によって返されたあらゆる値を失敗として報告します。行フィルタ(最上位の
row_filtersYAML ノードで定義される): SQL 式。ブール値を定義して、検証のために基盤となるエンティティ サブジェクトからデータのサブセットをフェッチします。ルール バインディング(最上位の
rule_bindingsYAML ノードの下で定義される): テーブルに適用するrulesとrule filtersを定義します。ルールのディメンション(
rule_dimensionsYAML ノードで定義): ルールが対応するdimensionフィールドで定義できるデータ品質ルールのディメンションの許可リストを定義します。例:
rule_dimensions: - consistency - correctness - duplication - completeness - conformance
ルールでは、
dimensionフィールドは省略可能です。いずれかのルールにdimensionが含まれている場合、ルールのディメンションのセクションは必須です。
詳細については、CloudDQ リファレンス ガイドと仕様ファイルのサンプルをご覧ください。
結果を保存するデータセットを作成する
-
結果を保存するには、BigQuery データセットを作成します。
データセットは、データ品質タスクを実行するテーブルと同じリージョンに存在する必要があります。
Dataplex Universal Catalog はこのデータセットを使用して、結果を保存する選択したテーブルを作成または再利用します。
サービス アカウントを作成する
次の Identity and Access Management(IAM)のロールと権限を持つサービス アカウントを作成します。
- YAML 仕様を含む Cloud Storage パスへの読み取りアクセス権。Cloud Storage バケットにはストレージ オブジェクト閲覧者のロール(
roles/storage.objectViewer)を使用できます。 - 検証するデータを含む BigQuery データセットに対する読み取りアクセス権。BigQuery データ閲覧者のロール(
roles/bigquery.dataViewer)を使用できます。 - テーブルを作成して(必要な場合)、結果をそのテーブルに書き込むための BigQuery データセットへの書き込みアクセス権。データセット レベルで BigQuery データ編集者のロール(
roles/bigquery.dataEditor)を使用できます。 - プロジェクトで BigQuery ジョブを作成するためのプロジェクト レベルの BigQuery ジョブユーザーのロール(
roles/bigquery.jobUser)。 - プロジェクトまたはレイクのレベルでの Dataplex メタデータ読者のロール(
roles/dataplex.metadataReader)。 - プロジェクト レベルでの Service Usage ユーザーのロール(
roles/serviceusage.serviceUsageConsumer)。 - Dataproc ワーカーのロール(
roles/dataproc.worker)。 - ジョブを送信するユーザーに付与される
iam.serviceAccounts.actAs権限。 - Dataplex Universal Catalog レイク サービス アカウントに付与されたサービス アカウント ユーザーのロール。Dataplex Universal Catalog レイク サービス アカウントは Google Cloud コンソールで確認できます。
詳細設定を使用する
この手順は省略可能です。
BigQuery はデフォルトで、現在のプロジェクトでデータ品質チェックを実行します。別のプロジェクトを選択してこの BigQuery ジョブを実行できます。タスクの
--execution-argsプロパティには--gcp_project_idTASK_ARGS引数を使用します。BigQuery クエリを実行するように指定されたプロジェクト ID が、サービス アカウント(
--execution-service-accountで指定)が作成されるプロジェクトと異なる場合は、プロジェクト間のサービス アカウントの使用を無効にする(iam.disableServiceAccountCreation)組織のポリシーがオフになっていることを確認します。また、BigQuery クエリが実行されているプロジェクトの BigQuery ジョブ スケジュールにサービス アカウントがアクセスできることを確認してください。
制限事項
特定のデータ品質タスクに指定するすべてのテーブルは、同じ Google Cloudリージョンに属している必要があります。
データ品質タスクをスケジュール設定する
コンソール
- Google Cloud コンソールで、Dataplex Universal Catalog の [処理] ページに移動します。
- [タスクの作成] をクリックします。
- [データ品質の確認] カードで、[タスクを作成] をクリックします。
- [Dataplex レイク] で、レイクを選択します。
- [ID] に ID を入力します。
- [データ品質仕様] セクションで、次のようにします。
- [Select GCS file] フィールドで [参照] をクリックします。
Cloud Storage バケットを選択します。
[Select] をクリックします。
[結果テーブル] セクションで、次のようにします。
[BigQuery データセットの選択] フィールドで、[参照] をクリックします。
検証結果を格納する BigQuery データセットを選択します。
[選択] をクリックします。
[BigQuery テーブル] フィールドに、結果を保存するテーブルの名前を入力します。テーブルが存在しない場合は、Dataplex Universal Catalog によって作成されます。
dq_summaryという名前は内部処理タスク用に予約されているため、使用しないでください。
[サービス アカウント] セクションで、[ユーザー サービス アカウント] メニューからサービス アカウントを選択します。
[続行] をクリックします。
[スケジュールの設定] セクションで、データ品質タスクの実行スケジュールを構成します。
[作成] をクリックします。
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-id と target_bigquery_summary_table のリージョンと同じにする必要があります。 |
gcp-bq-dataset-id |
rule_binding ビューと中間データ品質サマリーの結果を保存するために使用される BigQuery データセットです。 |
target-bigquery-summary-table |
データ品質チェックの最終結果が保存される BigQuery テーブルのテーブル ID 参照。ID 値 dq_summary は内部処理タスク用に予約されているため、使用しないでください。 |