このページでは、Google Cloud コンソール、Google Cloud CLI、または REST API を使用してデータ プロファイル スキャンを作成する方法について説明します。
Dataplex Universal Catalog データ プロファイル スキャンの詳細については、データ プロファイリングの概要をご覧ください。
始める前に
Google Cloud コンソールで、Dataplex API を有効にします。
権限
BigQuery テーブルをプロファイリングするには、次の権限が必要です。
BigQuery テーブルでデータ プロファイル スキャンを実行するには、BigQuery テーブルの読み取り権限と、テーブルのスキャンに使用するプロジェクトで BigQuery ジョブを作成するための権限が必要です。
BigQuery テーブルとデータ プロファイル スキャンが異なるプロジェクトにある場合、Dataplex Universal Catalog サービス アカウントに、対応する BigQuery テーブルの読み取り権限を付与する必要があります。
BigQuery データが Dataplex Universal Catalog レイクで編成されている場合、データ プロファイル スキャンを作成するには、Dataplex Universal Catalog ロールの
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 Universal Catalog サービス アカウントに Cloud Storage オブジェクト閲覧者(
roles/storage.objectViewer
)ロールまたは次のバケットに対する権限を割り当てます。storage.buckets.get
storage.objects.get
Google Cloud コンソールの BigQuery ページと Dataplex Universal Catalog ページでソーステーブルのデータ プロファイル スキャンの結果を公開する場合は、テーブルに対する BigQuery データ編集者(
roles/bigquery.dataEditor
)IAM ロールが付与されている必要があります。または、次のすべての権限が必要です。bigquery.tables.get
bigquery.tables.update
bigquery.tables.updateData
bigquery.tables.delete
スキャン結果を BigQuery テーブルにエクスポートするには、Dataplex Universal Catalog サービス アカウントに BigQuery データ編集者(
roles/bigquery.dataEditor
)ロールが必要です。これにより次の権限が付与されます。bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.update
bigquery.tables.updateData
BigQuery の列レベルのアクセス ポリシーで保護されている列にアクセスする必要がある場合は、それらの列に対する権限を Dataplex Universal Catalog サービス アカウントに割り当てます。データスキャンを作成または更新しているユーザーには、列に対する権限も必要です。
テーブルで BigQuery 行レベルのアクセス ポリシーが有効になっている場合、Dataplex Universal Catalog サービス アカウントに表示される行のみをスキャンできます。行レベルのポリシーに対する個々のユーザーのアクセス権限は評価されません。
データスキャンのロールと権限
データ プロファイリングを使用するには、プロジェクト管理者が、すでに権限が付与されている事前定義ロールを割り当てるか、個々の権限を付与します。ロールは次のとおりです。
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 Universal Catalog は 1~10 TB のデータをサンプリングします。
- 結果を返すには、サンプリング データにレコードが 100 個以上必要です。
- 増分データスキャンの場合、Dataplex Universal Catalog は最新の増分にサンプリングを適用します。
行でフィルタするには、[フィルタ] をクリックして [行のフィルタ処理] を選択します。
GoogleSQL 構文の
WHERE
句で使用できる有効な SQL 式を入力します。例:col1 >= 0
。フィルタには、複数の列に対する SQL 条件を組み合わせることができます。例:
col1 >= 0 AND col2 < 10
。
省略可: [フィルタ] をクリックします。[フィルタリングする列] のチェックボックスをオンにします。
a. [列を含める] フィールドで、[参照] をクリックします。
- プロファイル スキャンに含める列を指定します。チェックボックスをオンにして任意の列を選択し、[選択] をクリックします。
b. [列を除外する] フィールドで、[参照] をクリックします。
- プロファイル スキャンから除外する列を指定します。チェックボックスをオンにして任意の列を選択し、[選択] をクリックします。
省略可:Google Cloud コンソールの BigQuery ページと Dataplex Universal Catalog ページでソーステーブルのデータ プロファイル スキャンの結果を公開するには、[BigQuery と Dataplex Catalog UI に結果を公開する] チェックボックスをオンにします。
最新のスキャン結果は、ソーステーブルの BigQuery ページと Dataplex Universal Catalog ページの [データ プロファイル] タブで表示できます。ユーザーが公開されたスキャン結果にアクセスできるようにするには、公開された結果を共有するをご覧ください。
次の場合には、公開オプションを使用できないことがあります。
- テーブルに必要な権限がない。
- 結果を公開するように別のデータ品質スキャンが設定されている。
公開された結果を表示するために必要な権限の詳細については、権限をご覧ください。
省略可: スキャン結果を BigQuery 標準テーブルにエクスポートします。[参照] をクリックして、データ プロファイル スキャンの結果を保存する既存の BigQuery データセットを選択します。
指定したテーブルが存在しない場合は、Dataplex Universal Catalog によって作成されます。既存のテーブルを使用している場合は、このセクションで後述するテーブル スキーマと互換性があることを確認してください。
省略可: ラベルを追加します。ラベルとは、関連するオブジェクトをまとめてグループ化したり、他の Google Cloud リソースと組み合わせてグループ化したりできる
key:value
ペアのことです。[スケジュール オプション] で、次のオプションのいずれかを選択します。
繰り返し: データ プロファイル スキャン ジョブを毎日、毎週、毎月、カスタムのいずれかのスケジュールで実行します。スキャンの実行頻度と時間を指定します。[カスタム] を選択した場合は、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 Universal Catalog エンティティ。例: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 Universal Catalog は、指定された接頭辞と一意の接尾辞を使用して、スキャン ID を自動的に生成します。
すべてのデータ プロファイル スキャンの説明を入力します。
[データセット] フィールドで [参照] をクリックします。テーブルを選択するデータセットを選択します。[選択] をクリックします。
データセットがマルチリージョンの場合は、データ プロファイル スキャンを作成するリージョンを選択します。
[一般的な構成オプション] を選択します。
[スコープ] フィールドで、[増分] または [データ全体] を選択します。
データ プロファイル スキャンにサンプリングを適用するには、[サンプリング サイズ] リストでサンプリングのパーセンテージを選択します。
0.0%~100.0% の間のパーセンテージ値(小数点以下 3 桁まで)を選択します。
すべてのスキャンの結果を表示するには、[公開中] を選択します。結果は、BigQuery または Dataplex Universal Catalog テーブルの詳細の [プロファイル] タブで確認できます。ソーステーブルに対する
bigquery.tables.update
権限があることを確認します。[スケジュール オプション] で、次のオプションのいずれかを選択します。
繰り返し: データ プロファイル スキャン ジョブをスケジュールに従って実行します。スキャンの実行頻度(毎日、毎週、毎月、カスタム)と時間を指定します。[カスタム] を選択した場合は、cron 形式を使用してスケジュールを指定します。
オンデマンド: データ プロファイル スキャン ジョブを作成し、[実行] をクリックしていつでも実行できます。
[テーブルを選択] オプションで、[参照] をクリックします。スキャンするテーブルを 1 つ以上選択します。[選択] をクリックします。
[追加の設定] を選択します。
データ プロファイル スキャンの結果を任意の BigQuery テーブルに保存するには、[スキャン結果を BigQuery テーブルにエクスポートする] でテーブルを選択します。Dataplex Universal Catalog は、スキャンジョブごとに結果を自動的にコピーしてこのテーブルに保存します。
[参照] をクリックしてデータセットを選択します。
結果を保存する BigQuery テーブルを入力します。これは、他の Dataplex Universal Catalog データ プロファイル スキャンで結果を保存するために使用される既存のテーブルでもかまいません。指定した名前のテーブルが存在しない場合、Dataplex Universal Catalog によってテーブルが作成されます。
ラベルを追加して、データ プロファイル スキャンにアノテーションを付けます。
[スキャンを実行] をクリックして、すべてのスキャンを作成して実行します。このオプションは、オンデマンド スキャンでのみ使用できます。
[作成] をクリックして、すべてのスキャンを作成します。
gcloud
サポートされていません。
REST
サポートされていません。
テーブル スキーマをエクスポートする
データ プロファイルのスキャンの結果を既存の BigQuery テーブルにエクスポートする場合は、次のテーブル スキーマと互換性があることを確認してください。
列名 | 列データ型 | サブフィールド名 (該当する場合) |
サブフィールドのデータ型 | モード | 例 |
---|---|---|---|---|---|
data_profile_scan | struct/record |
resource_name |
string |
null でも可 | //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan |
project_id |
string |
null でも可 | test-project |
||
location |
string |
null でも可 | us-central1 |
||
data_scan_id |
string |
null でも可 | test-datascan |
||
data_source | struct/record |
resource_name |
string |
null でも可 | エンティティのケース://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 |
null でも可 | test-project |
||
dataplex_entity_project_number |
integer |
null でも可 | 123456789012 |
||
dataplex_lake_id |
string |
null でも可 | (ソースがエンティティである場合にのみ有効)test-lake
|
||
dataplex_zone_id |
string |
null でも可 | (ソースがエンティティである場合にのみ有効)test-zone |
||
dataplex_entity_id |
string |
null でも可 | (ソースがエンティティである場合にのみ有効)test-entity |
||
table_project_id |
string |
null でも可 | dataplex-table |
||
table_project_number |
int64 |
null でも可 | 345678901234 |
||
dataset_id |
string |
null でも可 | (ソースがテーブルである場合にのみ有効)test-dataset |
||
table_id |
string |
null でも可 | (ソースがテーブルである場合にのみ有効)test-table |
||
data_profile_job_id | string |
null でも可 | caeba234-cfde-4fca-9e5b-fe02a9812e38 |
||
data_profile_job_configuration | json |
trigger |
string |
null でも可 | ondemand /schedule |
incremental |
boolean |
null でも可 | true /false |
||
sampling_percent |
float |
null でも可 | (0~100)20.0 (20% を示す) |
||
row_filter |
string |
null でも可 | col1 >= 0 AND col2 < 10 |
||
column_filter |
json |
null でも可 | {"include_fields":["col1","col2"], "exclude_fields":["col3"]} |
||
job_labels | json |
null でも可 | {"key1":value1} |
||
job_start_time | timestamp |
null でも可 | 2023-01-01 00:00:00 UTC |
||
job_end_time | timestamp |
null でも可 | 2023-01-01 00:00:00 UTC |
||
job_rows_scanned | integer |
null でも可 | 7500 |
||
column_name | string |
null でも可 | column-1 |
||
column_type | string |
null でも可 | string |
||
column_mode | string |
null でも可 | repeated |
||
percent_null | float |
null でも可 | (0.0~100.0)20.0 (20% を示す) |
||
percent_unique | float |
null でも可 | (0.0~100.0)92.5 |
||
min_string_length | integer |
null でも可 | (列の型が文字列の場合にのみ有効)10 |
||
max_string_length | integer |
null でも可 | (列の型が文字列の場合にのみ有効)4 |
||
average_string_length | float |
null でも可 | (列の型が文字列の場合にのみ有効)7.2 |
||
min_value | float |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
max_value | float |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
average_value | float |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
standard_deviation | float |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
quartile_lower | integer |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
quartile_median | integer |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
quartile_upper | integer |
null でも可 | (列の型が数値 - 整数 / 浮動小数点の場合のみ有効) | ||
top_n | struct/record - repeated |
value |
string |
null でも可 | "4009" |
count |
integer |
null でも可 | 20 |
||
percent |
float |
null でも可 | 10 (10% を示す) |
テーブルの設定をエクスポートする
BigQueryExport テーブルにエクスポートする場合は、次のガイドラインに沿って行ってください。
resultsTable
フィールドには、//bigquery.googleapis.com/projects/{project-id}/datasets/{dataset-id}/tables/{table-id}
の形式を使用します。- BigQuery 標準テーブルを使用します。
- スキャンが作成または更新されたときにテーブルが存在しない場合は、Dataplex Universal Catalog によってテーブルが作成されます。
- デフォルトでは、テーブルは
job_start_time
列で毎日パーティション分割されます。 - テーブルを他の構成でパーティション分割する場合や、パーティションを作成しない場合は、必要なスキーマと構成でテーブルを再作成し、事前に作成されたテーブルを結果テーブルとして用意します。
- 結果テーブルがソーステーブルと同じロケーションにあることを確認します。
- プロジェクトで VPC-SC が構成されている場合、結果テーブルはソーステーブルと同じ VPC-SC 境界内にある必要があります。
- スキャン実行ステージでテーブルが変更されると、現在実行中のジョブが以前の結果テーブルにエクスポートされ、テーブルの変更は次のスキャンジョブから有効になります。
- テーブル スキーマを変更しないでください。列をカスタマイズする必要がある場合は、テーブルにビューを作成します。
- 費用を削減するには、ユースケースに基づいてパーティションの有効期限を設定します。詳細については、パーティションの有効期限を設定する方法をご覧ください。
データ プロファイル スキャンを実行する
コンソール
- Google Cloud コンソールで、Dataplex Universal Catalog の [プロファイル] ページに移動します。[プロフィール] に移動
- データ プロファイル スキャンをクリックして実行します。
- [今すぐ実行] をクリックします。
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 Universal Catalog には、過去 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 と Dataplex Universal Catalog ページで公開することを選択した場合は、最新のスキャン結果が、それらのページの [データ プロファイル] タブで利用可能です。
組織内のユーザーに、公開されたスキャン結果へのアクセスを許可できます。スキャン結果へのアクセス権を付与する手順は次のとおりです。
Google Cloud コンソールで [プロファイル] ページに移動します。
結果を共有するデータ プロファイル スキャンをクリックします。
[権限] タブに移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、アクセス権限を付与するプリンシパルを追加します。
[ロールを選択] フィールドで、[Dataplex Universal Catalog DataScan DataViewer] を選択します。
[保存] をクリックします。
プリンシパルの公開スキャン結果へのアクセス権を削除する手順は次のとおりです。
Google Cloud コンソールで [プロファイル] ページに移動します。
結果を共有するデータ プロファイル スキャンをクリックします。
[権限] タブに移動します。
Dataplex Universal Catalog 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 Universal Catalog プロファイルに移動
削除するスキャンをクリックします。
[削除] をクリックします。
gcloud
データ プロファイル スキャンを削除するには、次のコマンドを実行します。
gcloud dataplex datascans delete \ DATASCAN --location=LOCATION \ --async
次の変数を置き換えます。
DATASCAN
: 削除するデータ プロファイル スキャンの名前。LOCATION
: データ プロファイル スキャンが作成された Google Cloud リージョン。
オプションの引数については、gcloud CLI リファレンスをご覧ください。
REST
API Explorer を使用して、データ プロファイル スキャンを削除します。
次のステップ
- データ分析情報を生成してデータを探索する方法について学習する。
- データ プロファイリングについて学習する。
- 自動データ品質について学習する。
- 自動データ品質を使用する方法を学習する。