このページでは、Dataplex のデータ品質スキャンを作成する方法について説明します。
データ品質スキャンの詳細については、自動データ品質についてをご覧ください。
準備
Dataplex API を有効にします。
省略可: データ プロファイリング スキャンの結果に基づいてデータ品質ルールの推奨事項を生成するには、データ プロファイリング スキャンを作成して実行します。
権限
BigQuery テーブルでデータ品質スキャンを実行するには、BigQuery テーブルを読み取る権限と、テーブルのスキャンに使用するプロジェクトで BigQuery ジョブを作成する権限が必要です。
BigQuery テーブルとデータ品質スキャンが異なるプロジェクトにある場合、データ品質スキャン含むプロジェクトの Dataplex サービス アカウントに、対応する BigQuery テーブルに対する読み取り権限を付与する必要があります。
データ品質ルールで追加のテーブルを参照する場合は、スキャン プロジェクトのサービス アカウントに同じテーブルに対する読み取り権限が必要です。
スキャン結果を BigQuery テーブルにエクスポートするために必要な権限を取得するには、結果のデータセットとテーブルに対する BigQuery データ編集者(
roles/bigquery.dataEditor
)IAM ロールをDataplex サービス アカウントに付与するよう管理者に依頼してください。これにより次の権限が付与されます。bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.update
bigquery.tables.updateData
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
ロールを付与します。または、Dataplex サービス アカウントに次の権限を割り当てます。storage.buckets.get
storage.objects.get
Google Cloud コンソールの BigQuery と Data Catalog ページでソーステーブルのデータ プロファイルのスキャン結果を公開する場合は、テーブルに対する BigQuery データ編集者(
roles/bigquery.dataEditor
)IAM ロールまたはbigquery.tables.update
権限を付与する必要があります。BigQuery の列レベルのアクセス ポリシーで保護されている列にアクセスする必要がある場合は、それらの列に対する Dataplex サービス アカウントの権限を割り当てます。データスキャンを作成または更新しているユーザーには、列に対する権限も必要です。
テーブルで BigQuery 行レベルのアクセス ポリシーが有効になっている場合、Dataplex サービス アカウントに表示される行のみをスキャンできます。行レベルのポリシーに対する個々のユーザーのアクセス権限は評価されません。
データスキャンの権限とロール
自動データ品質を使用するには、データスキャンを実行する権限、またはデータスキャンを実行する事前定義された権限を持つロールが必要です。
次の表に、DataScan
権限の一覧を示します。
権限名 | 次のことをする権限を付与します。 |
---|---|
dataplex.datascans.create |
DataScan の作成 |
dataplex.datascans.delete |
DataScan の削除 |
dataplex.datascans.get |
ID やスケジュールなどのオペレーション メタデータを表示するが、結果やルールを表示しない |
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 つ以上をユーザーに付与します。
roles/dataplex.dataScanAdmin
:DataScan
リソースに対する完全アクセス権。roles/dataplex.dataScanEditor
:DataScan
リソースに対する書き込みアクセス権。roles/dataplex.dataScanViewer
:DataScan
ルールと結果を除くリソースに対する読み取りアクセス権。roles/dataplex.dataScanDataViewer
: ルールと結果を含むDataScan
リソースに対する読み取りアクセス権。
データ品質ルールを定義する
データ品質ルールは、組み込みルールまたはカスタム SQL チェックを使用して定義できます。 Google Cloud CLI を使用している場合は、これらのルールを JSON または YAML ファイルで定義できます。
次のセクションの例では、さまざまなデータ品質ルールを定義する方法を示します。このルールは、顧客トランザクションに関するデータを含むサンプル テーブルを検証しています。テーブルのスキーマは次のとおりです。
列名 | 列の型 | 列の説明 |
---|---|---|
transaction_timestamp | タイムスタンプ | トランザクションのタイムスタンプ。テーブルはこのフィールドでパーティション分割されます。 |
customer_id | String(文字列) | 8 文字に続いて 16 桁の数字の形式のお客様 ID。 |
transaction_id | String(文字列) | トランザクション ID はテーブル全体で一意である必要があります。 |
currency_id | String(文字列) | サポートされている通貨の 1 つ。通貨の種類は、ディメンション テーブル dim_currency で使用可能な通貨のいずれかと一致する必要があります。
|
amount | float | 取引金額。 |
discount_pct | float | 割引率。0 以上 100 以下の値を指定してください。 |
組み込みルールの種類を使用してデータ品質ルールを定義する
次のルールは、組み込みのルールの種類に基づいています。Google Cloud コンソールまたは API を使用して、組み込みのルールの種類に基づいてルールを作成できます。 Dataplex は、これらのルールの一部を推奨する場合があります。
列名 | ルールの種類 | 推奨サイズ | ルールのパラメータ |
---|---|---|---|
transaction_id |
一意性チェック | 一意性 | しきい値: Not Applicable |
amount |
NULL チェック | 完全性 | しきい値: 100% |
customer_id |
正規表現チェック | 有効性 | 正規表現: ^[0-9]{8}[a-zA-Z]{16}$ しきい値: 100%
|
currency_id |
値セットチェック | 有効性 | 次のセット: USD,JPY,INR,GBP,CAN しきい値: 100%
|
カスタム SQL ルールを使用してデータ品質ルールを定義する
カスタム SQL ルールを作成するには、次のフレームワークを使用します。
一度に 1 行を評価するルールを作成する場合は、Dataplex がクエリ
SELECT COUNTIF(CUSTOM_SQL_EXPRESSION) FROM TABLE
を評価する際に成功した行数を生成する式を作成します。Dataplex では、成功した行数がしきい値とチェックされます。行全体を評価する、またはテーブル条件を使用するルールを作成する場合は、Dataplex がクエリ
SELECT IF(CUSTOM_SQL_EXPRESSION) FROM TABLE
を評価する際に成功または失敗を返す式を作成します。データセットの無効な状態を評価するルールを作成する場合は、無効な行を返すステートメントを指定します。行が返された場合、ルールは失敗します。SQL ステートメントで末尾のセミコロンを省略します。
ソーステーブルとそのフィルタを明示的に記述する代わりに、ルールでデータ参照パラメータ
${data()}
を使用することで、データソース テーブルとそのすべての前提条件フィルタを参照できます。前提条件フィルタの例としては、行フィルタ、サンプリング パーセンテージ、増分フィルタなどがあります。${data()}
パラメータでは大文字と小文字が区別されます。
次のルールの例は、カスタム SQL ルールに基づいています。
ルールの種類 | ルールの説明 | SQL 式 |
---|---|---|
行の条件 | discount_pct の値が 0 ~ 100 の間かどうかを確認します。
|
0 <discount_pct および discount_pct < 100
|
行の条件 | currency_id がサポートされている通貨のいずれかであることを検証するリファレンス チェック。
|
currency_id in (select id from my_project_id.dim_dataset.dim_currency)
|
テーブルの条件 | 平均 discount_pct が 30% から 50% の間であることを確認する集計 SQL 式。
|
30<avg(discount) AND avg(discount) <50
|
行の条件 | 日付が将来でないかを確認します。 | TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
|
テーブルの条件 |
平均トランザクション額が国ごとに事前に定義された値より小さいことを確認する BigQuery ユーザー定義関数(UDF)。次のコマンドを実行して、(JavaScript)UDF を作成します。
CREATE OR REPLACE FUNCTION myProject.myDataset.average_by_country ( country STRING, average FLOAT64) RETURNS BOOL LANGUAGE js AS R""" if (country = "CAN" && average < 5000){ return 1 } else if (country = "IND" && average < 1000){ return 1 } else { return 0 } """; |
country=CAN の平均トランザクション金額を確認するルールの例。
myProject.myDataset.average_by_country( "CAN", (SELECT avg(amount) FROM myProject.myDataset.transactions_table WHERE currency_id = 'CAN' )) |
テーブルの条件 | discount_pct の異常を識別する BigQuery ML 予測句。割引が customer 、currency 、transaction に基づいて適用されるかどうかを確認します。このルールは、予測が実際の値(99% 以上)と一致するかどうかを確認します。前提条件: ML モデルは、ルールを使用する前に作成されます。次のコマンドを使用して ML モデルを作成します。
CREATE MODEL model-project-id.dataset-id.model-name OPTIONS(model_type='logistic_reg') AS SELECT IF(discount_pct IS NULL, 0, 1) AS label, IFNULL(customer_id, "") AS customer, IFNULL(currency_id, "") AS currency, IFNULL(amount, 0.0) AS amount FROM `data-project-id.dataset-id.table-names` WHERE transaction_timestamp < '2022-01-01'; |
次のルールで、予測精度が 99% より大きいかを確認します。SELECT accuracy > 0.99 FROM ML.EVALUATE (MODEL model-project-id.dataset-id.model-name, ( SELECT customer_id, currency_id, amount, discount_pct FROM data-project-id.dataset-id.table-names WHERE transaction_timestamp > '2022-01-01'; ) ) |
行の条件 | discount_pct の異常を識別する BigQuery ML 予測関数。この関数は、customer 、currency 、transaction に基づいて割引を適用するかどうかを確認します。
このルールは、予測が一致しなかったすべての発生回数を識別します。
前提条件: ルールを使用する前に ML モデルが作成されています。次のコマンドを使用して ML モデルを作成します。
CREATE MODEL model-project-id.dataset-id.model-name OPTIONS(model_type='logistic_reg') AS SELECT IF(discount_pct IS NULL, 0, 1) AS label, IFNULL(customer_id, "") AS customer, IFNULL(currency_id, "") AS currency, IFNULL(amount, 0.0) AS amount FROM `data-project-id.dataset-id.table-names` WHERE transaction_timestamp < '2022-01-01'; |
次のルールでは、割引予測がすべての行の実際のものと一致するかどうかを確認します。IF(discount_pct > 0, 1, 0) =(SELECT predicted_label FROM ML.PREDICT( MODEL model-project-id.dataset-id.model-name, ( SELECT customer_id, currency_id, amount, discount_pct FROM data-project-id.dataset-id.table-names AS t WHERE t.transaction_timestamp = transaction_timestamp LIMIT 1 ) ) ) |
SQL アサーション | 割引率が 30 以下の行が存在するかを確認して、今日の discount_pct が 30% より大きいかを検証します。 |
SELECT * FROM my_project_id.dim_dataset.dim_currency WHERE discount_pct <= 30 AND transaction_timestamp >= current_date() |
SQL アサーション(データ参照パラメータを指定) | 現在サポートされているすべての通貨で 日付フィルタ データ参照パラメータ |
SELECT * FROM ${data()} WHERE discount_pct > 30 |
gcloud CLI を使用してデータ品質ルールを定義する
次の YAML ファイルの例では、組み込み型を使用したサンプルルールおよびカスタム SQL のサンプルルールと同じルールをいくつか使用しています。この YAML ファイルは、gcloud CLI コマンドの入力として使用できます。
rules:
- uniquenessExpectation: {}
column: transaction_id
dimension: UNIQUENESS
- nonNullExpectation: {}
column: amount
dimension: COMPLETENESS
threshold: 1
- regexExpectation:
regex: '^[0-9]{8}[a-zA-Z]{16}$'
column : customer_id
ignoreNull : true
dimension : VALIDITY
threshold : 1
- setExpectation :
values :
- 'USD'
- 'JPY'
- 'INR'
- 'GBP'
- 'CAN'
column : currency_id
ignoreNull : true
dimension : VALIDITY
threshold : 1
- rangeExpectation:
minValue : '0'
maxValue : '100'
column : discount_pct
ignoreNull : true
dimension : VALIDITY
threshold : 1
- rowConditionExpectation:
sqlExpression : 0 < `discount_pct` AND `discount_pct` < 100
column: discount_pct
dimension: VALIDITY
threshold: 1
- rowConditionExpectation:
sqlExpression : currency_id in (select id from `my_project_id.dim_dataset.dim_currency`)
column: currency_id
dimension: VALIDITY
threshold: 1
- tableConditionExpectation:
sqlExpression : 30 < avg(discount_pct) AND avg(discount_pct) < 50
dimension: VALIDITY
- rowConditionExpectation:
sqlExpression : TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
column: transaction_timestamp
dimension: VALIDITY
threshold: 1
- sqlAssertion:
sqlStatement : SELECT * FROM `my_project_id.dim_dataset.dim_currency` WHERE discount_pct > 100
dimension: VALIDITY
データ品質スキャンを作成する
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
[データ品質スキャンの作成] をクリックします。
[スキャンの定義] ウィンドウで、次のフィールドに入力します。
[表示名] を入力します。
自分の ID を指定しない場合、スキャン ID は自動的に生成されます。リソースの命名規則をご覧ください。
(省略可)説明を入力します。
[テーブル] フィールドで [参照] をクリックし、テーブルを選択し、[選択] をクリックします。Dataplex は、標準の BigQuery テーブルのみをサポートします。
マルチリージョン データセットのテーブルの場合は、データスキャンを作成するリージョンを選択します。
Dataplex レイク内で整理されたテーブルを参照するには、[Dataplex レイク内で参照] をクリックします。
[スコープ] フィールドで、[増分] または [データ全体] を選択します。
- [増分] を選択した場合: [タイムスタンプ列] フィールドで、BigQuery テーブルから
DATE
またはTIMESTAMP
型の列を選択します。このテーブルは、単調に増加し、新しいレコードを識別するために使用できます。テーブルを分割する列でもかまいません。
- [増分] を選択した場合: [タイムスタンプ列] フィールドで、BigQuery テーブルから
(省略可)ラベルを追加します。ラベルとは、
key:value
ペアで、これを使用すると、関連するオブジェクトや他の Google Cloud リソースと一緒にグループ化できます。データをフィルタするには、[フィルタ] をクリックします。[行をフィルタする] チェックボックスをオンにします。行フィルタの入力値は、BigQuery 標準 SQL 構文の
WHERE
句の一部として使用できる有効な SQL 式である必要があります。例:col1 >= 0
。フィルタは、複数の列条件を組み合わせて作成できます。例:col1 >= 0 AND col2 < 10
データをサンプリングするには、[サンプリング サイズ] リストでサンプリング率を選択します。0.0~100.0% の範囲のパーセンテージ値(小数点以下 3 桁まで)を選択します。大規模なデータセットの場合は、低いサンプリング率を選択します。たとえば、約 1 PB のテーブルの場合、0.1%~1.0% の値を入力すると、Dataplex は 1~10 TB のデータをサンプリングします。増分データスキャンの場合、Dataplex は最新の増分にサンプリングを適用します。
ソーステーブルの Google Cloud コンソールの BigQuery ページと Data Catalog ページでデータ品質スキャンの結果を公開するには、[BigQuery と Dataplex カタログ UI に結果を公開する] チェックボックスをオンにします。 最新のスキャン結果は、ソーステーブルの BigQuery ページと Data Catalog ページの [データ品質] タブで表示できます。ユーザーが公開されたスキャン結果にアクセスできるようにするには、公開された結果を共有するをご覧ください。次の場合には、公開オプションを使用できないことがあります。
- 表に必要な権限がない。
- 結果を公開するように別のデータ品質スキャンが設定されている。
公開された結果を表示するために必要な権限の詳細については、権限をご覧ください。
[続行] をクリックします。
[スケジュール] ウィンドウで、次のいずれかのオプションを選択します。
繰り返し: データ品質のスキャンジョブを毎日、毎週、毎月、カスタムのうちのスケジュールで実行します。スキャンの実行頻度と時間を指定します。カスタムを選択した場合は、cron 形式を使用してスケジュールを指定します。
オンデマンド: データ品質スキャンジョブをオンデマンドで実行します。
[続行] をクリックします。
[データ品質ルール] ウィンドウで、このデータ品質スキャン用に構成するルールを定義します。[ルールを追加] をクリックし、次のいずれかのオプションを選択します。
プロファイル ベースの推奨事項: 既存のデータ プロファイリング スキャンに基づいて、推奨事項からルールを作成します。
列を選択: おすすめのルールを適用する列を選択します。
プロジェクトのスキャン: 既存のデータ プロファイリング スキャンに基づく推奨事項。デフォルトでは、Dataplex はデータ品質スキャンを作成するものと同じプロジェクトからプロファイリング スキャンを選択します。別のプロジェクトでスキャンを作成した場合は、プロファイル スキャンを pull するプロジェクトを指定する必要があります。
プロファイル結果の選択: 選択した列とプロジェクトに基づいて、複数のプロファイルの結果が表示されます。
1 つ以上のプロファイル結果を選択し、[OK] をクリックします。これによって選択するルールのリストが入力されます。
編集するルールをチェックボックスで選択し、[選択] をクリックします。選択すると、ルールが現在のルールリストに追加されます。その後、ルールを編集できます。
組み込みルールの種類: 事前定義ルールからルールを作成します。事前定義ルールのリストを確認します。
列を選択: ルールを選択する列を選択します。
ルールの種類を選択する: 選択した列に基づいて、選択可能な複数のルールの種類が表示されます。
1 つ以上のルールの種類を選択し、[OK] をクリックします。これによって選択するルールのリストが入力されます。
編集するルールをチェックボックスで選択し、[選択] をクリックします。選択すると、ルールが現在のルールリストに追加されます。その後、ルールを編集できます。
SQL 行チェックルール: 各行に適用するカスタム SQL ルールを作成します(カスタム SQL 行チェックルール)。
[ディメンション] で、ディメンションを 1 つ選択します。
[合格のしきい値] で、チェックに合格する必要があるレコードの割合を選択します。
[列名] で列を選択します。
[SQL 式を指定] フィールドに、ブール値の
true
(合格)またはfalse
(不合格)と評価される SQL 式を入力します。詳細については、サポートされているカスタム SQL ルールの種類と、このドキュメントのデータ品質ルールの定義セクションの例をご覧ください。[追加] をクリックします。
SQL 集計チェックルール: カスタム SQL テーブル条件ルールを作成します。
[ディメンション] で、ディメンションを 1 つ選択します。
[列名] で列を選択します。
[SQL 式を指定] フィールドに、ブール値の
true
(合格)またはfalse
(不合格)と評価される SQL 式を入力します。詳細については、サポートされているカスタム SQL ルールの種類と、このドキュメントのデータ品質ルールの定義セクションの例をご覧ください。[追加] をクリックします。
SQL アサーション ルール: データの無効な状態を確認するカスタム SQL アサーション ルールを作成します。
[ディメンション] で、ディメンションを 1 つ選択します。
省略可: [列名] で列を選択します。
[SQL ステートメントを指定] フィールドに、無効な状態と一致する行を返す SQL ステートメントを入力します。行が返された場合、このルールは失敗します。SQL ステートメントで末尾のセミコロンを省略します。詳細については、サポートされているカスタム SQL ルールの種類と、このドキュメントのデータ品質ルールの定義セクションの例をご覧ください。
[追加] をクリックします。
Dataplex では、モニタリングとアラートのためのデータ品質ルールにカスタム名を使用できます。どのデータ品質ルールでも、必要に応じてカスタムルール名と説明を割り当てることができます。これを行うには、ルールを編集して、次の詳細を指定します。
- ルール名: カスタムルール名を 63 文字以下で入力します。 ルール名には、文字(az、AZ)、数字(0 ~ 9)、ハイフン(-)を使用できます。先頭は文字、末尾は数字または文字にする必要があります
- 説明: ルールの説明を入力します(最大 1,024 文字)。
[続行] をクリックします。
省略可: スキャン結果を BigQuery 標準テーブルにエクスポートします。[ブラウジング] をクリックして、データ品質スキャンの結果を保存する既存の BigQuery データセットを選択します。
指定したテーブルが存在しない場合は、Dataplex によって作成されます。既存のテーブルを使用している場合は、エクスポート テーブル スキーマとの互換性があることを確認してください。
[作成] をクリックします。
スキャンが作成されたら、[今すぐ実行] をクリックすることで、いつでもスキャンを実行できます。
gcloud
データ品質スキャンを作成するには、gcloud dataplex datascans create data-quality
コマンドを使用します。
ソースデータが Dataplex レイクに編成されている場合は、--data-source-entity
フラグを指定します。
gcloud dataplex datascans create data-quality DATASCAN \
--location=LOCATION \
--data-quality-spec-file=DATA_QUALITY_SPEC_FILE \
--data-source-entity=DATA_SOURCE_ENTITY
ソースデータが Dataplex レイクに編成されていない場合は、--data-source-resource
フラグを指定します。
gcloud dataplex datascans create data-quality DATASCAN \
--location=LOCATION \
--data-quality-spec-file=DATA_QUALITY_SPEC_FILE \
--data-source-resource=DATA_SOURCE_RESOURCE
次の変数を置き換えます。
DATASCAN
: データ品質スキャンの名前。LOCATION
: データ品質スキャンを作成する Google Cloud リージョン。DATA_QUALITY_SPEC_FILE
: データ品質スキャンの仕様を含む JSON または YAML ファイルのパス。このファイルは、ローカル ファイルまたは接頭辞gs://
を持つ Cloud Storage パスです。 このファイルを使用して、スキャンのデータ品質ルールを指定します。このファイルで、フィルタ、サンプリング率、BigQuery へのエクスポートやメール通知の送信などのスキャン後アクションなどの詳細を指定することもできます。JSON 表現に関するドキュメントをご覧ください。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
REST
API Explorer を使用して、データ品質 スキャンを作成します。
データ プロファイリング スキャンの結果に基づくルール推奨事項を使用してデータ品質スキャンのルールを作成する場合は、データ プロファイリング スキャンで dataScans.jobs.generateDataQualityRules
メソッドを呼び出して推奨事項を取得します。
テーブル スキーマのエクスポート
データ品質スキャンの結果を既存の BigQuery テーブルにエクスポートするには、次のテーブル スキーマと互換性があることを確認します。
列名 | 列データ型 | サブフィールド名 (該当する場合) |
サブフィールドのデータ型 | モード | 例 |
---|---|---|---|---|---|
data_quality_scan | struct/record |
resource_name |
string |
nullable | //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan |
project_id |
string |
nullable | dataplex-back-end-dev-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/dataplex-back-end-dev-project/locations/europe-west2/lakes/a0-datascan-test-lake/zones/a0-datascan-test-zone/entities/table1 テーブルのケース: //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table
|
dataplex_entity_project_id |
string |
nullable | dataplex-back-end-dev-project |
||
dataplex_entity_project_number |
integer |
nullable | 123456789 |
||
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 | test-project |
||
table_project_number |
integer |
nullable | 987654321 |
||
dataset_id |
string |
nullable | (ソースがテーブルである場合にのみ有効)test-dataset |
||
table_id |
string |
nullable | (ソースがテーブルである場合にのみ有効)test-table |
||
data_quality_job_id | string |
nullable | caeba234-cfde-4fca-9e5b-fe02a9812e38 |
||
data_quality_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 |
||
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 |
||
rule_name | string |
nullable | test-rule |
||
rule_type | string |
nullable | Range Check |
||
rule_evaluation_type | string |
nullable | Per row |
||
rule_column | string |
nullable | Rule only attached to a certain column |
||
rule_dimension | string |
nullable | UNIQUENESS |
||
job_quality_result | struct/record |
passed |
boolean |
nullable | true /false |
score |
float |
nullable | 90.8 |
||
job_dimension_result | json |
nullable | {"ACCURACY":{"passed":true,"score":100},"CONSISTENCY":{"passed":false,"score":60}}
|
||
rule_threshold_percent | float |
nullable | (0.0〜100.0)Rule-threshold-pct in API * 100 |
||
rule_parameters | json |
nullable | {min: 24, max:5345} |
||
rule_pass | boolean |
nullable | True |
||
rule_rows_evaluated | integer |
nullable | 7400 |
||
rule_rows_passed | integer |
nullable | 3 |
||
rule_rows_null | integer |
nullable | 4 |
||
rule_failed_records_query | string |
nullable | "SELECT * FROM `test-project.test-dataset.test-table` WHERE (NOT((`cTime` >= '15:31:38.776361' and `cTime` <= '19:23:53.754823') IS TRUE));" |
データ品質スキャンジョブに BigQueryExport を構成する際は、次のガイドラインに従ってください。
resultsTable
フィールドには、//bigquery.googleapis.com/projects/{project-id}/datasets/{dataset-id}/tables/{table-id}
の形式を使用します。- BigQuery 標準テーブルを使用します。
- スキャンが作成または更新されたときにテーブルが存在しない場合は、Dataplex によってテーブルが作成されます。
- デフォルトでは、テーブルは
job_start_time
列で毎日パーティション分割されます。 - テーブルを他の構成でパーティション分割する場合や、パーティションを作成しない場合は、必要なスキーマと構成でテーブルを再作成し、事前に作成されたテーブルを結果テーブルとして用意します。
- 結果テーブルがソーステーブルと同じ場所にあることを確認します。
- プロジェクトで VPC-SC が構成されている場合、結果テーブルはソーステーブルと同じ VPC-SC 境界内にある必要があります。
- スキャン実行ステージでテーブルが変更されると、現在実行中のジョブが以前の結果テーブルにエクスポートされ、テーブルの変更は次のスキャンジョブから有効になります。
- テーブル スキーマを変更しないでください。列をカスタマイズする必要がある場合は、テーブルにビューを作成します。
- 費用を削減するには、ユースケースに基づいてパーティションの有効期限を設定します。 詳細については、パーティションの有効期限を設定する方法をご覧ください。
データ品質スキャンを実行する
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
実行するデータ品質スキャンをクリックします。
[今すぐ実行] をクリックします。
gcloud
データ品質スキャンを実行するには、gcloud dataplex datascans run
コマンドを使用します。
gcloud dataplex datascans run DATASCAN \ --location=LOCATION \
次の変数を置き換えます。
LOCATION
: データ品質スキャンが作成された Google Cloud リージョン。DATASCAN
: データ品質スキャンの名前。
REST
API Explorer を使用して、データ品質スキャンを実行します。
データ品質スキャンの結果を表示する
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
スキャンの詳細な結果を表示するには、スキャンの名前をクリックします。
[概要] セクションには、いつスキャンが実行されたか、各ジョブでスキャンされたレコード数、すべてのデータ品質チェックに合格したか、失敗した場合、失敗したデータ品質チェックの数、失敗したディメンションなど、過去 7 回のジョブに関する情報が表示されます。
[データ品質スキャンの構成] セクションには、スキャンについての詳細が表示されます。
合格したルールの割合を示すデータ品質スコアを確認するには、[ジョブ履歴] タブをクリックします。ジョブ ID をクリックします。
gcloud
データ品質スキャンジョブの結果を表示するには、gcloud dataplex datascans jobs describe
コマンドを使用します。
gcloud dataplex datascans jobs describe JOB \ --location=LOCATION \ --datascan=DATASCAN \ --view=FULL
次の変数を置き換えます。
JOB
: データ品質スキャンジョブのジョブ ID。LOCATION
: データ品質スキャンが作成された Google Cloud リージョン。DATASCAN
: ジョブが属するデータ品質スキャンの名前。--view=FULL
: スキャンジョブの結果を表示するには、FULL
を指定します。
REST
API Explorer を使用して、データ品質スキャンの結果を表示します。
スキャン結果の履歴を表示する
Dataplex は、過去 300 件のジョブ、または過去 1 年間のいずれか早いほうのデータ プロファイルのスキャン履歴を保存します。
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
スキャンの名前をクリックします。
[ジョブ履歴] タブをクリックします。
[ジョブ履歴] タブは、過去のジョブに関する情報を提供します。 すべてのジョブ、各ジョブでスキャンされたレコード数、ジョブのステータス、ジョブの実行時刻、各ルールの合否などが表示されます。
ジョブについての詳細情報を表示するには、[ジョブ ID] 列でジョブをクリックします。
gcloud
データ品質スキャンのすべてのジョブを表示するには、gcloud dataplex datascans jobs list
コマンドを使用します。
gcloud dataplex datascans jobs list \ --location=LOCATION \ --datascan=DATASCAN \
次の変数を置き換えます。
LOCATION
: データ品質スキャンが作成された Google Cloud リージョン。DATASCAN
: すべてのジョブを表示するデータ品質スキャンの名前。
REST
API Explorer を使用して、すべてのスキャンジョブを表示します。
公開された結果を共有する
データ プロファイル スキャンを作成する際に、スキャン結果を Google Cloud コンソールの BigQuery と Data Catalog ページで公開することを選択した場合は、最新のスキャン結果が、これらのページの [データ品質] タブで利用可能です。
組織内のユーザーに、公開されたスキャン結果へのアクセスを許可することができます。スキャン結果へのアクセスを許可する手順は次のとおりです。
Google Cloud コンソールで、[データ品質] ページに移動します。
結果を共有するデータ品質スキャンをクリックします。
[権限] タブに移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、アクセス権限を付与するメールアドレスを追加します。
[ロールを選択] フィールドで、[Dataplex DataScan データ閲覧者] を選択します。
[保存] をクリックします。
プリンシパルの公開スキャン結果へのアクセス権を削除する手順は次のとおりです。
Google Cloud コンソールで、[データ品質] ページに移動します。
結果を共有するデータ品質スキャンをクリックします。
[権限] タブに移動します。
[Dataplex DataScan データ閲覧者] のロールを削除するプリンシパルを選択します。
[アクセス権を削除] をクリックします。
[確認] をクリックします。
Cloud Logging でアラートを設定する
Cloud Logging のログを使用してデータ品質エラーのアラートを設定する手順は次のとおりです。
Console
Google Cloud コンソールで、Cloud Logging の [ログ エクスプローラ] に移動します。
[ログ エクスプローラ] に移動
[クエリ] ウィンドウで、クエリを入力します。サンプルクエリをご覧ください。
[クエリを実行] をクリックします。
[アラートを作成] をクリックします。サイドパネルが開きます。
アラート ポリシー名を入力し、[次へ] をクリックします。
クエリを確認します。
[ログをプレビュー] ボタンをクリックして、クエリをテストします。一致する条件のログが表示されます。
[次へ] をクリックします。
通知の間隔を設定し、[次へ] をクリックします。
アラートの通知先を定義し、[保存] をクリックしてアラート ポリシーを作成します。
または、Google Cloud コンソールで [Monitoring] > [アラート] に移動し、アラートを構成して編集することも可能です。
gcloud
サポートされていません。
REST
API Explorer を使用して Cloud Logging でアラートを設定します。
ジョブレベルまたはディメンション レベルのアラートを設定するためのサンプルクエリ
データ品質スキャンのデータ品質全体のエラーアラートを設定するサンプルクエリ。
resource.type="dataplex.googleapis.com/DataScan" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND resource.labels.datascan_id="a0-test-dec6-dq-3" AND NOT jsonPayload.dataQuality.passed=true
特定のデータ品質スキャンのディメンション(一意性など)のデータ品質エラーに関するアラートを設定するサンプルクエリ。
resource.type="dataplex.googleapis.com/DataScan" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND resource.labels.datascan_id="a0-test-dec6-dq-3" AND jsonPayload.dataQuality.dimensionPassed.UNIQUENESS=false
テーブルのデータ品質エラーのアラートを設定するサンプルクエリ。
Dataplex レイクで編成されていない BigQuery テーブルに対するデータ品質エラーのアラートを設定します。
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.dataSource="//bigquery.googleapis.com/projects/test-project/datasets/testdataset/table/chicago_taxi_trips" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND NOT jsonPayload.dataQuality.passed=true
Dataplex レイクに編成された BigQuery テーブルに対するデータ品質エラーのアラートを設定します。
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.dataSource="projects/test-project/datasets/testdataset/table/chicago_taxi_trips" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND NOT jsonPayload.dataQuality.passed=true
ルールごとのアラートで設定するサンプルクエリ
データ品質スキャンに指定されたカスタムルール名を使用して、失敗したすべてのデータ品質ルールのアラートを設定するサンプルクエリ。
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.ruleName="custom-name" AND jsonPayload.result="FAILED"
データ品質スキャンの特定の評価タイプで失敗したすべてのデータ品質ルールのアラートを設定するサンプルクエリ。
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.evalutionType="PER_ROW" AND jsonPayload.result="FAILED"
データ品質スキャンに使用されるテーブル内の列に対して、失敗したすべてのデータ品質ルールのアラートを設定するサンプルクエリ。
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.column="CInteger" AND jsonPayload.result="FAILED"
データ品質エラーのトラブルシューティング
行レベルのルールがエラーになるジョブごとに、Dataplex はエラーになったレコードを取得するクエリを提供します。このクエリを実行して、ルールに一致しなかったレコードを確認します。
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
トラブルシューティングするレコードのスキャン名をクリックします。
[ジョブ履歴] タブをクリックします。
データ品質エラーを特定したジョブのジョブ ID をクリックします。
表示されたジョブ ウィンドウの [ルール] セクションで、[失敗したレコードを取得するクエリ] 列を見つけます。失敗したルールの [クエリをクリップボードにコピー] をクリックします。
BigQuery でクエリを実行して、ジョブの失敗の原因となったレコードを確認します。
gcloud
サポートされていません。
REST
API Explorer を使用して、失敗したジョブの失敗したレコードを取得するためのクエリを確認します。
データ品質スキャンを更新する
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
スキャンを編集する行で、縦 3 点リーダー > [編集] をクリックします。
値を編集します。
[保存] をクリックします。
gcloud
データ品質スキャンの説明を更新するには、gcloud dataplex datascans update data-quality
コマンドを使用します。
gcloud dataplex datascans update data-quality DATASCAN \ --location=LOCATION \ --description=DESCRIPTION
以下を置き換えます。
DATASCAN
: 更新するデータ品質スキャンの名前。LOCATION
: データ品質スキャンが作成された Google Cloud リージョン。DESCRIPTION
: データ品質スキャンの新しい説明。
REST
API Explorer を使用して、データ品質スキャンを編集します。
データ品質スキャンを削除する
Console
Google Cloud コンソールで、[データ品質] ページに移動します。
削除するスキャンをクリックします。
[削除] をクリックします。
gcloud
データ品質スキャンを削除するには、gcloud dataplex datascans delete
コマンドを使用します。
gcloud dataplex datascans delete DATASCAN \ --location=LOCATION \ --async
次の変数を置き換えます。
DATASCAN
: 削除するデータ品質スキャンの名前。LOCATION
: データ品質スキャンが作成された Google Cloud リージョン。
REST
API Explorer を使用して、データ品質スキャンを削除します。
次のステップ
- データ プロファイリングについて確認する。
- データ プロファイリングを使用する方法を確認する。
- チュートリアルに沿って、Terraform を使用してデータ品質ルールをコードとして管理する。