使用“自动数据质量”功能

本页面介绍了如何创建 Dataplex 数据质量扫描。

如需了解数据质量扫描,请参阅自动数据质量简介

准备工作

启用 Dataplex API。

启用该 API

权限

  • 如需对 BigQuery 表运行数据质量扫描,您需要拥有读取 BigQuery 表的权限,以及在用于扫描该表的项目中创建 BigQuery 作业的权限。

  • 如果 BigQuery 表和数据质量扫描位于不同的项目中,则需要向包含数据质量扫描的项目的 Dataplex 服务帐号授予对相应 BigQuery 表的读取权限。

  • 如果数据质量规则引用了其他表,则扫描项目的服务帐号必须对这些表拥有读取权限。

  • 如需获取将扫描结果导出到 BigQuery 表所需的权限,请让管理员向 Dataplex 服务帐号授予针对结果数据集和表的 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 数据湖中整理的,请向 Dataplex 服务帐号授予 roles/dataplex.metadataReaderroles/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 Data Editor (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 权限

向用户授予以下一个或多个角色:

  • 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 字符串 客户 ID,格式为:8 个字母后跟 16 位数字。
transaction_id 字符串 交易 ID 在整个表中必须是唯一的。
currency_id 字符串 支持的货币类型。货币类型必须与维度表“dim_currency”中的可用货币匹配。
amount 浮点数 交易金额。
discount_pct 浮点数 折扣百分比。此值必须介于 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 规则,请使用以下框架:

  • 在创建一次计算一行的规则时,请创建一个在 Dataplex 评估查询 SELECT COUNTIF(CUSTOM_SQL_EXPRESSION) FROM TABLE 时生成成功行数的表达式。Dataplex 会根据阈值检查成功的行数。

  • 在创建跨行求值或使用聚合 SQL 检查的规则时,请创建一个在 Dataplex 计算查询 SELECT IF(CUSTOM_SQL_EXPRESSION) FROM TABLE 时返回成功或失败的表达式。

  • 在创建用于评估数据集无效状态的规则时,请提供返回无效行的语句。如果返回任何行,则规则失败。省略 SQL 语句中的尾随分号。

  • 您可以在规则中使用数据引用参数 ${data()} 来引用数据源表及其所有前提条件过滤条件,而无需明确提及源表及其过滤条件。前提条件过滤条件的示例包括行过滤条件、抽样百分比和增量过滤条件。${data()} 参数区分大小写。

以下示例规则基于自定义 SQL 规则。

规则类型 规则说明 SQL 表达式
行条件 检查 discount_pct 的值是否在 0 到 100 之间。 0 <discount_pctdiscount_pct < 100
行条件 用于验证 currency_id 是否为受支持货币之一的参考检查。 currency_id in (select id from my_project_id.dim_dataset.dim_currency)
聚合 SQL 表达式 检查平均 discount_pct 是否在 30% 到 50% 之间。 30<avg(discount) AND avg(discount) <50
行条件 检查某个日期是否不是将来的日期。 TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
聚合 SQL 表达式 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'
        ))
      
聚合 SQL 表达式 BigQuery ML 预测子句,用于标识 discount_pct 中的异常。它会检查是否应根据 customercurrencytransaction 应用折扣。该规则至少会检查预测结果是否与实际值匹配(至少 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';
         )
        )
    
