本页面介绍了如何创建 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 | 浮点数 | 交易金额。 |
discount_pct | 浮点数 | 折扣百分比。此值必须介于 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
使用 API Explorer 创建数据质量扫描。
如果您想根据数据分析扫描的结果,使用规则建议来构建数据质量扫描的规则,请对数据分析扫描调用 dataScans.jobs.generateDataQualityRules
方法来获取建议。
导出表架构
如需将数据质量扫描结果导出到现有 BigQuery 表,请确保该表与以下表架构兼容:
列名 | 列数据类型 | 子字段名称 (如果适用) |
子字段数据类型 | 模式 | 示例 |
---|---|---|---|---|---|
data_quality_scan | struct/record |
resource_name |
string |
可为 null | //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan |
project_id |
string |
可为 null | dataplex-back-end-dev-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/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 |
可为 null | dataplex-back-end-dev-project |
||
dataplex_entity_project_number |
integer |
可为 null | 123456789 |
||
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 | test-project |
||
table_project_number |
integer |
可为 null | 987654321 |
||
dataset_id |
string |
可为 null | (仅当来源为表格时有效)test-dataset |
||
table_id |
string |
可为 null | (仅当来源为表格时有效)test-table |
||
data_quality_job_id | string |
可为 null | caeba234-cfde-4fca-9e5b-fe02a9812e38 |
||
data_quality_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 |
||
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 |
||
rule_name | string |
可为 null | test-rule |
||
rule_type | string |
可为 null | Range Check |
||
rule_evaluation_type | string |
可为 null | Per row |
||
rule_column | string |
可为 null | Rule only attached to a certain column |
||
rule_dimension | string |
可为 null | UNIQUENESS |
||
job_quality_result | struct/record |
passed |
boolean |
可为 null | true /false |
score |
float |
可为 null | 90.8 |
||
job_dimension_result | json |
可为 null | {"ACCURACY":{"passed":true,"score":100},"CONSISTENCY":{"passed":false,"score":60}}
|
||
rule_threshold_percent | float |
可为 null | (0.0-100.0)Rule-threshold-pct in API * 100 |
||
rule_parameters | json |
可为 null | {min: 24, max:5345} |
||
rule_pass | boolean |
可为 null | True |
||
rule_rows_evaluated | integer |
可为 null | 7400 |
||
rule_rows_passed | integer |
可为 null | 3 |
||
rule_rows_null | integer |
可为 null | 4 |
||
rule_failed_records_query | string |
可为 null | "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 |
可为 null | 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 控制台中,前往数据质量页面。
如需查看扫描的详细结果,请点击扫描的名称。
概览部分会显示有关过去 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
使用 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
使用 API 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 控制台中依次前往监控 > 提醒,以配置和修改提醒。
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
使用 API Explorer 删除数据质量扫描。
后续步骤
- 了解数据分析。
- 了解如何使用数据分析功能。
- 按照教程使用 Terraform 以代码形式管理数据质量规则。