排查数据沿袭问题

借助 Knowledge Catalog(以前称为 Dataplex Universal Catalog)中的数据沿袭功能,您可以跟踪数据移动、了解数据来源并调试数据流水线。如果沿袭图、进程元数据、表详细信息或列级链接未按预期显示,或者您看到意外的 Knowledge Catalog Premium 处理费用,则可以检查项目权限、API 设置和支持的服务类型。

如果您在解决本文档中未提及的问题时需要帮助,请参阅 Cloud Customer Care。

项目类型

数据资产可以位于不同的项目中。下表总结了可能的项目及其资产名称。

BigQuery 存储项目

此项目用于存储 BigQuery 数据资产。您可以在资产详情中找到它,作为 Table ID 的一部分,位于第一个点之前。

在 BigQuery 界面中,存储项目名称显示在完全限定表名称中的第一个点之前的“表 ID”字段中。
图 1. BigQuery 存储项目的名称。

计算项目

此项目存储数据沿袭元数据。对于 BigQuery,这是您运行作业的位置。如果您使用Google Cloud 控制台运行作业,则可以在项目选择器中找到计算项目名称:

在您运行 SQL 查询的页面上,BigQuery 界面会显示一个名为 docs-compute 的计算项目。
图 2. 运行 BigQuery 作业的计算项目的名称。

向 BigQuery API 发送请求时,请在网址中指定计算项目,例如:

POST /bigquery/v2/projects/docs-compute/jobs HTTP/1.1
Host: bigquery.googleapis.com
User-Agent: Go-http-client/1.1
Authorization: <REDACTED 1031 BYTES>
Accept-Encoding: gzip
{
  "configuration": {
    "query": {
      "useLegacySql": false,
      "query": "CREATE OR REPLACE TABLE `docs-target.dataset.target-002` AS SELECT * FROM `docs-source.dataset.source-002`;"
    }
  },
  "jobReference": {
    "projectId": "docs-compute",
    "jobId": "docs-compute-job-id",
    "location": "us",
  }
}

活跃项目

这是您要从中查看数据沿袭的项目。Google Cloud 控制台会在项目选择器中显示活跃项目。如果您使用的是 API,则活跃项目是指您从中发出 API 调用的项目。

BigQuery 界面会显示名为 source-001 的数据集的数据沿袭,该数据集位于名为 docs-source 的项目中。
图 3. Google Cloud 控制台中的活跃项目。

BigQuery 数据沿袭未显示

运行 BigQuery 作业后,会出现以下问题。在这种情况下,问题可能由以下三种情况引起:

如果您看到“由于缺少权限,未能提取沿袭”消息,则表示您缺少活跃项目的权限。否则,您缺少对计算项目的权限。

空白沿袭图。
图 4. BigQuery 界面中未显示沿袭的示例。

如需解决此问题,请检查是否已为计算项目启用 Data Lineage API。启用 API 后,您需要运行作业以查看数据沿袭。根据所处理的数据量和复杂程度,数据沿袭可能需要 30 分钟到 24 小时才能显示。

接下来,检查是否已为活跃项目启用 Data Lineage API。

启用 Data Lineage API 后,在活跃项目和计算项目中授予 Data Lineage Viewer 角色 (roles/datalineage.viewer)。

BigQuery 进程元数据未显示

当您打开表详细信息窗格时,会出现以下问题:该窗格未显示所有详细信息,例如 SQL 语句或 Process type 属性。即使数据沿袭显示正常,也会发生这种情况。

如果您没有查看计算项目中的元数据的权限,则可能会发生这种情况。

示例:

  • BigQuery 源表:docs-source.dataset.source-001
  • BigQuery 目标表:docs-target.dataset.target-001
  • 计算项目 docs-compute 中的 docs-source.dataset.source-001 和 docs-target.dataset.target-001 之间的数据沿袭
  • 您拥有活跃和计算 docs-compute 项目的 Data Lineage Viewer 角色。

点击 BigQuery 进程详细信息后, Google Cloud 控制台中会显示以下消息:

