本文档介绍了 Dataplex 自动数据质量, 可让您定义和衡量数据质量。您可以将 扫描数据、根据定义的规则验证数据,以及在出现以下情况时记录提醒: 数据不符合质量要求。您可以管理数据质量规则 即代码部署,从而提高数据生产流水线的完整性。
要开始使用,您可以使用 Dataplex 数据分析 规则建议,也可以在 Google Cloud 控制台中构建自定义规则。 Dataplex 提供监控、问题排查和 与 Dataplex Auto 集成的 Cloud Logging 提醒 数据质量。
概念模型
数据扫描是一项 Dataplex 作业,它会从
BigQuery 和 Cloud Storage 可以推断出各类
元数据。要使用自动数据质量衡量表的质量,您需要创建
一个类型为 data quality
的 DataScan
对象。扫描仅在以下情况下运行:
一个 BigQuery 表扫描会使用 Google Cloud 中的
租户项目,因此
您需要设置自己的基础架构
创建和使用数据质量扫描包括以下步骤:
- 定义数据质量规则
- 配置规则执行
- 分析数据质量扫描结果
- 设置监控和提醒
- 排查数据质量故障问题
规则定义
与数据质量扫描相关的数据质量规则定义了数据 预期。您可以通过以下方式创建数据质量规则:
- 使用 Dataplex 数据分析中的建议
- 使用预定义规则
- 创建自定义 SQL 规则
预定义规则
Dataplex 支持两类预定义规则:行级规则或 汇总。
- 行级
对于行级类别规则,预期会应用于 对每个数据行进行对比每行独立通过或 条件失败。例如
column_A_value < 1
。行级检查要求您指定通过阈值。当 符合规则的行的百分比低于阈值,即规则 失败。
- 汇总
对于汇总规则,期望值是 应用于整个数据中汇总的单个值。例如:
Avg(someCol) >= 10
要通过测试,检查的计算结果必须达到 布尔值true
。汇总规则不提供独立的通过或失败结果 数据。
对于这两种规则类别,您都可以设置以下参数:
- 规则适用的列。
- 一组预定义维度中的一个维度。
下表列出了受支持的行级规则和汇总规则类型:
规则类型 (Google Cloud 控制台中的名称) |
行级或汇总规则 | 说明 | 支持的列类型 | 规则专用参数 |
---|---|---|---|---|
RangeExpectation (范围检查) |
行级 | 检查该值是否介于最小值和最大值之间。 | 所有数字、日期和时间戳类型的列。 | 必需:
|
NonNullExpectation (Null 检查) |
行级 | 验证列值不是 NULL。 | 所有受支持的列类型。 | 必需:
|
SetExpectation (设置检查) |
行级 | 检查某列中的值是否为某个集中的指定值。 | 除 Record 和 Struct 之外的所有受支持的列类型。 |
必需:
|
RegexExpectation (正则表达式检查) |
行级 | 根据指定的正则表达式检查值。 | 字符串 | 必需:
|
Uniqueness (唯一性检查) |
汇总 | 检查某列中的所有值是否唯一。 | 除 Record 和 Struct 之外的所有受支持的列类型。 |
必需:
|
StatisticRangeExpectation (统计信息检查) |
汇总 | 检查给定的统计度量值是否与预期范围相符。 | 所有支持的数字列类型。 | 必需:
|
支持的自定义 SQL 规则类型
SQL 规则可让您灵活地使用自定义逻辑扩展验证。这些 规则有以下几种类型:
规则类型 | 行级或汇总规则 | 说明 | 支持的列类型 | 规则专用参数 | 示例 |
---|---|---|---|---|---|
行条件 | 行级 | 通过定义 SQL 为每一行指定预期值
表达式可以包含对另一个表的引用,例如 参照完整性检查。 |
所有列 | 必需:
|
grossWeight <= netWeight |
表条件 (聚合 SQL 表达式) |
汇总 | 这些规则针对每个表执行一次。提供一个 SQL 表达式,
计算结果为布尔值 SQL 表达式可以 使用表达式子查询添加对另一个表的引用。 |
所有列 | 必需:
|
简单的汇总示例: 使用表达式子查询来比较不同表中的值: |
SQL 断言 | 汇总 | 断言规则使用数据质量查询来查找失败的行 查询中指定的一个或多个条件。提供 SQL 语句 其计算结果为与无效状态匹配的行。如果 如果查询返回任何行,则规则会失败。 在 SQL 语句中省略结尾的分号。 SQL 语句可以 使用 表达式子查询。 |
所有列 | 必需:
|
使用简单的汇总示例来确保 使用表达式子查询来比较不同表中的值: |
如需查看示例规则,请参阅自动数据质量规则示例。
如需了解支持的 SQL 函数,请参阅 GoogleSQL 参考文档。
维度
利用维度,您可以汇总多条数据质量规则的结果, 和提醒。您必须将每条数据质量规则与一个 维度。Dataplex 支持以下维度:
- 时效性
- 音量
- 完整性
- 有效期
- 一致性
- 准确率
- 唯一性
规则中输入的内容
所有值参数都将以字符串值的形式传递给 API。 Dataplex 需要输入内容才能遵循 BigQuery 指定的格式。
二进制类型的参数可以作为 base64 编码的字符串进行传递。
类型 | 支持的格式 | 示例 |
---|---|---|
二元 | Base64 编码值 | YXBwbGU= |
时间戳 | YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]] [时区] OR YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset] |
2014-09-27 12:30:00.45-08 |
日期 | YYYY-M[M]-D[D] | 2014-09-27 |
时间 | [H]高:[M]M:[S]S[.DDDDDD] | 12:30:00.45 |
DateTime | YYYY-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] | 2014-09-27 12:30:00.45 |
数据引用参数
创建自定义 SQL 规则时,您可以引用数据源表和所有
通过使用数据引用参数 ${data()}
而不是明确提及源表及其过滤条件。
Dataplex 将参数解释为对来源的引用
表格及其过滤条件。前提条件过滤条件的示例包括行过滤条件
抽样百分比和增量过滤器
例如,假设您有一个名为
my_project_id.dim_dataset.dim_currency
。您想要运行增量数据
仅对每日新数据进行扫描的质量扫描。一个行过滤条件,用于过滤
今天的条目 transaction_timestamp >= current_date()
将应用于
表格。
用于查找今天具有 discount_pct
的行的自定义 SQL 规则如下所示:
discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())
如果您使用数据引用参数,则可以简化规则。将
使用 ${data()}
提及表及其前提条件过滤条件
参数:
discount_pct IN (SELECT discount_pct FROM ${data()})
Dataplex 将 ${data()}
参数解读为
通过今天的条目引用数据源表
my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date()
。
在此示例中,数据引用参数仅指递增
数据。
${data()}
参数区分大小写。
在子查询中使用别名来引用源表中的列时,
可以使用数据引用参数来引用源表,也可以省略
表引用。请勿使用
WHERE
子句中的直接表引用。
推荐:
使用数据引用参数来引用源表:
discount_pct IN ( SELECT discount_pct FROM `my_project_id.dim_dataset.dim_currency` AS temp-table WHERE temp-table.transaction_timestamp = ${data()}.timestamp )
省略表引用:
discount_pct IN ( SELECT discount_pct FROM `my_project_id.dim_dataset.dim_currency` AS temp-table WHERE temp-table.transaction_timestamp = timestamp )
不推荐:
请勿使用直接表引用来引用源表中的列:
discount_pct IN ( SELECT discount_pct FROM `my_project_id.dim_dataset.dim_currency` AS temp-table WHERE temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp )
规则执行
您可以安排数据质量扫描以特定的时间间隔运行,也可以 您可以按需运行扫描如需管理数据质量扫描,您可以使用 API 或 Google Cloud 控制台。
当您运行数据质量扫描时,Dataplex 会创建一个作业。作为 数据质量扫描规范,您可以指定作业的范围 为以下状态之一:
- 全桌
- 每个作业都会验证整个表。
- 增量
- 每个作业都会验证增量数据。接收者
确定增量,请在
Date
Timestamp
一个可用作标记的表格通常,此列是显示 对表进行分区
过滤数据
Dataplex 可以使用 行过滤条件。通过创建行过滤条件,您可以重点关注特定列 时间段或特定细分(例如某个区域)使用过滤器可以 减少执行时间和费用,例如,过滤掉带有时间戳的数据 。
样本数据
通过 Dataplex,您可以指定数据中记录的百分比 运行数据质量扫描所需的示例。在 减少数据样本的执行时间以及查询 整个数据集中。
数据质量扫描结果
数据质量扫描结果可在 Dataplex 中查看。 您还可以使用以下方法查看和分析扫描结果:
将结果导出到 BigQuery
您可以将扫描结果导出到 BigQuery 表,以便进一步 分析。要自定义报告,您可以将 BigQuery 导出到 Looker 信息中心。您可以生成汇总报告 (在多次扫描中使用同一结果表)。
在 Google Cloud 控制台中发布结果
您可以将数据质量扫描结果发布到源表的 BigQuery 和 Data Catalog 页面 Google Cloud 控制台。最新的扫描结果可以在以下位置找到: 源表的 Data Quality(数据质量)标签页。
查看数据质量得分
每个扫描结果都会提供数据质量得分,该得分表示 已通过的规则。得分在整体作业级别报告, 维度级别(如果规则是针对某个列进行评估)和维度级别。使用 数据质量得分,以对不同表或列的数据质量进行标准化; 跟踪趋势,识别不符合质量要求的数据。
如需了解详情,请参阅 查看数据质量扫描结果。
监控和提醒
您可以使用以下工具来监控和接收有关数据质量扫描的提醒 方法:
在 Cloud Logging 中设置提醒
您可以使用
data_scan
和 Logs Explorer 中的data_quality_scan_rule_result
日志。对于每个数据质量作业,包含
data_scan_type
字段的data_scan
日志 设置为DATA_QUALITY
包含以下信息:- 用于数据扫描的数据源。
- 作业执行详细信息,例如创建时间、开始时间、结束时间和 作业状态。
- 数据质量作业的结果:通过或失败。
- 维度级通过或失败。
每个成功的作业都包含一个
data_quality_scan_rule_result
记录,其中包含有关该作业中每条规则的以下详细信息:- 配置信息,例如规则名称、规则类型、评估类型 和维度。
- 结果信息,例如通过或失败、总行数、传递的行数 行数、null 行数和已评估的行数。
日志中的信息可通过 API 获取 Google Cloud 控制台。您可以使用此信息来设置提醒。对于 请参阅 在 Logging 中设置提醒。
发送电子邮件通知
您可以发送电子邮件通知,提醒他人相关状态,并 数据质量作业的结果。通知适用于 以下情况:
- 数据质量得分低于指定的目标得分
- 作业失败
- 作业已完成
您可以配置 创建数据质量扫描。
排查数据质量故障问题
当规则失效时,Dataplex 会生成查询来获取失败的 记录。运行此查询可查看与您的规则不匹配的记录。对于 请参阅 排查数据质量故障问题。
限制
- 数据质量扫描结果不会以如下名义发布到 Data Catalog 代码。
- gcloud CLI 不支持规则建议。
- 维度的选择固定为预定义的七个维度之一。
- 每次数据质量扫描的规则数量上限为 1,000。
- 只有 gcloud CLI 和 API 支持电子邮件通知。
- 支持在列级别报告的数据质量得分 。
价格
Dataplex 使用高级处理 SKU 来收取汽车费用 数据质量。如需了解详情,请参阅 Dataplex 价格。
目前尚不支持将自动数据质量结果发布到 Catalog。当 将按照与目录元数据相同的费率收费 存储价格。如需了解详情,请参阅价格。
自动数据质量的 Dataplex 高级处理费用按 最低一分钟。
数据质量扫描失败不会产生任何费用。
该费用取决于行数、列数和 数据质量规则配置、 分区和聚簇设置,以及 gscan。
您可以通过以下几种方式降低自动数据质量扫描的费用:
将数据质量费用与 Dataplex 中的其他费用分开 高级处理 SKU, Cloud Billing 报告,使用标签
goog-dataplex-workload-type
,值为DATA_QUALITY
。如需过滤总费用,请使用以下标签:
goog-dataplex-datascan-data-source-dataplex-entity
goog-dataplex-datascan-data-source-dataplex-lake
goog-dataplex-datascan-data-source-dataplex-zone
goog-dataplex-datascan-data-source-project
goog-dataplex-datascan-data-source-region
goog-dataplex-datascan-id
goog-dataplex-datascan-job-id
后续步骤
- 了解如何使用自动数据质量功能。
- 了解数据分析。
- 了解如何使用数据分析功能。