データ プロファイル スキャンを作成して使用する

このページでは、Google Cloud コンソール、Google Cloud CLI、または REST API を使用してデータ プロファイル スキャンを作成する方法について説明します。

Dataplex のデータ プロファイル スキャンの詳細については、データ プロファイリングについてをご覧ください。

準備

Google Cloud コンソールで、Dataplex API を有効にします。

API の有効化

権限

BigQuery テーブルをプロファイリングするには、次の権限が必要です。

  • BigQuery テーブルでデータ プロファイル スキャンを実行するには、BigQuery テーブルを読み取る権限と、テーブルをスキャンするプロジェクトで BigQuery ジョブを作成する権限が必要です。

  • BigQuery テーブルとデータ プロファイル スキャンが異なるプロジェクトにある場合、Dataplex サービス アカウントに、対応する BigQuery テーブルの読み取り権限を付与する必要があります。

  • BigQuery データが Dataplex レイクに編成されている場合は、データ プロファイル スキャンを作成するには、Dataplex のロール roles/dataplex.metadataReaderroles/dataplex.viewer が必要です。これにより次の権限が付与されます。

    • dataplex.lakes.list
    • dataplex.lakes.get
    • dataplex.zones.list
    • dataplex.zones.get
    • dataplex.entities.list
    • dataplex.entities.get
    • dataplex.operations.get
  • Cloud Storage から BigQuery 外部テーブルをスキャンする場合は、Dataplex サービス アカウントに Cloud Storage オブジェクト閲覧者(roles/storage.objectViewer)のロールまたはバケットに対する次の権限を割り当てます。

    • storage.buckets.get
    • storage.objects.get
  • ソーステーブルの Google Cloud コンソールの BigQuery と Data Catalog ページでデータ プロファイルのスキャン結果を公開する場合は、テーブルに対する BigQuery データ編集者(roles/bigquery.dataEditor)IAM ロールまたは bigquery.tables.update 権限を付与する必要があります。

  • スキャン結果を BigQuery テーブルにエクスポートするには、Dataplex サービス アカウントに BigQuery データ編集者(roles/bigquery.dataEditor)のロールが必要です。これにより次の権限が付与されます。

    • bigquery.datasets.get
    • bigquery.tables.create
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.update
    • bigquery.tables.updateData
  • BigQuery の列レベルのアクセス ポリシーで保護されている列にアクセスする必要がある場合は、その列に対する Dataplex サービス アカウントの権限を割り当てます。データスキャンを作成または更新するには、列に対する権限も必要です。

  • テーブルで BigQuery の行レベルのアクセス ポリシーが有効になっている場合、Dataplex サービス アカウントに表示される行のみをスキャンできます。行レベルのポリシーでは、個々のユーザーのアクセス権限は評価されません。

データスキャンのロールと権限

データ プロファイリングを使用するには、プロジェクト管理者が、すでに付与されている権限を含む事前定義ロールを割り当てるか、個々の権限を付与します。ロールは次のとおりです。

  • roles/dataplex.dataScanAdmin: DataScan リソースに対する完全アクセス権。
  • roles/dataplex.dataScanEditor: DataScan リソースに対する書き込みアクセス権。
  • roles/dataplex.dataScanViewer: DataScan リソースに対する読み取りアクセス権(結果を除く)。
  • roles/dataplex.dataScanDataViewer: DataScan リソースに対する読み取りアクセス権(結果を含む)。

次の表に、データスキャンの権限を示します。

権限名 次のことをする権限を付与します。
dataplex.datascans.create DataScan の作成
dataplex.datascans.delete DataScan の削除
dataplex.datascans.get DataScan の詳細の表示(結果を除く)
dataplex.datascans.getData DataScan の詳細の表示(結果を含む)
dataplex.datascans.list DataScan の一覧を取得する
dataplex.datascans.run DataScan を実行する
dataplex.datascans.update DataScan の説明を更新する
dataplex.datascans.getIamPolicy スキャンの現在の IAM 権限を表示する
dataplex.datascans.setIamPolicy スキャンの IAM 権限を設定する

データ プロファイル スキャンを作成する