行条件 BigQuery ML 预测函数,用于识别 discount_pct 中的异常。该函数会根据 customercurrencytransaction 检查是否应应用折扣。该规则会识别与预测结果不匹配的所有事件。假设:机器学习模型是在使用规则之前创建的。使用以下命令创建机器学习模型:
  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 断言(使用数据引用参数

检查目前所有受支持货币的 discount_pct 是否大于 30%。

日期过滤条件 transaction_timestamp >= current_date() 将作为行过滤条件应用于数据源表。

数据引用参数 ${data()} 充当 my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date() 的占位符,并应用行过滤条件。

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
- 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

创建数据质量扫描

控制台

  1. 在 Google Cloud 控制台中,前往数据质量页面。

    转到“数据质量”

  2. 点击创建数据质量扫描

  3. 定义扫描窗口中,填写以下字段:

    1. 输入显示名称

    2. 如果您没有提供自己的 ID,系统会自动生成扫描 ID。请参阅资源命名惯例

    3. (可选)输入说明

    4. 字段中,点击浏览,选择您的表,然后点击选择。Dataplex 仅支持标准 BigQuery 表。

      对于多区域数据集中的表,请选择要在其中创建数据扫描的区域。

      如需浏览在 Dataplex 数据湖中整理的表,请点击在 Dataplex 数据湖中浏览

    5. 范围字段中,选择增量全部数据

      • 如果选择增量:在时间戳列字段中,从 BigQuery 表中选择类型为 DATETIMESTAMP 的列,该列单调递增,可用于识别新记录。它可以是用于对表进行分区的列。
    6. 可选:添加标签。标签是 key:value 对,可让您将相关对象组合在一起,也可以与其他 Google Cloud 资源组合在一起。

    7. 如要过滤数据,请点击过滤器。选中过滤行复选框。行过滤条件的输入值必须是有效的 SQL 表达式,可用作 BigQuery 标准 SQL 语法中 WHERE 子句的一部分。例如 col1 >= 0。过滤条件可以组合多个列条件。例如 col1 >= 0 AND col2 < 10

    8. 如需对数据进行抽样,请在抽样规模列表中,选择抽样百分比。选择介于 0.0% 到 100.0% 之间的百分比值,最多包含 3 位小数。对于较大的数据集,请选择较低的抽样百分比。例如,对于约 1 PB 的表,如果您输入的值介于 0.1% 到 1.0% 之间,Dataplex 会采样 1-10 TB 的数据。对于增量数据扫描,Dataplex 会将采样应用于最新的增量。

    9. 如需在 Google Cloud 控制台的 BigQuery 和 Data Catalog 页面中发布源表的数据质量扫描结果,请选中将结果发布到 BigQuery 和 Dataplex Catalog 界面复选框。您可以在源表的 BigQuery 和 Data Catalog 页面的数据质量标签页中查看最新的扫描结果。如需让用户能够访问已发布的扫描结果,请参阅共享已发布的结果。在以下情况下,发布选项可能不可用:

      • 您没有表所需的权限。
      • 另一项数据质量扫描已设置为发布结果。

      如需详细了解查看已发布的结果所需的权限,请参阅权限

    10. 点击继续

  4. 时间安排窗口中,选择以下选项之一:

    • 重复:按时间表运行数据质量扫描作业:每天、每周、每月或自定义。指定扫描的运行频率和时间。如果选择自定义,请使用 cron 格式指定时间表。

    • 按需:按需运行数据质量扫描作业。

    点击继续

  5. 数据质量规则窗口中,定义要为此数据质量扫描配置的规则。点击添加规则,然后选择以下选项之一。

    • 基于分析的建议:根据现有的数据分析扫描,根据建议构建规则。

      1. 选择列:选择要为哪些列获取推荐规则。

      2. 扫描项目:基于现有数据分析扫描的建议。默认情况下,Dataplex 会从您创建数据质量扫描的同一项目中选择分析扫描。如果您在其他项目中创建了扫描,则必须指定要从哪个项目拉取分析扫描。

      3. 选择分析结果:根据您选择的列和项目,系统会显示多个分析结果。

      4. 选择一个或多个分析结果,然后点击 OK。系统会填充可供选择的规则列表。

      5. 勾选要修改的规则对应的复选框,然后点击选择。选择后,这些规则就会添加到当前规则列表中。然后,您可以修改相应规则。

    • 内置规则类型:根据预定义规则构建规则。请参阅预定义规则列表。

      1. 选择列:选择用于选择规则的列。

      2. 选择规则类型:根据您选择的列,系统会显示多种规则类型供您选择。

      3. 选择一个或多个规则类型,然后点击确定。系统随即会填充一系列可供选择的规则。

      4. 选中要修改的规则对应的复选框,然后点击选择。选择后,这些规则就会添加到当前的规则列表中。然后,您可以修改规则。

    • SQL 行检查规则:创建一个要应用于每行的自定义 SQL 规则(自定义 SQL 行检查规则)。

      1. 在“维度”中,选择一个维度。

      2. 通过阈值中,选择必须通过检查的记录百分比。

      3. 列名称中,选择一列。

      4. 提供 SQL 表达式字段中,输入一个计算结果为布尔值 true(通过)或 false(失败)的 SQL 表达式。如需了解详情,请参阅支持的自定义 SQL 规则类型以及本文档定义数据质量规则部分中的示例。

      5. 点击添加

    • SQL 聚合检查规则:创建自定义 SQL 聚合检查规则。

      1. 在“维度”中,选择一个维度。

      2. 列名称中,选择一列。

      3. 提供 SQL 表达式字段中,输入一个计算结果为布尔值 true(通过)或 false(失败)的 SQL 表达式。如需了解详情,请参阅支持的自定义 SQL 规则类型以及本文档定义数据质量规则部分中的示例。

      4. 点击添加

    • SQL 断言规则:创建自定义 SQL 断言规则以检查数据是否无效。

      1. 在“维度”中,选择一个维度。

      2. 可选:在列名称中,选择一列。

      3. 提供 SQL 语句字段中,输入一个可返回与无效状态匹配的行的 SQL 语句。如果返回任何行,此规则将失败。省略 SQL 语句中的尾随分号。如需了解详情,请参阅支持的自定义 SQL 规则类型以及本文档定义数据质量规则部分中的示例。

      4. 点击添加

    Dataplex 允许为监控和提醒的数据质量规则使用自定义名称。对于任何数据质量规则,您可以选择指定自定义规则名称和说明。为此,请修改规则并指定以下详细信息:

    • 规则名称:输入自定义规则名称(最多可包含 63 个字符)。 规则名称可以包含字母(a-z、A-Z)、数字 (0-9) 和连字符 (-),并且必须以字母开头,以数字或字母结尾。
    • 说明:输入规则说明,长度上限为 1024 个字符。

    点击继续

  6. 可选:将扫描结果导出到 BigQuery 标准表。点击浏览以选择现有 BigQuery 数据集,以存储数据质量扫描结果。

    如果指定的表不存在,Dataplex 会为您创建该表。如果您使用的是现有表,请确保它与导出表架构兼容。

  7. 点击创建

    创建扫描后,您可以随时点击立即运行来运行该扫描。

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 路径。 您可以在此文件中指定其他字段,例如 rulesrowFiltersamplingPercent。请参阅 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 创建数据质量扫描

导出表架构

如需将数据质量扫描结果导出到现有 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
},
"consistency":{
"passed":false
}
}
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));"

