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

本页面介绍了如何创建 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
  • 如果您要从以下位置扫描 BigQuery 外部表: Cloud Storage 时,向 Dataplex 服务账号授予 该存储桶的 Cloud Storage roles/storage.objectViewer 角色。 或者,为 Dataplex 服务账号分配 以下权限:

    • storage.buckets.get
    • storage.objects.get
  • 如果您要将数据质量扫描结果发布到 BigQuery 和 Data Catalog 页面 使用 Google Cloud 控制台访问源表,您必须获得 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 float 交易金额。
discount_pct float 折扣百分比。该值必须介于 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 中的异常情况。它会检查 根据 customer 是否应用折扣, currencytransaction。该规则会检查 至少在 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 中的异常值。函数 检查是否应根据 customer 应用折扣, currencytransaction。 该规则会识别所有与预测结果不匹配的情况。 假设:机器学习模型是在使用规则之前创建的。创建机器学习 来训练机器学习模型:
  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 断言 验证今天的discount_pct是否大于 30% 方法是检查是否有任何行的折扣率小于或等于 等于 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 可用作 WHERE 子句一部分的表达式, BigQuery 标准 SQL 语法。例如 col1 >= 0。过滤条件可以是多个列条件的组合。例如 col1 >= 0 AND col2 < 10

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

    9. 如需将数据质量扫描结果发布到 BigQuery 和 Data Catalog 页面 在 Google Cloud 控制台中查看源表,请点击 将结果发布到 BigQuery 并 Dataplex Catalog 界面复选框。 您可以在以下位置的数据质量标签页中查看最新的扫描结果: 来源的 BigQuery 和 Data Catalog 页面 表格。为了让用户能够访问已发布的扫描结果, 请参阅分享已发布的结果。 在以下情况下,您可能无法使用发布方式:

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

      如需详细了解查看 请参阅权限

    10. 点击继续

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

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

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

    点击继续

  5. 数据质量规则窗口中,定义用于 配置 Cloud Storage 存储分区。点击添加规则,然后选择 以下选项之一。

    • 基于配置文件的建议:通过 基于现有数据分析扫描给出的建议。

      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 表达式字段中,输入 SQL 表达式 计算结果为布尔值 true(通过)或 false(失败)。对于 请参阅 支持的自定义 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:要在其中指定 Cloud Storage 的 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 可为 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

表 case: //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));"

在配置过程中 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:存储 数据质量扫描已创建。
  • DATASCAN:数据质量扫描的名称。

REST

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

查看数据质量扫描结果

控制台

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

    前往“数据质量”

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

    • 概览部分显示过去 7 条查询的相关信息 作业数,包括运行扫描的时间、记录数 检查是否通过了所有数据质量检查、 失败的数据质量检查数量 维度失败。

    • 数据质量扫描配置部分会显示有关 扫描。

  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. Query 窗口中,输入您的查询。请参阅示例查询

  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
    
  • 此示例查询,用于针对表的数据质量失败设置提醒。

    • 为符合以下条件的 BigQuery 表设置数据质量失败提醒 Dataplex 数据湖中并未进行整理:

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

后续步骤