コンソール

  1. Google Cloud コンソールで [プロファイル] ページに移動します。

    Dataplex プロファイルに移動

  2. [データ プロファイル スキャンを作成] をクリックします。

  3. [表示名] を入力します。

  4. 自動生成されたスキャン ID を変更するには、独自の ID を指定します。リソースの命名規則をご覧ください。

  5. (省略可)説明を入力します。

  6. [テーブル] フィールドで、[参照] をクリックします。

  7. テーブルを選択し、[選択] をクリックします。

  8. [スコープ] フィールドで、[増分] または [データ全体] を選択します。

    • [増分データ] を選択した場合、[タイムスタンプ列] フィールドで、BigQuery テーブルから DATE または TIMESTAMP 型の列を選択します。このテーブルは、単調に増加し、新しいレコードを識別するために使用できます。DATE 型または TIMESTAMP 型の列でパーティション分割されたテーブルの場合は、タイムスタンプ フィールドとしてパーティション列を使用することをおすすめします。
  9. データ プロファイル スキャンにサンプリングを適用するには、[サンプリング サイズ] リストでサンプリング率を選択します。

    • 0.0~100.0% の範囲のパーセンテージ値(小数点以下 3 桁まで)を選択します。
    • 大規模なデータセットの場合は、低いサンプリング率を選択します。たとえば、約 1 PB のテーブルの場合、0.1%~1.0% の値を入力すると、Dataplex は 1~10 TB のデータをサンプリングします。
    • 結果を返すには、サンプリング データに少なくとも 100 個のレコードが必要です。
    • 増分データスキャンの場合、Dataplex は最新の増分にサンプリングを適用します。
  10. 行でフィルタするには、[フィルタ] をクリックして [行をフィルタする] を選択します。

    • BigQuery 標準 SQL 構文の WHEREで使用できる有効な SQL 式を入力します。例: col1 >= 0

    • フィルタは、複数の列に対する SQL 条件の組み合わせにできます。例: col1 >= 0 AND col2 < 10

  11. (省略可)[フィルタ] をクリックします。[列をフィルタする] チェックボックスをオンにします。

    a. [列を含める] フィールドで [参照] をクリックします。

    • プロファイル スキャンに含める列を指定します。任意の列をチェックボックスで選択し、[選択] をクリックします。

    b. [列を除外] フィールドで、[参照] をクリックします。

    • プロファイル スキャンから除外する列を指定します。任意の列をチェックボックスで選択し、[選択] をクリックします。
  12. 省略可: ソーステーブルの Google Cloud コンソールの BigQuery と Data Catalog ページで、データ プロファイル スキャン結果を公開します。[BigQuery と Dataplex Catalog UI に結果を公開する] チェックボックスをオンにします。

    最新のスキャン結果は、ソーステーブルの BigQuery ページと Data Catalog ページの [データ プロファイル] タブで表示できます。ユーザーが公開されたスキャン結果にアクセスできるようにするには、公開された結果を共有するをご覧ください。

    次の場合、公開オプションを使用できない場合があります。

    • 表に必要な権限がない。
    • 結果を公開するように別のデータ品質スキャンが設定されている。

    公開された結果を表示するために必要な権限の詳細については、権限をご覧ください。

  13. 省略可: スキャン結果を BigQuery 標準テーブルにエクスポートします。[参照] をクリックして、データ プロファイルのスキャン結果を保存する既存の BigQuery データセットを選択します。

    指定したテーブルが存在しない場合は、Dataplex によって作成されます。既存のテーブルを使用している場合は、このセクションで後述するテーブル スキーマと互換性があることを確認してください。

  14. (省略可)ラベルを追加します。ラベルとは、key:value ペアで、これを使用すると、関連するオブジェクトや他の Google Cloud リソースと一緒にグループ化できます。

  15. [スケジュール オプション] で、次のオプションのいずれかを選択します。

    • 繰り返し: データ プロファイルのスキャンジョブを毎日、毎週、毎月、カスタムのうちのスケジュールで実行します。スキャンを実行する頻度と時刻を指定します。カスタムを選択した場合は、cron 形式を使用してスケジュールを指定します。

    • オンデマンド: データ プロファイル スキャンを作成し、「今すぐ実行」操作を使用していつでも実行します。

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

gcloud

データ プロファイル スキャンを作成するには、次のコマンドを実行します。

gcloud dataplex datascans create data-profile DATASCAN \
--location=LOCATION \
--data-source-entity=DATA_SOURCE_ENTITY
| --data-source-resource=DATA_SOURCE_RESOURCE

次の変数を置き換えます。

  • DATASCAN: データ プロファイル スキャンの名前。
  • LOCATION: データ プロファイル スキャンを作成する Google Cloud リージョン。
  • DATA_SOURCE_ENTITY: データ プロファイル スキャンのデータを含む Dataplex エンティティ。例: projects/test-project/locations/test-location/lakes/test-lake/zones/test-zone/entities/test-entity
  • DATA_SOURCE_RESOURCE: データ プロファイル スキャンのデータを含むリソースの名前。例: //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table

オプションの引数については、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用して、データ プロファイル スキャンを作成します。

