本页面介绍了如何创建 Dataplex Universal Catalog 数据质量扫描。
如需了解数据质量扫描,请参阅自动数据质量简介。
准备工作
- 
  
   
   
     
   
  
 
   
 
 
  
  
    
      Enable the Dataplex API. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 可选:如果您希望 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 服务账号授予相应存储桶的 Storage Object Viewer ( - 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.update- 针对表
- dataplex.entryGroups.useDataQualityScorecardAspect- 针对- @bigquery条目群组
 - 或者,您需要拥有以下所有权限: - dataplex.entries.update- 针对- @bigquery条目群组
- dataplex.entryGroups.useDataQualityScorecardAspect- 针对- @bigquery条目群组
 
- 如果您需要访问受 BigQuery 列级访问权限政策保护的列,请为 Dataplex Universal Catalog 服务账号分配这些列的权限。创建或更新数据扫描的用户也需要拥有这些列的权限。 
- 如果某个表启用了 BigQuery 行级访问权限政策,则您只能扫描对 Dataplex Universal Catalog 服务账号可见的行。请注意,系统不会针对行级政策评估单个用户的访问权限。 
所需的数据扫描角色
如需使用自动数据质量,请让您的管理员为您授予以下 IAM 角色之一:
- 拥有对 DataScan资源的完整访问权限:Dataplex DataScan Administrator (roles/dataplex.dataScanAdmin)
- 创建 DataScan资源:项目的 Dataplex DataScan Creator (roles/dataplex.dataScanCreator)
- 拥有对 DataScan资源的写入权限:Dataplex DataScan Editor (roles/dataplex.dataScanEditor)
- 拥有对 DataScan资源(不包括规则和结果)的读取权限:Dataplex DataScan Viewer (roles/dataplex.dataScanViewer)
- 拥有对 DataScan资源(包括规则和结果)的读取权限:Dataplex DataScan DataViewer (roles/dataplex.dataScanDataViewer)
下表列出了 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 权限 | 
定义数据质量规则
您可以使用内置规则或自定义 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 创建或更新数据质量扫描时,您可以将如下所示的 YAML 文件用作 --data-quality-spec-file 参数的输入。
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
samplingPercent: 50
rowFilter: discount_pct > 100
postScanActions:
  bigqueryExport:
    resultsTable: projects/my_project_id/datasets/dim_dataset/tables/dim_currency
  notificationReport:
    recipients:
      emails:
      - '222larabrown@gmail.com'
      - 'cloudysanfrancisco@gmail.com'
    scoreThresholdTrigger:
      scoreThreshold: 50
    jobFailureTrigger: {}
    jobEndTrigger: {}
catalogPublishingEnabled: true
创建数据质量扫描
控制台
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击创建数据质量扫描。 
- 在定义扫描窗口中,填写以下字段: - 可选:输入显示名称。 
- 输入 ID。请参阅资源命名惯例。 
- (可选)输入说明。 
- 在表字段中,点击浏览。选择要扫描的表,然后点击选择。 仅支持标准 BigQuery 表。 - 对于多区域数据集中的表,请选择要在其中创建数据扫描的区域。 - 如需浏览在 Dataplex Universal Catalog 数据湖中整理的表,请点击在 Dataplex 数据湖中浏览。 
- 在范围字段中,选择增量或所有数据。 - 如果您选择增量:在时间戳列字段中,从 BigQuery 表中选择类型为 DATE或TIMESTAMP且可随新记录的添加而递增的列,该列可用于识别新记录。它可以是用于对表进行分区的列。
 
- 如果您选择增量:在时间戳列字段中,从 BigQuery 表中选择类型为 
- 如需过滤数据,请选中过滤行复选框。提供一个行过滤条件,该过滤条件包含一个有效的 SQL 表达式,该表达式可用于 GoogleSQL 语法中的 - WHERE子句。例如- col1 >= 0。过滤条件可以是多个列条件的组合。例如- col1 >= 0 AND col2 < 10。
- 如需对数据进行采样,请在采样规模列表中选择采样百分比。选择一个范围介于 0.0% 到 100.0% 之间的百分比值,最多精确到小数点后 3 位。对于较大的数据集,请选择一个较低的采样百分比。例如,对于一个 1 PB 的表,如果您输入的值介于 0.1% 到 1.0% 之间,则数据质量扫描会采样 1-10 TB 的数据。对于增量数据扫描,数据质量扫描会对最新增量应用采样。 
- 如需将数据质量扫描结果作为 Dataplex Universal Catalog 元数据发布,请选中将结果发布到 BigQuery 和 Dataplex Catalog 复选框。 - 您可以在源表的 BigQuery 和 Dataplex Universal Catalog 页面中的数据质量标签页上查看最新扫描结果。如需使用户能够访问已发布的扫描结果,请参阅本文档的授予对数据分析扫描结果的访问权限部分。 
- 在时间表部分中,选择以下选项之一: - 重复:按时间表(每小时、每天、每周、每月或自定义)运行数据质量扫描。指定扫描的运行频率和时间。如果您选择自定义,请使用 cron 格式指定时间表。 
- 按需:按需运行数据质量扫描。 
 
- 点击继续。 
 
- 在数据质量规则窗口中,定义要为此数据质量扫描配置的规则。 - 点击添加规则,然后从以下选项中进行选择。 - 基于数据分析的建议:根据现有数据分析扫描,基于建议构建规则。 - 选择列:选择要获取其建议规则的列。 
- 选择扫描项目:如果数据分析扫描与您要创建数据质量扫描的项目不在同一项目中,请选择要从中拉取数据分析扫描的项目。 
- 选择分析结果:选择一个或多个分析结果,然后点击确定。系统会填充一个建议规则列表,您可以从这些规则入手。 
- 选中要添加的规则对应的复选框,然后点击选择。选择后,这些规则会添加到当前的规则列表中。然后,您可以修改规则。 
 
- 内置规则类型:根据预定义规则构建规则。请参阅预定义规则列表。 - 选择列:选择要为其选择规则的列。 
- 选择规则类型:选择要从中选择的规则类型,然后点击确定。显示的规则类型取决于您选择的列。 
- 选中要添加的规则对应的复选框,然后点击选择。选择后,这些规则会添加到当前的规则列表中。然后,您可以修改规则。 
 
- SQL 行检查规则:创建要应用于每行的自定义 SQL 规则。 - 在维度中,选择一个维度。 
- 在通过阈值中,选择必须通过检查的记录所占的百分比。 
- 在列名称中,选择一列。 
- 在提供 SQL 表达式字段中,输入一个计算结果为布尔值 - true(通过)或- false(未通过)的 SQL 表达式。如需了解详情,请参阅支持的自定义 SQL 规则类型以及定义数据质量规则中的示例。
- 点击添加。 
 
- SQL 聚合检查规则:创建自定义 SQL 表条件规则。 - 在维度中,选择一个维度。 
- 在列名称中,选择一列。 
- 在提供 SQL 表达式字段中,输入一个计算结果为布尔值 - true(通过)或- false(未通过)的 SQL 表达式。如需了解详情,请参阅支持的自定义 SQL 规则类型以及定义数据质量规则中的示例。
- 点击添加。 
 
- SQL 断言规则:创建自定义 SQL 断言规则,以检查数据的无效状态。 - 在维度中,选择一个维度。 
- 可选:在列名称中,选择一列。 
- 在提供 SQL 语句字段中,输入一个 SQL 语句,以返回与无效状态匹配的行。如果系统返回了任何行,表示此规则失败。从 SQL 语句中省略末尾的英文分号。如需了解详情,请参阅支持的自定义 SQL 规则类型以及定义数据质量规则中的示例。 
- 点击添加。 
 
 
- 可选:对于任何数据质量规则,您都可以分配一个自定义规则名称以用于监控和提醒,还可以添加说明。为此,请修改规则并指定以下详细信息: - 规则名称:输入自定义规则名称,最多 63 个字符。规则名称可以包含字母(a-z、A-Z)、数字 (0-9) 和连字符 (-),且必须以字母开头,以数字或字母结尾。
- 说明:输入规则说明,长度上限为 1,024 个字符。
 
- 重复上述步骤,向数据质量扫描添加其他规则。完成后,点击继续。 
 
- 可选:将扫描结果导出到 BigQuery 标准表。在将扫描结果导出到 BigQuery 表部分中,执行以下操作: - 在选择 BigQuery 数据集字段中,点击浏览。选择一个 BigQuery 数据集来存储数据质量扫描结果。 
- 在 BigQuery 表字段中,指定用于存储数据质量扫描结果的表。如果您使用的是现有表,请确保该表与导出表架构兼容。如果指定的表不存在,Dataplex Universal Catalog 会为您创建该表。 
 
- 可选:添加标签。标签是键值对,可用于将相关对象组合在一起或者与其他 Google Cloud 资源组合在一起。 
- 可选:设置邮件通知报告,以提醒相关人员数据质量扫描作业的状态和结果。在通知报告部分,点击 添加邮件 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 表示法文档和 YAML 表示法示例。
- 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
如需创建数据质量扫描,请使用 dataScans.create 方法。
如果您想使用基于数据分析扫描结果的规则建议来构建数据质量扫描的规则,请通过对数据分析扫描调用 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 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击要运行的数据质量扫描。 
- 点击立即运行。 
gcloud
如需运行数据质量扫描,请使用 gcloud dataplex datascans run 命令:
gcloud dataplex datascans run DATASCAN \ --location=LOCATION \
执行以下变量替换操作:
- LOCATION:在其中创建数据质量扫描的 Google Cloud 区域。
- DATASCAN:数据质量扫描的名称。
REST
如需运行数据质量扫描,请使用 dataScans.run 方法。
查看数据质量扫描结果
控制台
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击数据质量扫描的名称。 - 概览部分显示有关最近作业的信息,包括扫描运行时间、每个作业中扫描的记录数、是否通过了所有数据质量检查,以及失败的数据质量检查数量(如果存在失败情况)。 
- 数据质量扫描配置部分显示有关扫描的详细信息。 
 
- 如需查看作业的详细信息(例如指示通过的规则百分比的数据质量得分、失败的规则以及作业日志),请点击作业历史记录标签页。然后,点击作业 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
如需查看数据质量扫描的结果,请使用 dataScans.get 方法。
查看已发布的结果
如果数据质量扫描结果作为 Dataplex Universal Catalog 元数据发布,则您可以在Google Cloud 控制台的 BigQuery 和 Dataplex Universal Catalog 页面中源表的数据质量标签页上查看最新扫描结果。
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 搜索页面。 
- 搜索并选择表格。 
- 点击数据质量标签页。 - 系统会显示最新发布的结果。 
查看历史扫描结果
Dataplex Universal Catalog 会保存最近 300 个作业或过去一年(以先到者为准)的数据质量扫描历史记录。
控制台
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击数据质量扫描的名称。 
- 点击作业历史记录标签页。 - 作业历史记录标签页提供有关过去作业的信息,例如每个作业中扫描的记录数、作业状态、作业运行时间以及每个规则是通过还是未通过。 
- 如需查看有关作业的详细信息,请点击作业 ID 列中的任何作业。 
gcloud
如需查看历史数据质量扫描作业,请使用 gcloud dataplex datascans jobs list 命令:
gcloud dataplex datascans jobs list \ --location=LOCATION \ --datascan=DATASCAN \
执行以下变量替换操作:
- LOCATION:在其中创建数据质量扫描的 Google Cloud 区域。
- DATASCAN:要查看其历史作业的数据质量扫描的名称。
REST
如需查看历史数据质量扫描作业,请使用 dataScans.jobs.list 方法。
授予对数据质量扫描结果的访问权限
如需让贵组织中的用户查看扫描结果,请执行以下操作:
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击您要共享其结果的数据质量扫描。 
- 点击权限标签页。 
- 执行以下操作: - 如需向主账号授予访问权限,请点击 授予访问权限。向关联的主账号授予 Dataplex DataScan DataViewer 角色。
- 如需移除主账号的访问权限,请选择要从中移除 Dataplex DataScan DataViewer 角色的主账号。点击 移除访问权限,然后在系统提示时进行确认。
 
在 Cloud Logging 中设置提醒
如需使用 Cloud Logging 中的日志针对数据质量失败设置提醒,请按照以下步骤操作:
控制台
- 在 Google Cloud 控制台中,前往 Cloud Logging Logs Explorer。 
- 在查询窗口中,输入查询。请参阅示例查询。 
- 点击 Run Query。 
- 点击创建提醒。 系统会打开一个侧边栏。 
- 输入提醒政策名称,然后点击下一步。 
- 查看查询。 - 点击预览日志按钮以测试查询。这会显示符合条件的日志。 
- 点击下一步。 
 
- 设置通知间隔时间,然后点击下一步。 
- 定义应向哪些人发送提醒通知,然后点击保存以创建提醒政策。 
或者,您也可以在Google Cloud 控制台中前往 Monitoring > 提醒,以配置和修改提醒。
gcloud
不受支持。
REST
如需详细了解如何在 Cloud Logging 中设置提醒,请参阅使用 Monitoring API 创建基于日志的提醒政策。
用于设置作业级或维度级提醒的示例查询
- 用于针对数据质量扫描的总体数据质量失败设置提醒的示例查询: - 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 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击要排查其记录问题的数据质量扫描的名称。 
- 点击作业历史记录标签页。 
- 点击确定数据质量失败的作业的 ID。 
- 在随即打开的作业结果窗口的规则部分中,找到查询以获取失败的记录列。点击失败规则对应的将查询复制到剪贴板。 
- 在 BigQuery 中运行查询,以查看导致作业失败的记录。 
gcloud
不受支持。
REST
- 如需获取确定数据质量失败的作业,请使用 - dataScans.get方法。- 在响应对象中, - failingRowsQuery字段显示查询。
- 在 BigQuery 中运行查询,以查看导致作业失败的记录。 
管理特定表的数据质量扫描
本文档中的步骤介绍了如何使用 Google Cloud 控制台中的 Dataplex Universal Catalog 数据分析和质量评估页面来管理项目中的数据分析扫描。
您还可以在使用特定表时创建和管理数据分析扫描。在 Google Cloud 控制台中,在相应表的 Dataplex Universal Catalog 页面上,使用数据质量标签页。执行以下操作:
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 搜索页面。 - 搜索并选择表格。 
- 点击数据质量标签页。 
- 根据表是否具有已将结果发布为 Dataplex Universal Catalog 元数据的数据质量扫描,您可以通过以下方式处理表的数据质量扫描: - 数据质量扫描结果已发布:页面上会显示最新的扫描结果。 - 如需管理此表的数据质量扫描,请点击数据质量扫描,然后从以下选项中进行选择: - 创建新扫描:创建新的数据质量扫描。如需了解详情,请参阅本文档中的创建数据质量扫描部分。从表的详情页面创建扫描时,系统会预先选择该表。 
- 立即运行:运行扫描。 
- 修改扫描配置:修改设置,包括显示名称、过滤条件和时间表。 - 如需修改数据质量规则,请在数据质量标签页上点击规则标签页。点击修改规则。更新规则,然后点击保存。 
- 管理扫描权限:控制哪些人可以访问扫描结果。 如需了解详情,请参阅本文档的授予对数据质量扫描结果的访问权限部分。 
- 查看历史结果:查看之前的数据质量扫描作业的详细信息。如需了解详情,请参阅本文档中的查看数据质量扫描结果和查看历史扫描结果部分。 
- 查看所有扫描:查看适用于相应表的数据质量扫描列表。 
 
- 不发布数据质量扫描结果:从以下选项中进行选择: - 创建数据质量扫描:创建新的数据质量扫描。如需了解详情,请参阅本文档中的创建数据质量扫描部分。从表的详情页面创建扫描时,系统会预先选择该表。 
- 查看现有扫描:查看适用于此表的数据质量扫描列表。 
 
 
更新数据质量扫描
您可以修改现有数据质量扫描的各种设置,例如显示名称、过滤条件、时间表和数据质量规则。
控制台
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击数据质量扫描的名称。 
- 如需修改设置(包括显示名称、过滤条件和时间表),请点击修改。修改值,然后点击保存。 
- 如需修改数据质量规则,请在扫描详情页面上点击当前规则标签页。点击修改规则。更新规则,然后点击保存。 
gcloud
如需更新数据质量扫描的说明,请使用 gcloud dataplex datascans update data-quality 命令:
gcloud dataplex datascans update data-quality DATASCAN \ --location=LOCATION \ --description=DESCRIPTION
替换以下内容:
- DATASCAN:要更新的数据质量扫描的名称。
- LOCATION:在其中创建数据质量扫描的 Google Cloud 区域。
- DESCRIPTION:数据质量扫描的新说明。
REST
如需修改数据质量扫描,请使用 dataScans.patch 方法。
删除数据质量扫描
控制台
- 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 数据分析和质量评估页面。 
- 点击要删除的扫描。 
- 点击删除,然后在系统提示时进行确认。 
gcloud
如需删除数据质量扫描,请使用 gcloud dataplex datascans delete 命令:
gcloud dataplex datascans delete DATASCAN \ --location=LOCATION \ --async
执行以下变量替换操作:
- DATASCAN:要删除的数据质量扫描的名称。
- LOCATION:在其中创建数据质量扫描的 Google Cloud 区域。
REST
如需删除数据质量扫描,请使用 dataScans.delete 方法。
后续步骤
- 按照 Codelab:使用 AI 辅助功能来促进程序化数据质量操作。
- 了解数据分析。
- 了解如何使用数据分析。
- 按照教程使用 Terraform 以代码形式管理数据质量规则。