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

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

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

准备工作

  1. 启用 Dataplex API。

    启用该 API

  2. 可选:如果您希望 Dataplex 生成针对 基于数据分析扫描结果制定的数据质量规则 创建并运行数据分析扫描

权限

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

  • 如果 BigQuery 表和数据质量扫描都位于 则需要向 Dataplex 服务 包含其数据质量扫描读取权限的项目的 相应的 BigQuery 表

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

  • 为了获得将扫描结果导出到 BigQuery 表,请让管理员授予 Dataplex 服务账号 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 会根据 阈值。

  • 创建对行进行评估的规则或使用表条件时,请创建一个表达式,以便在 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()
表条件 一个 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'
        ))
      
表条件 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 检查是否应应用折扣。 该规则会识别所有与预测结果不匹配的情况。 假设:机器学习模型是在使用规则之前创建的。使用以下命令创建 ML 模型:
  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
- 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

创建数据质量扫描

控制台

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

    前往“数据质量”页面

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

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

    1. 输入显示名称

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

    3. (可选)输入说明

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

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

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

    5. 范围字段中,选择增量数据整个数据

      • 如果您选择增量:在时间戳列字段中, 从DATETIMESTAMP 可单调递增的 BigQuery 表, 来标识新记录。它可以是一个用于划分 表格。
    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. 选择一个或多个配置文件结果,然后点击确定。这个 会填充可供选择的规则列表。

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

    • 内置规则类型:根据预定义规则构建规则。查看预定义规则列表。

      1. 选择列:选择要为哪些列选择规则。

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

      3. 选择一种或多种规则类型,然后点击确定。这会填充可供选择的规则列表。

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

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

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

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

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

      4. 提供 SQL 表达式字段中,输入 SQL 表达式 计算结果为布尔值 true(通过)或 false(失败)。如需了解详情,请参阅支持的自定义 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) 和连字符 (-),并且必须以字母开头,以数字或字母结尾。
    • 说明:输入规则说明(请勿超过此上限) 1,024 个字符。

    点击继续

  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 文件。文件 可以是本地文件或 Cloud Storage 路径,前缀为 gs://。 使用此文件指定扫描的数据质量规则。您还可以 指定该文件中的其他详细信息,例如过滤器、抽样百分比、 以及扫描后的操作,例如导出到 BigQuery 或将 电子邮件通知。请参阅 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 创建数据质量扫描

如果您想根据数据分析扫描结果使用规则建议来为数据质量扫描构建规则,请对数据分析扫描调用 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 可为 null dataplex-back-end-dev-project
location string 可为 null us-central1
data_scan_id string nullable 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 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 可为 null 987654321
dataset_id string 可为 null (仅当源为表时才有效)
test-dataset
table_id string nullable (仅当来源为表时有效)
test-table
data_quality_job_id string 可为 null caeba234-cfde-4fca-9e5b-fe02a9812e38
data_quality_job_configuration json trigger string nullable 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 nullable 2023-01-01 00:00:00 UTC
job_rows_scanned integer nullable 7500
rule_name string 可为 null test-rule
rule_type string 可为 null Range Check
rule_evaluation_type string 可为 null 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 可为 null 90.8
job_dimension_result json nullable {"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 nullable {min: 24, max:5345}
rule_pass boolean nullable True
rule_rows_evaluated integer 可为 null 7400
rule_rows_passed integer 可为 null 3
rule_rows_null integer nullable 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 控制台中,前往数据质量页面。

    前往“数据质量”页面

  2. 点击要运行的数据质量扫描。

  3. 点击立即运行

gcloud

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

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

执行以下变量替换操作:

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

REST

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

查看数据质量扫描结果

控制台

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

    前往“数据质量”页面

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

    • 概览部分会显示过去七个作业的信息,包括运行扫描的时间、每个作业中扫描的记录数量、所有数据质量检查是否都通过、是否存在失败情况、失败的数据质量检查数量,以及哪些维度失败。

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

  3. 要查看数据质量得分, 请点击作业记录标签页。然后,点击作业 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

使用 API Explorer 查看数据质量扫描结果

查看历史扫描结果

Dataplex 会保存过去 300 个作业或过去一年内的数据质量扫描历史记录(以先到者为准)。

控制台

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

    前往“数据质量”页面

  2. 点击扫描的名称。

  3. 点击作业记录标签页。

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

  4. 要查看有关作业的详细信息,请点击 作业 ID 列。

gcloud

如需查看数据质量扫描的所有作业,请使用 gcloud dataplex datascans jobs list 命令

gcloud dataplex datascans jobs list \
--location=LOCATION \
--datascan=DATASCAN \

执行以下变量替换操作:

  • LOCATION:数据所在的 Google Cloud 区域 质量扫描已创建。
  • DATASCAN:要查看其所有作业的质量扫描的名称。

REST

使用 API Explorer 查看所有扫描作业

分享已发布的结果

创建数据质量扫描时(如果您选择发布扫描结果) 请参阅“BigQuery”中的 Google Cloud 控制台,则最新的扫描结果将显示在 数据质量标签页。

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

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

    前往“数据质量”页面

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

  3. 转到权限标签页。

  4. 点击授予访问权限

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

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

  7. 点击保存

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

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

    前往“数据质量”

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

  3. 前往权限标签页。

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

  5. 点击解除使用权限

  6. 点击确认

在 Cloud Logging 中设置提醒

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

控制台

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

    转到日志浏览器

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

  3. 点击 Run Query

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

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

  6. 查看查询。

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

    2. 点击下一步

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

  8. 指定接收提醒的人员,然后点击保存以创建 提醒政策。

或者,您可以转到 Google Cloud 控制台中依次选择 Monitoring &gt; 提醒

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 数据湖中的 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
      
    • 设置有关 BigQuery 表数据质量失败的提醒 组织在 Dataplex 数据湖中:

      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. 点击发现数据质量失败的作业的作业 ID。

  5. 在随即打开的作业结果窗口的规则部分中,找到用于获取失败记录的查询列。点击失败规则的将查询复制到剪贴板

  6. 在 BigQuery 中运行查询 以查看导致作业失败的记录。

gcloud

不受支持。

REST

使用 API Explorer 查看相关查询,以获取符合以下条件的作业的失败记录: 失败

更新数据质量扫描

控制台

  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 删除数据质量扫描

后续步骤