複数のデータ プロファイル スキャンを作成する

コンソール

  1. Google Cloud コンソールで [プロファイル] ページに移動します。

    Dataplex プロファイルに移動

  2. [複数のプロファイル スキャンを作成] をクリックします。

  3. [ID 接頭辞] を入力します。Dataplex は、指定された接頭辞と一意の接尾辞を使用して、スキャン ID を自動的に生成します。

  4. すべてのデータ プロファイル スキャンの [説明] を入力します。

  5. [データセット] フィールドで [参照] をクリックします。テーブルを選択するデータセットを選択します。[選択] をクリックします。

  6. データセットがマルチリージョンの場合は、データ プロファイル スキャンを作成するリージョンを選択します。

  7. [一般的な構成オプション] を選択します。

    1. [スコープ] フィールドで、[増分] または [データ全体] を選択します。

    2. データ プロファイル スキャンにサンプリングを適用するには、[サンプリング サイズ] リストでサンプリング率を選択します。

      0.0%~100.0% の間の割合(小数点以下 3 桁まで)を選択します。

    3. すべてのスキャンの結果を表示するには、[公開] を選択します。結果は、BigQuery または Data Catalog テーブルの詳細の [プロファイル] タブで確認できます。ソーステーブルに対する bigquery.tables.update 権限があることを確認します。

    4. [スケジュール オプション] で、次のオプションのいずれかを選択します。

      1. 繰り返し: データ プロファイルのスキャンジョブをスケジュールに従って実行します。スキャンの実行頻度(日次、週次、月次、カスタム)と時間を指定します。カスタムを選択した場合は、cron 形式を使用してスケジュールを指定します。

      2. オンデマンド: データ プロファイル スキャンジョブを作成し、[実行] をクリックしていつでも実行できます。

  8. [テーブルの選択] オプションで [参照] をクリックします。スキャンするテーブルを 1 つ以上選択します。[選択] をクリックします。

  9. [追加の設定] を選択します。

    1. データ プロファイル スキャンの結果を任意の BigQuery テーブルに保存するには、[スキャン結果を BigQuery テーブルにエクスポートする] でテーブルを選択します。Dataplex は、スキャンジョブごとにこの結果を自動的にコピーしてこのテーブルに保存します。

      1. [参照] をクリックして、データセットを選択します。

      2. 結果を保存する BigQuery テーブルを入力します。これは、結果を保存するために他の Dataplex データ プロファイル スキャンで使用される既存のテーブルにできます。指定した名前のテーブルが存在しない場合、Dataplex によってテーブルが作成されます。

    2. データ プロファイルのスキャンにアノテーションを付けるため、[ラベル] を追加します。

  10. [スキャンを実行] をクリックして、すべてのスキャンを作成して実行します。このオプションは、オンデマンド スキャンでのみ使用できます。

  11. [作成] をクリックしてすべてのスキャンを作成します。

gcloud

非対応。

REST

非対応。

テーブル スキーマをエクスポートする

データ プロファイルのスキャン結果を既存の BigQuery テーブルにエクスポートする場合は、次のテーブル スキーマとの互換性があることを確認してください。

列名 列データ型 サブフィールド名
(該当する場合)
サブフィールド データ型 モード
data_profile_scan struct/record resource_name string nullable //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan
project_id string nullable test-project
location string nullable us-central1
data_scan_id string nullable test-datascan
data_source struct/record resource_name string nullable エンティティのケース:
//dataplex.googleapis.com/projects/test-project/locations/europe-west2/lakes/test-lake/zones/test-zone/entities/test-entity

テーブルのケース: //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table
dataplex_entity_project_id string nullable test-project
dataplex_entity_project_number integer nullable 123456789012
dataplex_lake_id string nullable (ソースがエンティティである場合にのみ有効)
test-lake
dataplex_zone_id string nullable (ソースがエンティティである場合にのみ有効)
test-zone
dataplex_entity_id string nullable (ソースがエンティティである場合にのみ有効)
test-entity
table_project_id string nullable dataplex-table
table_project_number int64 nullable 345678901234
dataset_id string nullable (ソースがテーブルである場合にのみ有効)
test-dataset
table_id string nullable (ソースがテーブルである場合にのみ有効)
test-table
data_profile_job_id string nullable caeba234-cfde-4fca-9e5b-fe02a9812e38
data_profile_job_configuration json trigger string nullable ondemand/schedule
incremental boolean nullable true/false
sampling_percent float nullable (0〜100)
20.0(20% を示す)
row_filter string nullable col1 >= 0 AND col2 < 10
column_filter json nullable {"include_fields":["col1","col2"], "exclude_fields":["col3"]}
job_labels json nullable {"key1":value1}
job_start_time timestamp nullable 2023-01-01 00:00:00 UTC
job_end_time timestamp nullable 2023-01-01 00:00:00 UTC
job_rows_scanned integer nullable 7500
column_name string nullable column-1
column_type string nullable string
column_mode string nullable repeated
percent_null float nullable (0.0〜100.0)
20.0(20% を示す)
percent_unique float nullable (0.0〜100.0)
92.5
min_string_length integer nullable (列の型が文字列の場合にのみ有効)
10
max_string_length integer nullable (列の型が文字列の場合にのみ有効)
4
average_string_length float nullable (列の型が文字列の場合にのみ有効)
7.2
min_value float nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
max_value float nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
average_value float nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
standard_deviation float nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
quartile_lower integer nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
quartile_median integer nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
quartile_upper integer nullable (列の型が数値 - 整数 / 浮動小数点の場合のみ有効)
top_n struct/record - repeated value string nullable "4009"
count integer nullable 20
percent float nullable 10(10% を示す)

