借助 Knowledge Catalog(以前称为 Dataplex Universal Catalog)元数据更改 Feed,您可以近乎实时地跟踪整个组织、项目或条目组中条目和切面的元数据更改,并构建事件驱动型工作流。如需创建和管理这些 Feed,请参阅通过元数据更改 Feed 接收通知。
元数据更改 Feed 的运作方式
在 Knowledge Catalog 中,条目表示数据资产(例如 BigQuery 表),切面是附加到条目的一组相关元数据字段,用于描述该条目。创建、更新或删除条目或切面时,Knowledge Catalog 会向您指定的 Pub/Sub 主题发布通知消息。这些通知(也称为元数据变更 Feed)包含有关变更的信息。这包括更改发生的时间、更改的资源以及更改的类型。如需详细了解条目和切面,请参阅 Knowledge Catalog 中的元数据管理简介。
以下架构图展示了 Knowledge Catalog 如何捕获元数据更改(创建、更新、删除),并将其推送到 Pub/Sub 以用于下游事件驱动型工作流。
如需控制哪些更改会生成通知,您可以配置元数据更改 Feed 以监控特定资源。为此,您需要指定一个范围,例如整个组织、特定项目或特定条目组。虽然范围可让您定义要监控哪些资源,但您可以使用过滤条件进一步细化 Knowledge Catalog 何时发送通知。例如,您可能只想在 bigquery-table 类型的表更新时收到通知,而在创建或删除表时不收到通知。为此,您可以根据条目类型、切面类型或更改类型(CREATE、UPDATE 或 DELETE)对元数据更改 Feed 应用一个或多个过滤条件。
例如,一家线上零售公司使用 BigQuery 在专用项目中管理商品目录。为了仅监控其资产清单表中的架构更改,他们创建了一个以项目为范围的元数据更改 Feed,并应用了 entry_type=bigquery-table 和 change_type=UPDATE 过滤条件。如果关键表(例如 product_stock)的架构发生更新,此更改会生成与元数据更改 Feed 的过滤条件匹配的 UPDATE 通知。然后,元数据更改 Feed 会向 Pub/Sub 主题发送通知。订阅此 Pub/Sub 主题的自动化工作流可以立即暂停下游报告流水线,并提醒产品目录管理系统团队,以防止基于不一致的数据做出决策。
元数据更改 Feed 用例
您可以将元数据变更 Feed 用于各种用途,包括:
- 元数据同步:将 Knowledge Catalog 元数据更改持续同步到外部或第三方 Data Catalog 或搜索索引。
- 政策强制执行:当条目的数据分类方面发生变化时,自动应用或更新安全政策。
- 数据质量自动化:在表的架构发生更改时触发数据质量扫描或提醒数据所有者。
- ETL/ELT 触发:在创建或更新新表条目时启动数据转换作业。
- 审核:将所有元数据更改记录到审核表中,以确保合规。
核心概念和配置
元数据变更 Feed 是一种 Knowledge Catalog 资源,用于监控条目和切面的元数据变更(创建、更新、删除),并向 Pub/Sub 主题发送通知。在 API 中,此资源称为 metadataFeeds (projects/PROJECT_ID/locations/LOCATION/metadataFeeds/FEED_ID)。
您可以通过定义元数据变更 Feed 的范围、过滤条件和目标位置来配置元数据变更 Feed。当发生与元数据变更 Feed 的范围和过滤条件匹配的元数据变更时,Knowledge Catalog 会向目标 Pub/Sub 主题发布通知消息。
元数据更改 Feed 配置
您可以通过定义以下内容来配置元数据变更 Feed:
范围:要监控其更改的一组资源,例如整个组织、特定项目或特定条目组。在 API 中,您需要指定资源名称。以下示例展示了条目组的资源名称格式:
projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID。过滤条件:根据条目类型、切面类型或更改类型(
CREATE、UPDATE或DELETE)过滤哪些更改会生成通知的条件。在 API 中,您需要指定资源名称。以下示例展示了条目类型的资源名称格式:projects/PROJECT_ID/locations/global/entryTypes/ENTRY_TYPE。如果您未指定任何过滤条件,则 Feed 范围内的所有更改类型(CREATE、UPDATE和DELETE)都会生成通知。目标:Knowledge Catalog 将通知消息发布到的 Pub/Sub 主题。在 API 中,您需要指定主题名称。以下示例展示了 Pub/Sub 主题的资源名称格式:
projects/PROJECT_ID/topics/TOPIC_ID。
以下示例展示了配置为监控项目 PROJECT_ID_1 和 PROJECT_ID_2 的 CREATE 事件的元数据更改 Feed,该 Feed 会向 TOPIC_ID 发送通知:
{
"scope": {
"projects": [
"projects/PROJECT_ID_1",
"projects/PROJECT_ID_2"
]
},
"filter": {
"changeTypes": [
"CREATE"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
通知消息格式
当元数据更改触发通知时,Knowledge Catalog 会向指定的 Pub/Sub 主题发布消息。更改事件详细信息会在 Pub/Sub 消息中捕获。该消息由用于过滤的属性和包含更改详情的数据载荷组成。
如需详细了解如何使用这些消息,请参阅使用通知消息。
属性
这些属性可用于过滤主题中的消息。您可以使用 Pub/Sub 订阅过滤条件过滤订阅中的消息。
属性中提供了以下字段:
timestamp:更改发生时的时间戳。entry_name:条目的资源名称,格式为projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/ENTRY_ID。feed_name:元数据变更 Feed 的资源名称,格式为projects/PROJECT_ID/locations/LOCATION/metadataChangeFeeds/FEED_ID。entry_type:条目类型的资源名称,格式为projects/PROJECT_NUMBER/locations/LOCATION/entryTypes/ENTRY_TYPE_ID。如需了解详情,请参阅条目类型。entry_change_type:更改类型:CREATED、UPDATED或DELETED。
以下示例展示了条目创建事件的属性:
{
"feed_name": "projects/PROJECT_ID/locations/LOCATION/metadataFeeds/FEED_ID",
"entry_change_type": "CREATE",
"timestamp": "2026-02-03T23:12:03.054469Z",
"entry_type": "projects/PROJECT_NUMBER/locations/global/entryTypes/ENTRY_TYPE_ID"
}
数据载荷
Pub/Sub 消息的数据载荷是一个 JSON 字符串,其中包含有关更改的详细信息。
以下是数据载荷示例:
{
"entryName": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/ENTRY_ID",
"fullyQualifiedName": "bigquery:PROJECT_ID.DATASET_ID.TABLE_ID",
"updatedAspects": [
"projects/PROJECT_NUMBER/locations/global/aspectTypes/updated-aspect-type"
],
"createdAspects": [
"projects/PROJECT_NUMBER/locations/global/aspectTypes/created-aspect-type"
],
"deletedAspects": [
"projects/PROJECT_NUMBER/locations/global/aspectTypes/deleted-aspect-type"
]
}
VPC Service Controls 注意事项
元数据变更 Feed 符合 VPC Service Controls (VPC-SC) 的要求。
如果元数据变更 Feed 属于组织级范围,则只有元数据变更 Feed 的 VPC Service Controls 边界内的项目才会生成通知。
如果元数据变更 Feed 的范围限定为项目或条目组,则所有指定的项目或条目组都必须与元数据变更 Feed 位于同一 VPC Service Controls 边界内;否则,元数据变更 Feed 创建会失败。
配额和限制
如需了解与元数据变更 Feed 相关的配额,请参阅 Knowledge Catalog 配额和限制。
请查看元数据变更 Feed 的以下限制:
传送:元数据更改 Feed 会“至少一次”传送通知。您必须在订阅者中处理可能重复的消息。
顺序:Knowledge Catalog 不保证消息传递的顺序。
延迟时间:元数据更改 Feed 通知近乎实时。
启用延迟:由于后端缓存,新创建或更新的元数据变更 Feed 配置最多可能需要 10 分钟才能生效。
载荷:初始通知消息仅包含更改签名。例如,条目名称、条目类型、更改类型以及已更改的切面类型或键的列表,不包含实际更改的数据(切面载荷)。您必须调用 Dataplex API (
GetEntry) 才能检索条目或切面的当前状态(如果需要)。通用存储切面:元数据变更 Feed 不支持通用存储切面。
价格
Knowledge Catalog 免费提供元数据变更 Feed。 不过,您需要为所使用的资源(例如 Pub/Sub 消息传递、存储和数据出站流量)付费。如需了解详情,请参阅 Pub/Sub 价格。