You don't have permission to view BigQuery process metadata in project X.
在 BigQuery 界面中的“沿袭”标签页上,详细信息窗格会显示错误消息。
图 5. BigQuery 界面中未显示 BigQuery 进程详细信息的示例。

如需解决此问题,请在计算项目中为用户授予 bigquery.jobs.get 权限(例如 BigQuery Resource Viewer 角色具有此权限)。

BigQuery 表详细信息未显示

打开表详细信息窗格时,会出现以下问题,系统仅显示 Fully qualified name 属性。即使数据沿袭显示正常,也会发生这种情况。如果您在表的存储项目中没有所有必需的权限,则可能会发生这种情况。

示例:

  • BigQuery 表 docs-source.dataset.source-001
  • BigQuery 表 docs-target.dataset.target-001
  • 计算项目 docs-compute 中的 docs-source.dataset.source-001 和 docs-target.dataset.target-001 之间的数据沿袭
  • 您拥有活跃和计算 docs-compute 项目的 Data Lineage Viewer 角色。

在这种情况下,当您点击 BigQuery 节点详细信息时,会看到消息 Entry with this fully qualified name is not available in Knowledge Catalog or you do not have permissions to view it。

BigQuery 表详细信息未显示。
图 6. BigQuery 界面中未显示 BigQuery 表详细信息的示例。

如需解决此问题,请在存储项目中授予 bigquery.tables.get 权限(例如,BigQuery Data Viewer 角色具有此权限)。

列级沿袭显示“没有可供选择的列”

当您在 Google Cloud 控制台中查看资产时,会出现以下问题:表级沿袭图会正确显示,但选择列级沿袭会显示消息“没有可供选择的列”,或者不会显示列到列链接。

此问题可能会在以下情况下发生:

  • 自定义 OpenLineage 事件:通过 Data Lineage API ProcessOpenLineageRunEvent 端点注入的事件仅支持表级沿袭。自定义列级切面不会在Google Cloud 控制台中呈现。
  • 不受支持的数据源或系统:列级沿袭图仅针对 BigQuery SQL 转换和 Managed Service for Apache Spark 作业生成。其他集成系统(例如 Cloud Data Fusion 和 Vertex AI)仅支持表级沿袭。
  • 不支持的 BigQuery 服务类型:系统不会为 BigQuery 加载作业、复制作业或例程收集列级沿袭。
  • 外部表:系统不会为外部表收集上游列级血缘。
  • 非结构化或存储级资产:虽然基于文件的资产(例如原始 Cloud Storage 文件或存储桶)通常不具有结构,但如果向系统报告了列级沿袭,则数据沿袭可以显示这些资产的列。如果未报告文件资产的列级沿袭,则无法选择任何列。
  • 复杂嵌套类型:列级沿袭仅跟踪顶级列。您无法单独选择嵌套在复杂数据类型(例如 STRUCT 或 JSON)中的字段。
  • 分区伪列:系统分区列(例如 _PARTITIONDATE 和 _PARTITIONTIME)在列级沿袭图中无法识别。
  • 超出链接限制:如果转换作业生成超过 1,500 个列级关联,Knowledge Catalog 会跳过列级沿袭收集,仅保留表级沿袭。
  • 跨组织资产:如果沿袭路径遍历位于其他组织中的资产,并且您不属于该资产所在的组织,则无法访问架构和列详细信息。

意外的 Knowledge Catalog 高级处理费用

您停用了 Dataplex API (dataplex.googleapis.com) 以停止扣费,但您仍然会看到“Knowledge Catalog Premium Processing”SKU 的每日扣费。

如果 Data Lineage API (datalineage.googleapis.com) 仍处于启用状态,则可能会出现此问题。Data Lineage API 根据“Knowledge Catalog 高级处理”SKU 计费,但在 Google Cloud 控制台中作为单独的 API 进行管理。停用 Dataplex API 不会停用 Data Lineage API,也不会停止其费用。

如需确定数据沿袭是否是费用来源,请在 Cloud Billing 报告中检查标签 goog-dataplex-workload-type 的值是否为 LINEAGE。

如需停止扣款,请在项目中停用 Data Lineage API,以关闭数据沿袭。