テーブルの設定をエクスポートする

BigQueryExport テーブルにエクスポートする場合は、次のガイドラインに従ってください。

  • resultsTable フィールドに //bigquery.googleapis.com/projects/{project-id}/datasets/{dataset-id}/tables/{table-id} 形式を使用します。
  • BigQuery 標準テーブルを使用します。
  • スキャンを作成または更新するときにテーブルが存在しない場合は、Dataplex によってテーブルが作成されます。
  • デフォルトでは、テーブルは job_start_time 列でパーティション分割されます。
  • テーブルを他の構成でパーティション分割する場合や、パーティションを作成しない場合は、必要なスキーマと構成でテーブルを再作成し、事前に作成されたテーブルを結果テーブルとして用意します。
  • 結果テーブルがソーステーブルと同じロケーションにあることを確認します。
  • VPC-SC がプロジェクトで構成されている場合、結果テーブルはソーステーブルと同じ VPC-SC 境界内にある必要があります。
  • スキャン実行ステージでテーブルが変更されると、現在実行中のジョブが前の結果テーブルにエクスポートされ、テーブルスキャンは次のスキャンジョブから有効になります。
  • テーブル スキーマは変更しないでください。カスタマイズした列が必要な場合は、テーブル上にビューを作成します。
  • 費用を削減するには、ユースケースに基づいてパーティションの有効期限を設定します。 詳細については、パーティションの有効期限を設定する方法をご覧ください。

データ プロファイル スキャンを実行する

コンソール

  1. Google Cloud コンソールで、Dataplex の [プロファイル] ページに移動します。 [プロフィール] に移動
  2. データ プロファイルのスキャンをクリックして実行します。
  3. [今すぐ実行] をクリックします。

gcloud

データ プロファイル スキャンを実行するには、次のコマンドを実行します。

gcloud dataplex datascans run DATASCAN \
--location=LOCATION

次の変数を置き換えます。

  • DATASCAN: データ プロファイル スキャンの名前。
  • LOCATION: データ プロファイル スキャンが作成された Google Cloud リージョン。

オプションの引数については、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用してデータ プロファイル スキャンを実行します。

データ プロファイルのスキャンジョブの結果を表示する

コンソール

作成したデータ プロファイル スキャンはすべて、[プロファイル] ページに表示されます。

スキャンの詳細な結果を表示するには、スキャンの名前をクリックします。

  • [概要] セクションには、スキャンの実行、各実行の時刻、スキャンされたテーブル レコードの数、ジョブのステータスが表示されます。

  • [プロファイルのスキャン構成] セクションには、スキャンの詳細が記載されます。

gcloud

データ プロファイル スキャンジョブの結果を表示するには、次のコマンドを実行します。

gcloud dataplex datascans jobs describe JOB \
--location=LOCATION \
--datascan=DATASCAN \
--view=FULL

次の変数を置き換えます。

  • JOB: データ プロファイル スキャン ジョブのジョブ ID。
  • LOCATION: データ プロファイル スキャンが作成された Google Cloud リージョン。
  • DATASCAN: ジョブが属するデータ プロファイル スキャンの名前。
  • --view=FULL: スキャンジョブの結果を表示するには、FULL を指定します。

オプションの引数については、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用して、データ プロファイル スキャンの結果を表示します。

最新のデータ プロファイル スキャンジョブを表示する

コンソール

正常に完了した実行が 1 つ以上ある場合、[最新のジョブ結果] タブには、最新のジョブに関する情報が表示されます。スキャンされたテーブルの列と、スキャンで見つかった列に関する統計情報が一覧表示されます。

