本页面介绍了如何创建 Dataplex Universal Catalog 数据质量扫描。
如需了解数据质量扫描,请参阅自动数据质量简介。
准备工作
启用 Dataplex API。
可选:如果您希望 Dataplex Universal Catalog 根据数据分析扫描的结果生成数据质量规则的建议,请创建并运行数据分析扫描。
所需的角色
如需对 BigQuery 表运行数据质量扫描,您需要拥有读取 BigQuery 表的权限,以及在用于扫描该表的项目中创建 BigQuery 作业的权限。
如果 BigQuery 表和数据质量扫描位于不同的项目中,则您需要为包含数据质量扫描的项目的 Dataplex Universal Catalog 服务账号授予相应 BigQuery 表的读取权限。
如果数据质量规则引用了其他表,则扫描项目的服务账号必须拥有这些表的读取权限。
如需获得将扫描结果导出到 BigQuery 表所需的权限,请让您的管理员为 Dataplex Universal Catalog 服务账号授予结果数据集和结果表的 BigQuery Data Editor (
roles/bigquery.dataEditor
) IAM 角色。这会授予以下权限:bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.update
bigquery.tables.updateData
如果 BigQuery 数据在 Dataplex Universal Catalog 数据湖中整理,请为 Dataplex Universal Catalog 服务账号授予 Dataplex Metadata Reader (
roles/dataplex.metadataReader
) 和 Dataplex Viewer (roles/dataplex.viewer
) IAM 角色。或者,您需要拥有以下所有权限: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
角色。或者,为 Dataplex Universal Catalog 服务账号分配以下权限:storage.buckets.get
storage.objects.get
如果您想将数据质量扫描结果作为 Dataplex Universal Catalog 元数据发布,则您必须获得该表的 BigQuery Data Editor (
roles/bigquery.dataEditor
) IAM 角色,以及与表位于相同位置的@bigquery
条目组的dataplex.entryGroups.useDataQualityScorecardAspect
权限。或者,您必须获得与该表位于相同位置的@bigquery
条目组的 Dataplex Catalog Editor (roles/dataplex.catalogEditor
) 角色。或者,您需要拥有以下所有权限:
bigquery.tables.get
bigquery.tables.update
bigquery.tables.updateData
bigquery.tables.delete
dataplex.entryGroups.useDataQualityScorecardAspect
或者,您需要拥有以下所有权限:
dataplex.entries.update
dataplex.entryGroups.useDataQualityScorecardAspect
如果您需要访问受 BigQuery 列级访问权限政策保护的列,请为 Dataplex Universal Catalog 服务账号分配这些列的权限。创建或更新数据扫描的用户也需要拥有这些列的权限。
如果某个表启用了 BigQuery 行级访问权限政策,则您只能扫描对 Dataplex Universal Catalog 服务账号可见的行。请注意,系统不会针对行级政策评估单个用户的访问权限。
所需的数据扫描角色
如需使用自动数据质量,您需要拥有运行数据扫描的权限,或者拥有运行数据扫描的预定义权限的角色。
下表列出了 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 权限 |
为用户授予以下一个或多个角色:
- 拥有对
DataScan
资源的完整访问权限:Dataplex DataScan Administrator (roles/dataplex.dataScanAdmin
) - 拥有对
DataScan
资源的写入权限:Dataplex DataScan Editor (roles/dataplex.dataScanEditor
) - 拥有对
DataScan
资源(不包括规则和结果)的读取权限:Dataplex DataScan Viewer (roles/dataplex.dataScanViewer
) - 拥有对
DataScan
资源(包括规则和结果)的读取权限:Dataplex DataScan DataViewer (roles/dataplex.dataScanDataViewer
)
定义数据质量规则
您可以使用内置规则或自定义 SQL 检查来定义数据质量规则。如果您使用的是 Google Cloud CLI,则可以在 JSON 或 YAML 文件中定义这些规则。
以下各部分中的示例展示了如何定义各种数据质量规则。这些规则用于验证包含客户交易数据的示例表。假设该表具有以下架构:
列名 | 列类型 | 列说明 |
---|---|---|
transaction_timestamp | 时间戳 | 交易的时间戳。该表按此字段进行分区。 |
customer_id | 字符串 | 客户 ID,格式为 8 个字母后跟 16 位数字。 |
transaction_id | 字符串 | 交易 ID 在整个表中必须是唯一的。 |
currency_id | 字符串 | 一种受支持的货币。货币类型必须与维度表 dim_currency 中的可用货币之一相匹配。
|
amount | float | 交易金额。 |
discount_pct | float | 折扣百分比。此值必须介于 0 到 100 之间。 |
使用内置规则类型定义数据质量规则
以下示例规则基于内置规则类型。您可以使用 Google Cloud 控制台或 API 基于内置规则类型创建规则。Dataplex Universal Catalog 可能会建议其中一些规则。
列名 | 规则类型 | 建议的维度 | 规则参数 |
---|---|---|---|
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 规则,请使用以下框架:
创建一次评估一行的规则时,请创建在 Dataplex Universal Catalog 评估查询
SELECT COUNTIF(CUSTOM_SQL_EXPRESSION) FROM TABLE
时生成成功行的数量的表达式。Dataplex Universal Catalog 会根据阈值检查成功行的数量。创建在多行之间进行评估或使用表条件的规则时,请创建在 Dataplex Universal Catalog 评估查询
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% 的时间都匹配。假设:在使用该规则之前已创建机器学习模型。使用以下命令创建机器学习模型:
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 检查是否应该应用折扣。该规则用于识别所有预测不匹配的情况。
假设:在使用该规则之前已创建机器学习模型。使用以下命令创建机器学习模型:
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
创建数据质量扫描
控制台
在 Google Cloud 控制台中,前往数据质量页面。
点击创建数据质量扫描。
在定义扫描窗口中,填写以下字段:
输入显示名称。
如果您未提供自己的 ID,系统会自动生成扫描 ID。请参阅资源命名惯例。
(可选)输入说明。
在表字段中,点击浏览,选择表,然后点击选择。Dataplex Universal Catalog 仅支持标准 BigQuery 表。
对于多区域数据集中的表,请选择要在其中创建数据扫描的区域。
如需浏览在 Dataplex Universal Catalog 数据湖中整理的表,请点击在 Dataplex 数据湖中浏览。
在范围字段中,选择增量或所有数据。
- 如果您选择增量:在时间戳列字段中,从 BigQuery 表中选择类型为
DATE
或TIMESTAMP
且单调递增的列,该列可用于识别新记录。它可以是用于对表进行分区的列。
- 如果您选择增量:在时间戳列字段中,从 BigQuery 表中选择类型为
可选:添加标签。标签是
key:value
对,可用于将相关对象组合在一起或者与其他 Google Cloud 资源组合在一起。如需过滤数据,请点击过滤条件。选中过滤行复选框。行过滤条件的输入值必须是有效的 SQL 表达式,可作为 GoogleSQL 语法中
WHERE
子句的一部分使用。例如,col1 >= 0
。过滤条件可以是多个列条件的组合。例如,col1 >= 0 AND col2 < 10
。如需对数据进行采样,请在采样规模列表中选择采样百分比。选择一个范围介于 0.0% 到 100.0% 之间的百分比值,最多精确到小数点后 3 位。对于较大的数据集,请选择一个较低的采样百分比。例如,对于一个约 1 PB 的表,如果您输入的值介于 0.1% 到 1.0% 之间,则 Dataplex Universal Catalog 会采样 1-10 TB 的数据。对于增量数据扫描,Dataplex Universal Catalog 会对最新增量应用采样。
如需将数据质量扫描结果作为 Dataplex Universal Catalog 元数据发布,请选中将结果发布到 BigQuery 和 Dataplex Catalog 复选框。
您可以在源表的 BigQuery 和 Dataplex Universal Catalog 页面中的数据质量标签页上查看最新扫描结果。如需使用户能够访问已发布的扫描结果,请参阅共享已发布的结果。
点击继续。
在时间表窗口中,选择以下选项之一:
重复:按时间表(每天、每周、每月或自定义)运行数据质量扫描作业。指定扫描的运行频率和时间。如果您选择自定义,请使用 cron 格式指定时间表。
按需:按需运行数据质量扫描作业。
点击继续。
在数据质量规则窗口中,定义要为此数据质量扫描配置的规则。点击添加规则,然后选择以下选项之一。
基于数据分析的建议:根据现有数据分析扫描,基于建议构建规则。
选择列:选择要获取其建议规则的列。
扫描项目:基于现有数据分析扫描的建议。默认情况下,Dataplex Universal Catalog 会从您创建数据质量扫描的同一项目中选择数据分析扫描。如果您在其他项目中创建了扫描,则必须指定要从中拉取数据分析扫描的项目。
选择数据分析结果:系统会根据您选择的列和项目显示多个数据分析结果。
选择一个或多个数据分析结果,然后点击确定。系统会填充一个规则列表以供选择。
勾选相应复选框,然后点击选择,即可选择要修改的规则。选择后,这些规则会添加到当前的规则列表中。然后,您可以修改规则。
内置规则类型:根据预定义规则构建规则。请参阅预定义规则列表。
选择列:选择要为其选择规则的列。
选择规则类型:根据您选择的列,系统会显示多种规则类型以供选择。
选择一种或多种规则类型,然后点击确定。系统会填充一个规则列表以供选择。
勾选相应复选框,然后点击选择,即可选择要修改的规则。选择后,这些规则会添加到当前的规则列表中。然后,您可以修改规则。
SQL 行检查规则:创建要应用于每个行的自定义 SQL 规则(自定义 SQL 行检查规则)。
在维度中,选择一个维度。
在通过阈值中,选择必须通过检查的记录所占的百分比。
在列名称中,选择一列。
在提供 SQL 表达式字段中,输入一个计算结果为布尔值
true
(通过)或false
(未通过)的 SQL 表达式。如需了解详情,请参阅本文档的支持的自定义 SQL 规则类型以及定义数据质量规则部分中的示例。点击添加。
SQL 聚合检查规则:创建自定义 SQL 表条件规则。
在维度中,选择一个维度。
在列名称中,选择一列。
在提供 SQL 表达式字段中,输入一个计算结果为布尔值
true
(通过)或false
(未通过)的 SQL 表达式。如需了解详情,请参阅本文档的支持的自定义 SQL 规则类型以及定义数据质量规则部分中的示例。点击添加。
SQL 断言规则:创建自定义 SQL 断言规则,以检查数据的无效状态。
在维度中,选择一个维度。
可选:在列名称中,选择一列。
在提供 SQL 语句字段中,输入一个 SQL 语句,以返回与无效状态匹配的行。如果系统返回了任何行,表示此规则失败。从 SQL 语句中省略末尾的英文分号。如需了解详情,请参阅本文档的支持的自定义 SQL 规则类型以及定义数据质量规则部分中的示例。
点击添加。
Dataplex Universal Catalog 允许为数据质量规则指定自定义名称,以便进行监控和提醒。对于任何数据质量规则,您都可以选择性地分配自定义规则名称和说明。为此,请修改规则并指定以下详细信息:
- 规则名称:输入自定义规则名称,最多 63 个字符。规则名称可以包含字母(a-z、A-Z)、数字 (0-9) 和连字符 (-),并且必须以字母开头,以数字或字母结尾。
- 说明:输入规则说明,长度上限为 1,024 个字符。
点击继续。
可选:将扫描结果导出到 BigQuery 标准表。在将扫描结果导出到 BigQuery 表部分中,点击浏览以选择一个现有的 BigQuery 数据集来存储数据质量扫描结果。
如果指定的表不存在,Dataplex Universal Catalog 会为您创建该表。如果您使用的是现有表,请确保该表与导出表架构兼容。
可选:设置邮件通知报告,以提醒相关人员数据质量扫描作业的状态和结果。在通知报告部分,点击
添加邮件 ID,然后输入最多五个邮箱。然后,选择要针对其发送报告的场景:- 质量得分 (<=):当作业成功完成但数据质量得分低于指定的目标得分时发送报告。输入介于 0 到 100 之间的目标质量得分。
- 作业失败:当作业本身失败时发送报告,无论数据质量结果如何。
- 作业完成(成功或失败):在作业结束时发送报告,无论数据质量结果如何。
点击创建。
创建扫描后,您可以随时点击立即运行来运行扫描。
gcloud
如需创建数据质量扫描,请使用 gcloud dataplex datascans create data-quality
命令。
如果源数据在 Dataplex Universal Catalog 数据湖中整理,请添加 --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 Universal Catalog 湖中整理,请添加 --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 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
。
REST
使用 APIs 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));" |
||
rule_assertion_row_count | integer |
nullable | 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 控制台中,前往数据质量页面。
点击要运行的数据质量扫描。
点击立即运行。
gcloud
如需运行数据质量扫描,请使用 gcloud dataplex datascans run
命令:
gcloud dataplex datascans run DATASCAN \ --location=LOCATION \
执行以下变量替换操作:
LOCATION
:在其中创建数据质量扫描的 Google Cloud 区域。DATASCAN
:数据质量扫描的名称。
REST
使用 APIs Explorer 运行数据质量扫描。
查看数据质量扫描结果
控制台
在 Google Cloud 控制台中,前往数据质量页面。
如需查看扫描的详细结果,请点击该扫描的名称。
概览部分显示有关过去七个作业的信息,包括扫描运行时间、每个作业中扫描的记录数、是否通过了所有数据质量检查、是否存在失败情况、未通过的数据质量检查数量以及哪些维度失败。
数据质量扫描配置部分显示有关扫描的详细信息。
如需查看表示通过的规则百分比的数据质量得分,请点击作业历史记录标签页。然后,点击作业 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
使用 APIs Explorer 查看数据质量扫描的结果。
查看历史扫描结果
Dataplex Universal Catalog 会保存最近 300 个作业或过去一年的数据质量扫描历史记录,以先到者为准。
控制台
在 Google Cloud 控制台中,前往数据质量页面。
点击扫描的名称。
点击作业历史记录标签页。
作业历史记录标签页提供有关过往作业的信息。其中列出了所有作业、每个作业中扫描的记录数、作业状态、作业运行时间、每个规则是通过还是未通过,等等。
如需查看有关作业的详细信息,请点击作业 ID 列中的任何作业。
gcloud
如需查看数据质量扫描的所有作业,请使用 gcloud dataplex datascans jobs list
命令:
gcloud dataplex datascans jobs list \ --location=LOCATION \ --datascan=DATASCAN \
执行以下变量替换操作:
LOCATION
:在其中创建数据质量扫描的 Google Cloud 区域。DATASCAN
:要查看其所有作业的数据质量扫描的名称。
REST
使用 APIs Explorer 查看所有扫描作业。
共享已发布的结果
创建数据质量扫描时,如果您选择将扫描结果作为 Dataplex Universal Catalog 元数据发布,则最新扫描结果会显示在Google Cloud 控制台的 BigQuery 和 Dataplex Universal Catalog 页面中相应表的数据质量标签页上。
您可以允许组织中的用户访问已发布的扫描结果。如需授予对扫描结果的访问权限,请按照以下步骤操作:
在 Google Cloud 控制台中,前往数据质量页面。
点击您要共享其结果的数据质量扫描。
前往权限标签页。
点击授予访问权限。
在新的主账号字段中,添加要向其授予访问权限的主账号。
在选择角色字段中,选择 Dataplex DataScan DataViewer。
点击保存。
如需移除主账号对已发布的扫描结果的访问权限,请按照以下步骤操作:
在 Google Cloud 控制台中,前往数据质量页面。
点击您要共享其结果的数据质量扫描。
前往权限标签页。
选择要移除其 Dataplex DataScan DataViewer 角色的主账号。
点击解除使用权限。
点击确认。
在 Cloud Logging 中设置提醒
如需使用 Cloud Logging 中的日志针对数据质量失败设置提醒,请按照以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Logging Logs Explorer。
在查询窗口中,输入查询。请参阅示例查询。
点击 Run Query。
点击创建提醒。 系统会打开一个侧边栏。
输入提醒政策名称,然后点击下一步。
查看查询。
点击预览日志按钮以测试查询。这会显示符合条件的日志。
点击下一步。
设置通知间隔时间,然后点击下一步。
定义应向哪些人发送提醒通知,然后点击保存以创建提醒政策。
或者,您也可以在Google Cloud 控制台中前往 Monitoring > 提醒,以配置和修改提醒。
gcloud
不受支持。
REST
使用 APIs 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 Universal Catalog 数据湖中整理的 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 Universal Catalog 数据湖中整理的 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 Universal Catalog 都会提供一个查询来获取失败的记录。运行此查询可查看与规则不匹配的记录。
控制台
在 Google Cloud 控制台中,前往数据质量页面。
点击要排查其记录问题的扫描的名称。
点击作业历史记录标签页。
点击确定数据质量失败的作业的 ID。
在随即打开的作业结果窗口的规则部分中,找到查询以获取失败的记录列。点击失败规则对应的将查询复制到剪贴板。
在 BigQuery 中运行查询,以查看导致作业失败的记录。
gcloud
不受支持。
REST
使用 APIs Explorer 查看用于获取失败作业的失败记录的查询。
更新数据质量扫描
您可以修改现有数据质量扫描的各种设置,例如显示名称、过滤条件和时间表。
控制台
在 Google Cloud 控制台中,前往数据质量页面。
在要修改的扫描所在的行中,点击三个竖点 > 修改。
修改值。
点击保存。
gcloud
如需更新数据质量扫描的说明,请使用 gcloud dataplex datascans update data-quality
命令:
gcloud dataplex datascans update data-quality DATASCAN \ --location=LOCATION \ --description=DESCRIPTION
替换以下内容:
DATASCAN
:要更新的数据质量扫描的名称。LOCATION
:在其中创建数据质量扫描的 Google Cloud 区域。DESCRIPTION
:数据质量扫描的新说明。
REST
使用 APIs Explorer 修改数据质量扫描。
删除数据质量扫描
控制台
在 Google Cloud 控制台中,前往数据质量页面。
点击要删除的扫描。
点击删除。
gcloud
如需删除数据质量扫描,请使用 gcloud dataplex datascans delete
命令:
gcloud dataplex datascans delete DATASCAN \ --location=LOCATION \ --async
执行以下变量替换操作:
DATASCAN
:要删除的数据质量扫描的名称。LOCATION
:在其中创建数据质量扫描的 Google Cloud 区域。
REST
使用 APIs Explorer 删除数据质量扫描。
后续步骤
- 了解数据分析。
- 了解如何使用数据分析。
- 按照教程使用 Terraform 以代码形式管理数据质量规则。