为数据质量扫描作业配置 BigQueryExport 时,请遵循以下准则:

  • 对于字段 resultsTable,请使用以下格式://bigquery.googleapis.com/projects/{project-id}/datasets/{dataset-id}/tables/{table-id}
  • 使用 BigQuery 标准表。
  • 如果创建或更新扫描时该表不存在,Dataplex 会为您创建该表。
  • 默认情况下,该表每天按 job_start_time 列进行分区。
  • 如果您希望在其他配置中对表进行分区,或者如果您不需要分区,请使用所需的架构和配置重新创建表,然后提供预先创建的表作为结果表。
  • 确保结果表与源表位于同一位置。
  • 如果项目中配置了 VPC-SC,则结果表必须与源表位于同一 VPC-SC 边界内。
  • 如果在扫描执行阶段修改了该表,则当前正在运行的作业会导出到上一个结果表,并且表更改将从下一个扫描作业生效。
  • 请勿修改表架构。如果您需要自定义列,请在表上创建一个视图。
  • 为降低费用,请根据您的使用场景为分区设置到期时间。如需了解详情,请参阅如何设置分区过期时间

运行数据质量扫描

控制台

  1. 在 Google Cloud 控制台中,前往数据质量页面。 前往 Dataplex 数据质量
  2. 点击要运行的数据质量扫描。
  3. 点击立即运行

gcloud

如需运行数据质量扫描,请使用 gcloud dataplex datascans run 命令

gcloud dataplex datascans run DATASCAN \
--location=LOCATION \