gcloud

最新の成功したデータ プロファイル スキャンを表示するには、次のコマンドを実行します。

gcloud dataplex datascans describe DATASCAN \
--location=LOCATION \
--view=FULL

次の変数を置き換えます。

  • DATASCAN: 最新のジョブを表示するデータ プロファイル スキャンの名前。
  • LOCATION: データ プロファイル スキャンが作成された Google Cloud リージョン。
  • --view=FULL: スキャンジョブの結果を表示するには、FULL を指定します。

オプションの引数については、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用して、最新のスキャンジョブを表示します。

すべてのデータ プロファイル スキャンジョブを表示する

Dataplex は、過去 300 件のジョブ、または過去 1 年間のいずれか早いほうのデータ プロファイルのスキャン履歴を保存します。

コンソール

[ジョブ履歴] タブは、過去のジョブに関する情報を提供します。すべてのジョブ、各ジョブでスキャンされたレコード数、ジョブ ステータス、ジョブ実行時間などが一覧表示されます。

ジョブの詳細情報を表示するには、[ジョブ ID] の下の任意のジョブをクリックします。

gcloud

データ プロファイル スキャンのすべてのジョブを表示するには、次のコマンドを実行します。

gcloud dataplex datascans jobs list \
--location=LOCATION \
--datascan=DATASCAN

次の変数を置き換えます。

  • LOCATION: データ プロファイル スキャンが作成された Google Cloud リージョン。
  • DATASCAN: すべてのジョブを表示するデータ プロファイル スキャンの名前。

オプションの引数については、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用して、すべてのスキャンジョブを表示します。

公開された結果を共有する

データ プロファイル スキャンを作成する際に、スキャン結果を Google Cloud コンソールの BigQuery と Data Catalog ページで公開することを選択した場合は、最新のスキャン結果が、これらのページの [データ プロファイル] タブで利用可能です。

組織内のユーザーが、公開されたスキャン結果にアクセスできるようにすることができます。スキャン結果へのアクセス権を付与する手順は次のとおりです。

  1. Google Cloud コンソールで [プロファイル] ページに移動します。

    Dataplex プロファイルに移動

  2. 結果を共有するデータ プロファイルのスキャンをクリックします。

  3. [権限] タブに移動します。

  4. [アクセス権を付与] をクリックします。

  5. [新しいプリンシパル] フィールドに、アクセス権限を付与するメールアドレスを追加します。

  6. [ロールを選択] フィールドで、[Dataplex DataScan DataViewer] を選択します。

  7. [保存] をクリックします。

プリンシパルの公開されたスキャン結果へのアクセス権を削除するには、次の手順を行います。

  1. Google Cloud コンソールで [プロファイル] ページに移動します。

    Dataplex プロファイルに移動

  2. 結果を共有するデータ プロファイルのスキャンをクリックします。

  3. [権限] タブに移動します。

  4. Dataplex DataScan DataViewer ロールを削除するプリンシパルを選択します。

  5. [アクセス権を削除] をクリックします。

  6. [確認] をクリックします。

データ プロファイル スキャンを更新する

コンソール

  1. Google Cloud コンソールで [プロファイル] ページに移動します。

    Dataplex プロファイルに移動

  2. 編集するスキャンの行で、 > [編集] をクリックします。

  3. 値を編集します。

  4. [保存] をクリックします。

gcloud

データ プロファイル スキャンを更新するには、次のコマンドを実行します。

gcloud dataplex datascans update data-profile DATASCAN \
--location=LOCATION \
--description=DESCRIPTION

次の変数を置き換えます。

  • DATASCAN: 更新するデータ プロファイル スキャンの名前。
  • LOCATION: データ プロファイル スキャンが作成された Google Cloud リージョン。
  • DESCRIPTION: データ プロファイル スキャンの新しい説明。

更新する仕様フィールドについては、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用して、データ プロファイル スキャンを編集します。

データ プロファイル スキャンを削除する

コンソール

  1. Google Cloud コンソールで [プロファイル] ページに移動します。 Dataplex プロファイルに移動

  2. 削除するスキャンをクリックします。

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

gcloud

データ プロファイル スキャンを削除するには、次のコマンドを実行します。

gcloud dataplex datascans delete \
DATASCAN --location=LOCATION \
--async

次の変数を置き換えます。

  • DATASCAN: 削除するデータ プロファイル スキャンの名前。
  • LOCATION: データ プロファイル スキャンが作成された Google Cloud リージョン。

オプションの引数については、gcloud CLI リファレンスをご覧ください。

REST

API Explorer を使用してデータ プロファイル スキャンを削除します。

次のステップ