扫描数据质量问题
本文档介绍如何结合使用 BigQuery 和 Dataplex Universal Catalog 来确保数据符合您的质量预期。借助 Dataplex Universal Catalog 自动化数据质量功能,您可以定义和衡量 BigQuery 表中数据的质量。您可以自动扫描数据,根据定义的规则验证数据,并在数据不符合质量要求时记录提醒。
如需详细了解自动化数据质量,请参阅自动数据质量概览。
准备工作
- 
  
   
   
     
   
  
 
   
 
 
  
  
    
      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 权限 | 
创建数据质量扫描
控制台
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击创建数据质量扫描。 
- 在定义扫描窗口中,填写以下字段: - 可选:输入显示名称。 
- 输入 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 方法来获取建议。
运行数据质量扫描
控制台
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击要运行的数据质量扫描。 
- 点击立即运行。 
gcloud
如需运行数据质量扫描,请使用 gcloud dataplex datascans run 命令:
gcloud dataplex datascans run DATASCAN \ --location=LOCATION \
执行以下变量替换操作:
- LOCATION:在其中创建数据质量扫描的 Google Cloud 区域。
- DATASCAN:数据质量扫描的名称。
REST
如需运行数据质量扫描,请使用 dataScans.run 方法。
查看数据质量扫描结果
控制台
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击数据质量扫描的名称。 - 概览部分显示有关最近作业的信息,包括扫描运行时间、每个作业中扫描的记录数、是否通过了所有数据质量检查,以及失败的数据质量检查数量(如果存在失败情况)。 
- 数据质量扫描配置部分显示有关扫描的详细信息。 
 
- 如需查看作业的详细信息(例如指示通过的规则百分比的数据质量得分、失败的规则以及作业日志),请点击作业历史记录标签页。然后,点击作业 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 控制台中,前往 BigQuery 页面。 
- 在左侧窗格中,点击 Explorer:  - 如果您没有看到左侧窗格,请点击 展开左侧窗格以打开该窗格。 
- 在探索器窗格中,点击数据集,然后点击相应的数据集。 
- 依次点击概览 > 表,然后选择要查看其数据质量扫描结果的表。 
- 点击数据质量标签页。 - 系统会显示最新发布的结果。 
查看历史扫描结果
Dataplex Universal Catalog 会保存最近 300 个作业或过去一年(以先到者为准)的数据质量扫描历史记录。
控制台
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击数据质量扫描的名称。 
- 点击作业历史记录标签页。 - 作业历史记录标签页提供有关过去作业的信息,例如每个作业中扫描的记录数、作业状态、作业运行时间以及每个规则是通过还是未通过。 
- 如需查看有关作业的详细信息,请点击作业 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 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击您要共享其结果的数据质量扫描。 
- 点击权限标签页。 
- 执行以下操作: - 如需向主账号授予访问权限,请点击 授予访问权限。向关联的主账号授予 Dataplex DataScan DataViewer 角色。
- 如需移除主账号的访问权限,请选择要从中移除 Dataplex DataScan DataViewer 角色的主账号。点击 移除访问权限,然后在系统提示时进行确认。
 
排查数据质量失败问题
您可以使用 Cloud Logging 中的日志针对数据质量失败设置提醒。如需了解详情(包括示例查询),请参阅在 Cloud Logging 中设置提醒。
对于每个包含失败的行级规则的作业,Dataplex Universal Catalog 都会提供一个查询来获取失败的记录。运行此查询可查看与您的规则不匹配的记录。
控制台
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击要排查其记录问题的数据质量扫描的名称。 
- 点击作业历史记录标签页。 
- 点击确定数据质量失败的作业的 ID。 
- 在随即打开的作业结果窗口的规则部分中,找到查询以获取失败的记录列。点击失败规则对应的将查询复制到剪贴板。 
- 在 BigQuery 中运行查询,以查看导致作业失败的记录。 
gcloud
不受支持。
REST
- 如需获取确定数据质量失败的作业,请使用 - dataScans.get方法。- 在响应对象中, - failingRowsQuery字段显示查询。
- 在 BigQuery 中运行查询,以查看导致作业失败的记录。 
管理特定表的数据质量扫描
本文档中的步骤介绍了如何使用Google Cloud 控制台中的 BigQuery 元数据整理 > 数据分析和质量评估页面来管理项目中的数据质量扫描。
您还可以在使用特定表时创建和管理数据质量扫描。在 Google Cloud 控制台中,在相应表的 BigQuery 页面上,使用数据质量标签页。执行以下操作:
- 在 Google Cloud 控制台中,前往 BigQuery 页面。 - 在探索器窗格(位于左侧窗格中)中,点击数据集,然后点击相应的数据集。 依次点击概览 > 表,然后选择要查看其数据质量扫描结果的表。 
- 点击数据质量标签页。 
- 根据表是否具有已将结果发布为 Dataplex Universal Catalog 元数据的数据质量扫描,您可以通过以下方式处理表的数据质量扫描: - 数据质量扫描结果已发布:页面上会显示最新的扫描结果。 - 如需管理此表的数据质量扫描,请点击数据质量扫描,然后从以下选项中进行选择: - 创建新扫描:创建新的数据质量扫描。如需了解详情,请参阅本文档中的创建数据质量扫描部分。从表的详情页面创建扫描时,系统会预先选择该表。 
- 立即运行:运行扫描。 
- 修改扫描配置:修改设置,包括显示名称、过滤条件和时间表。 - 如需修改数据质量规则,请在数据质量标签页上点击规则标签页。点击修改规则。更新规则,然后点击保存。 
- 管理扫描权限:控制哪些人可以访问扫描结果。 如需了解详情,请参阅本文档的授予对数据质量扫描结果的访问权限部分。 
- 查看历史结果:查看之前的数据质量扫描作业的详细信息。如需了解详情,请参阅本文档中的查看数据质量扫描结果和查看历史扫描结果部分。 
- 查看所有扫描:查看适用于相应表的数据质量扫描列表。 
 
- 不发布数据质量扫描结果:从以下选项中进行选择: - 创建数据质量扫描:创建新的数据质量扫描。如需了解详情,请参阅本文档中的创建数据质量扫描部分。从表的详情页面创建扫描时,系统会预先选择该表。 
- 查看现有扫描:查看适用于此表的数据质量扫描列表。 
 
 
查看表的数据质量扫描
如需查看适用于特定表的数据质量扫描,请执行以下操作:
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 按表名称和扫描类型过滤列表。 
更新数据质量扫描
您可以修改现有数据质量扫描的各种设置,例如显示名称、过滤条件、时间表和数据质量规则。
控制台
- 在 Google Cloud 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击数据质量扫描的名称。 
- 如需修改设置(包括显示名称、过滤条件和时间表),请点击修改。修改值,然后点击保存。 
- 如需修改数据质量规则,请在扫描详情页面上点击当前规则标签页。点击修改规则。更新规则,然后点击保存。 
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 控制台中的 BigQuery 元数据整理页面上,前往数据分析和质量评估标签页。 
- 点击要删除的扫描。 
- 点击删除,然后在系统提示时进行确认。 
gcloud
如需删除数据质量扫描,请使用 gcloud dataplex datascans delete 命令:
gcloud dataplex datascans delete DATASCAN \ --location=LOCATION \ --async
执行以下变量替换操作:
- DATASCAN:要删除的数据质量扫描的名称。
- LOCATION:在其中创建数据质量扫描的 Google Cloud 区域。
REST
如需删除数据质量扫描,请使用 dataScans.delete 方法。
后续步骤
- 详细了解 BigQuery 中的数据治理。