执行以下变量替换操作:

  • LOCATION:创建数据质量扫描的 Google Cloud 区域。
  • DATASCAN:数据质量扫描的名称。

REST

使用 API Explorer 运行数据质量扫描

查看数据质量扫描作业结果

控制台

您创建的数据质量扫描会显示在数据质量页面中。

如需查看扫描的详细结果,请点击相应扫描的名称。

  • 概览部分显示有关最近七次执行的信息,包括扫描的执行时间、每个作业中扫描的记录数、是否通过了所有的数据质量检查、是否失败、失败的数据质量检查的数量,以及哪些维度失败。

  • 数据质量扫描配置部分显示有关扫描的详细信息。

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 个作业或过去一年的数据质量扫描记录(以先发生者为准)。

控制台

作业记录标签页提供了有关过往作业的信息。它会列出所有作业、每个作业中扫描的记录数、作业状态、作业运行时间、每条规则是通过还是失败等。

如需查看作业的详细信息,请点击作业 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 页面中发布扫描结果,则这些页面的数据质量标签页中会显示最新的扫描结果。

您可以允许组织中的用户访问已发布的扫描结果。如需授予对扫描结果的访问权限,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往个人资料页面。

    转到 Dataplex 配置文件

  2. 点击要分享结果的数据质量扫描。

  3. 转到权限标签页。

  4. 点击授予访问权限

  5. 新的主账号字段中,添加要向其授予访问权限的主账号。

  6. 选择角色字段中,选择 Dataplex DataScan DataViewer

  7. 点击保存

如需移除对主帐号已发布扫描结果的访问权限,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往个人资料页面。

    转到 Dataplex 配置文件

  2. 点击要分享结果的数据质量扫描。

  3. 转到权限标签页。

  4. 选择要移除 Dataplex DataScan DataViewer 角色的主帐号。

  5. 点击解除使用权限

  6. 点击确认

更新数据质量扫描

控制台

  1. 在 Google Cloud 控制台中,前往数据质量页面。

    转到“数据质量”

  2. 在要修改的扫描所在的行中,依次点击垂直三点状图标 > 修改

  3. 修改值。

  4. 点击保存

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 修改数据质量扫描

删除数据质量扫描

控制台

  1. 在 Google Cloud 控制台中,前往数据质量页面。

    转到“数据质量”

  2. 点击要删除的扫描。

  3. 点击删除

gcloud

如需删除数据质量扫描,请使用 gcloud dataplex datascans delete 命令

gcloud dataplex datascans delete DATASCAN \
--location=LOCATION \
--async

执行以下变量替换操作:

  • DATASCAN:要删除的数据质量扫描的名称。
  • LOCATION:创建数据质量扫描的 Google Cloud 区域。

REST

使用 API Explorer 删除数据质量扫描

在 Cloud Logging 中设置提醒

如需使用 Cloud Logging 中的日志设置数据质量失败提醒,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud Logging 日志浏览器

    转到日志浏览器

  2. 查询窗口中,输入您的查询。请参阅示例查询

  3. 点击 Run Query

  4. 点击创建提醒。系统随即会打开一个侧边栏。

  5. 输入您的提醒政策名称,然后点击下一步

  6. 查看查询。

    1. 点击预览日志按钮以测试查询。这会显示符合条件的日志。

    2. 点击下一步

  7. 设置通知间隔时间,然后点击下一步

  8. 指定应向谁发送提醒通知,然后点击保存以创建提醒政策。

或者,您也可以在 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 都会提供一个查询来获取失败的记录。运行此查询以查看与您的规则不匹配的记录。

控制台

  1. 在 Google Cloud 控制台中,前往数据质量页面。

    转到“数据质量”

  2. 选择要进行问题排查的扫描(点击其显示名称)。

  3. 作业记录标签页中,找到失败的扫描执行作业,然后点击失败链接。

  4. 在打开的作业窗口的规则部分中,找到查询获取失败的记录列。

  5. 复制查询以在 BigQuery 中运行,并查看导致作业失败的记录。

gcloud

不支持。

REST

使用 API Explorer 查看查询以获取失败作业的失败记录

后续步骤