このページでは、Google Cloud コンソール、Google Cloud CLI、または REST API を使用してデータ プロファイル スキャンを作成する方法について説明します。
Dataplex のデータ プロファイル スキャンの詳細については、データ プロファイリングについてをご覧ください。
準備
Google Cloud コンソールで、Dataplex API を有効にします。
権限
BigQuery テーブルをプロファイリングするには、次の権限が必要です。
BigQuery テーブルでデータ プロファイル スキャンを実行するには、BigQuery テーブルを読み取る権限と、テーブルをスキャンするプロジェクトで BigQuery ジョブを作成する権限が必要です。
BigQuery テーブルとデータ プロファイル スキャンが異なるプロジェクトにある場合、Dataplex サービス アカウントに、対応する BigQuery テーブルの読み取り権限を付与する必要があります。
BigQuery データが Dataplex レイクに編成されている場合は、データ プロファイル スキャンを作成するには、Dataplex のロール
roles/dataplex.metadataReader
とroles/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 権限を設定する |
データ プロファイル スキャンを作成する
コンソール
Google Cloud コンソールで [プロファイル] ページに移動します。
[データ プロファイル スキャンを作成] をクリックします。
[表示名] を入力します。
自動生成されたスキャン ID を変更するには、独自の ID を指定します。リソースの命名規則をご覧ください。
(省略可)説明を入力します。
[テーブル] フィールドで、[参照] をクリックします。
テーブルを選択し、[選択] をクリックします。
[スコープ] フィールドで、[増分] または [データ全体] を選択します。
- [増分データ] を選択した場合、[タイムスタンプ列] フィールドで、BigQuery テーブルから
DATE
またはTIMESTAMP
型の列を選択します。このテーブルは、単調に増加し、新しいレコードを識別するために使用できます。DATE
型またはTIMESTAMP
型の列でパーティション分割されたテーブルの場合は、タイムスタンプ フィールドとしてパーティション列を使用することをおすすめします。
- [増分データ] を選択した場合、[タイムスタンプ列] フィールドで、BigQuery テーブルから
データ プロファイル スキャンにサンプリングを適用するには、[サンプリング サイズ] リストでサンプリング率を選択します。
- 0.0~100.0% の範囲のパーセンテージ値(小数点以下 3 桁まで)を選択します。
- 大規模なデータセットの場合は、低いサンプリング率を選択します。たとえば、約 1 PB のテーブルの場合、0.1%~1.0% の値を入力すると、Dataplex は 1~10 TB のデータをサンプリングします。
- 結果を返すには、サンプリング データに少なくとも 100 個のレコードが必要です。
- 増分データスキャンの場合、Dataplex は最新の増分にサンプリングを適用します。
行でフィルタするには、[フィルタ] をクリックして [行をフィルタする] を選択します。
BigQuery 標準 SQL 構文の
WHERE
句で使用できる有効な SQL 式を入力します。例:col1 >= 0
。フィルタは、複数の列に対する SQL 条件の組み合わせにできます。例:
col1 >= 0 AND col2 < 10
。
(省略可)[フィルタ] をクリックします。[列をフィルタする] チェックボックスをオンにします。
a. [列を含める] フィールドで [参照] をクリックします。
- プロファイル スキャンに含める列を指定します。任意の列をチェックボックスで選択し、[選択] をクリックします。
b. [列を除外] フィールドで、[参照] をクリックします。
- プロファイル スキャンから除外する列を指定します。任意の列をチェックボックスで選択し、[選択] をクリックします。
省略可: ソーステーブルの Google Cloud コンソールの BigQuery と Data Catalog ページで、データ プロファイル スキャン結果を公開します。[BigQuery と Dataplex Catalog UI に結果を公開する] チェックボックスをオンにします。
最新のスキャン結果は、ソーステーブルの BigQuery ページと Data Catalog ページの [データ プロファイル] タブで表示できます。ユーザーが公開されたスキャン結果にアクセスできるようにするには、公開された結果を共有するをご覧ください。
次の場合、公開オプションを使用できない場合があります。
- 表に必要な権限がない。
- 結果を公開するように別のデータ品質スキャンが設定されている。
公開された結果を表示するために必要な権限の詳細については、権限をご覧ください。
省略可: スキャン結果を BigQuery 標準テーブルにエクスポートします。[参照] をクリックして、データ プロファイルのスキャン結果を保存する既存の BigQuery データセットを選択します。
指定したテーブルが存在しない場合は、Dataplex によって作成されます。既存のテーブルを使用している場合は、このセクションで後述するテーブル スキーマと互換性があることを確認してください。
(省略可)ラベルを追加します。ラベルとは、
key:value
ペアで、これを使用すると、関連するオブジェクトや他の Google Cloud リソースと一緒にグループ化できます。[スケジュール オプション] で、次のオプションのいずれかを選択します。
繰り返し: データ プロファイルのスキャンジョブを毎日、毎週、毎月、カスタムのうちのスケジュールで実行します。スキャンを実行する頻度と時刻を指定します。カスタムを選択した場合は、cron 形式を使用してスケジュールを指定します。
オンデマンド: データ プロファイル スキャンを作成し、「今すぐ実行」操作を使用していつでも実行します。
[作成] をクリックします。
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 を使用して、データ プロファイル スキャンを作成します。
複数のデータ プロファイル スキャンを作成する
コンソール
Google Cloud コンソールで [プロファイル] ページに移動します。
[複数のプロファイル スキャンを作成] をクリックします。
[ID 接頭辞] を入力します。Dataplex は、指定された接頭辞と一意の接尾辞を使用して、スキャン ID を自動的に生成します。
すべてのデータ プロファイル スキャンの [説明] を入力します。
[データセット] フィールドで [参照] をクリックします。テーブルを選択するデータセットを選択します。[選択] をクリックします。
データセットがマルチリージョンの場合は、データ プロファイル スキャンを作成するリージョンを選択します。
[一般的な構成オプション] を選択します。
[スコープ] フィールドで、[増分] または [データ全体] を選択します。
データ プロファイル スキャンにサンプリングを適用するには、[サンプリング サイズ] リストでサンプリング率を選択します。
0.0%~100.0% の間の割合(小数点以下 3 桁まで)を選択します。
すべてのスキャンの結果を表示するには、[公開] を選択します。結果は、BigQuery または Data Catalog テーブルの詳細の [プロファイル] タブで確認できます。ソーステーブルに対する
bigquery.tables.update
権限があることを確認します。[スケジュール オプション] で、次のオプションのいずれかを選択します。
繰り返し: データ プロファイルのスキャンジョブをスケジュールに従って実行します。スキャンの実行頻度(日次、週次、月次、カスタム)と時間を指定します。カスタムを選択した場合は、cron 形式を使用してスケジュールを指定します。
オンデマンド: データ プロファイル スキャンジョブを作成し、[実行] をクリックしていつでも実行できます。
[テーブルの選択] オプションで [参照] をクリックします。スキャンするテーブルを 1 つ以上選択します。[選択] をクリックします。
[追加の設定] を選択します。
データ プロファイル スキャンの結果を任意の BigQuery テーブルに保存するには、[スキャン結果を BigQuery テーブルにエクスポートする] でテーブルを選択します。Dataplex は、スキャンジョブごとにこの結果を自動的にコピーしてこのテーブルに保存します。
[参照] をクリックして、データセットを選択します。
結果を保存する BigQuery テーブルを入力します。これは、結果を保存するために他の Dataplex データ プロファイル スキャンで使用される既存のテーブルにできます。指定した名前のテーブルが存在しない場合、Dataplex によってテーブルが作成されます。
データ プロファイルのスキャンにアノテーションを付けるため、[ラベル] を追加します。
[スキャンを実行] をクリックして、すべてのスキャンを作成して実行します。このオプションは、オンデマンド スキャンでのみ使用できます。
[作成] をクリックしてすべてのスキャンを作成します。
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 境界内にある必要があります。
- スキャン実行ステージでテーブルが変更されると、現在実行中のジョブが前の結果テーブルにエクスポートされ、テーブルスキャンは次のスキャンジョブから有効になります。
- テーブル スキーマは変更しないでください。カスタマイズした列が必要な場合は、テーブル上にビューを作成します。
- 費用を削減するには、ユースケースに基づいてパーティションの有効期限を設定します。 詳細については、パーティションの有効期限を設定する方法をご覧ください。
データ プロファイル スキャンを実行する
コンソール
- Google Cloud コンソールで、Dataplex の [プロファイル] ページに移動します。 [プロフィール] に移動
- データ プロファイルのスキャンをクリックして実行します。
- [今すぐ実行] をクリックします。
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 ページで公開することを選択した場合は、最新のスキャン結果が、これらのページの [データ プロファイル] タブで利用可能です。
組織内のユーザーが、公開されたスキャン結果にアクセスできるようにすることができます。スキャン結果へのアクセス権を付与する手順は次のとおりです。
Google Cloud コンソールで [プロファイル] ページに移動します。
結果を共有するデータ プロファイルのスキャンをクリックします。
[権限] タブに移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、アクセス権限を付与するメールアドレスを追加します。
[ロールを選択] フィールドで、[Dataplex DataScan DataViewer] を選択します。
[保存] をクリックします。
プリンシパルの公開されたスキャン結果へのアクセス権を削除するには、次の手順を行います。
Google Cloud コンソールで [プロファイル] ページに移動します。
結果を共有するデータ プロファイルのスキャンをクリックします。
[権限] タブに移動します。
Dataplex DataScan DataViewer ロールを削除するプリンシパルを選択します。
[アクセス権を削除] をクリックします。
[確認] をクリックします。
データ プロファイル スキャンを更新する
コンソール
Google Cloud コンソールで [プロファイル] ページに移動します。
編集するスキャンの行で、> [編集] をクリックします。
値を編集します。
[保存] をクリックします。
gcloud
データ プロファイル スキャンを更新するには、次のコマンドを実行します。
gcloud dataplex datascans update data-profile DATASCAN \ --location=LOCATION \ --description=DESCRIPTION
次の変数を置き換えます。
DATASCAN
: 更新するデータ プロファイル スキャンの名前。LOCATION
: データ プロファイル スキャンが作成された Google Cloud リージョン。DESCRIPTION
: データ プロファイル スキャンの新しい説明。
更新する仕様フィールドについては、gcloud CLI リファレンスをご覧ください。
REST
API Explorer を使用して、データ プロファイル スキャンを編集します。
データ プロファイル スキャンを削除する
コンソール
Google Cloud コンソールで [プロファイル] ページに移動します。 Dataplex プロファイルに移動
削除するスキャンをクリックします。
[削除] をクリックします。
gcloud
データ プロファイル スキャンを削除するには、次のコマンドを実行します。
gcloud dataplex datascans delete \ DATASCAN --location=LOCATION \ --async
次の変数を置き換えます。
DATASCAN
: 削除するデータ プロファイル スキャンの名前。LOCATION
: データ プロファイル スキャンが作成された Google Cloud リージョン。
オプションの引数については、gcloud CLI リファレンスをご覧ください。
REST
API Explorer を使用してデータ プロファイル スキャンを削除します。
次のステップ
- データ プロファイリングについて確認する。
- 自動データ品質について確認する。
- 自動データ品質を使用する方法を確認する。