1. 简介
作为开发者和数据工程师,我们经常会继承大量数据,这些数据看起来更像是数据沼泽。我们反复遇到相同的摩擦点:“‘amt’列的实际定义是什么?”如果此数据集损坏,谁来负责?”或“我们是否可以在个性化推荐引擎中使用此表?
传统上,数据目录是被动清单,其中填充了自由文本标记,这些标记很快就会变得不一致和过时。它们不会强制执行结构,因此几乎不可能进行程序化治理。
为了使此方法切实可行,我们将在本实验中完成一个场景:对原始零售销售数据建立强大的治理,以便财务部门可以信任这些数据进行正式报告。您将把这些数据从模糊的“沼泽”状态转移到受治理的产品。
Dataplex Universal Catalog 通过提供主动的结构化元数据管理框架来改变这一点。它允许您将结构化、架构驱动的元数据(切面 )和公认的业务定义(术语表 )直接附加到数据资产(条目 )中。
在编写 Python 脚本或 Terraform 模块以大规模自动执行此操作之前,您需要了解底层对象模型。
在此 Codelab 中,我们将在 Google Cloud 控制台中手动执行治理步骤。我们将明确地将条目、切面类型、切面和术语表联系起来,以便您对如何使数据可发现、可理解和可信任有一个清晰的心理模型。
前提条件
- 具有 Owner 或编辑权限的 Google Cloud 项目。
- 熟悉 Google Cloud 控制台。
- 具备 Cloud Shell 中的 gcloud 和 bq CLI 基本技能。
学习内容
- Dataplex 条目、切面类型和切面之间的关键区别。
- 如何创建业务术语表 以解决术语中的歧义。
- 如何设计切面类型 以强制执行技术元数据的严格架构(超越“标记”)。
- 如何将业务术语表术语关联到特定的 BigQuery 列。
- 如何将结构化切面附加到数据资产并验证输入。
- 如何针对此新的结构化元数据执行精确的搜索查询。
所需条件
- Google Cloud 账号和 Google Cloud 项目
- 网络浏览器,例如 Chrome
重要概念
- 条目 :目录中数据资产的规范抽象表示。可以将其视为“指针”或“名词”。创建 BigQuery 表时,Dataplex 会自动为其创建条目。我们不会直接治理表,而是治理其条目。
- 业务术语表 :组织业务术语的集中式版本化字典。它是单一可信来源。它可以防止“销售部门对 GMV 的定义与财务部门不同”的问题。
- 切面类型 :特定元数据类别的架构或模板。切面类型定义了字段、数据类型(字符串、枚举、日期时间等)和约束(必需/可选)。它是确保元数据一致性的合同。
- 切面 :附加到条目的特定元数据,遵循切面类型定义的结构。它包含满足切面类型架构的实际数据。
2. 设置和要求
启动 Cloud Shell
虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。
启用必需的 API 并配置环境
运行以下命令来设置项目 ID、定义区域并启用必要的服务 API。
export PROJECT_ID=$(gcloud config get-value project)
gcloud config set project $PROJECT_ID
export LOCATION="us-central1"
gcloud services enable dataplex.googleapis.com \
bigquery.googleapis.com \
datacatalog.googleapis.com
创建 BigQuery 数据集并准备示例数据
我们需要一个具体的数据资产进行治理。我们将创建一个 BigQuery 数据集并加载一个代表交易的小型 CSV 示例。Dataplex 会自动发现此表并为其创建条目。
# Create the BigQuery Dataset in the us-central1 region
bq --location=$LOCATION mk --dataset \
--description "Retail data for governance codelab" \
$PROJECT_ID:retail_data
# Create a temporary CSV file with the sample data
echo "transaction_id,user_email,gmv,transaction_date
1001,test@example.com,150.50,2025-08-28
1002,user@example.com,75.00,2025-08-28" > /tmp/transactions.csv
# Load the data from the temporary CSV file into BigQuery
bq load \
--source_format=CSV \
--autodetect \
retail_data.transactions \
/tmp/transactions.csv
# (Optional) Clean up the temporary file
rm /tmp/transactions.csv
运行快速查询来验证设置:
bq query --nouse_legacy_sql "SELECT * FROM retail_data.transactions"
3. 使用业务术语表建立通用语言
有效的治理从明确的定义开始。如果开发者看到名为 gmv 的列,他们不应该猜测它是否包含税费或退货。业务术语表通过将业务定义与技术实现分离来解决此问题。
- 在 Google Cloud 控制台中,进入 Dataplex Universal Catalog 。
- 在左侧导航菜单中,选择术语表 (在“管理元数据”下)。

- 点击创建业务术语库 。
- 输入以下详细信息:
- 名称:
Retail Business Glossary - 位置:
us-central1(或您在设置中定义的位置)。
- 名称:
- 点击创建 。

- 点击新创建的 Retail Business Glossary 以进入该术语表。

- 点击创建类别 并将其命名为
Sales Metrics,然后点击创建 。类别有助于将相关术语分组。 - 选择
Sales Metrics类别,然后点击 添加术语,将其命名为Gross Merchandise Value,然后点击 创建 - 点击“概览”中的“+ 添加”按钮,然后填写以下详细信息:
- 概览:
The total value of merchandise sold over a given period of time before the deduction of any fees or expenses. This is a key indicator of e-commerce business growth.
- 概览:
- 点击保存 。

您现在已建立明确的定义,该定义可以关联到组织中的技术资产。
4. 使用切面类型定义结构化技术元数据
简单的“键:值”标记不足以满足工程严谨性。如果您需要跟踪“数据所有者”,则不希望一个表标记为 owner:bob,另一个表标记为
contact:alice@example.com。您需要一个架构来强制执行所有者是必需的,并且必须是有效的电子邮件格式。
我们将使用切面类型 来定义此合同。
- 在 Dataplex 左侧导航栏中,选择 目录 下的 切面类型和标记模板。
- 选择自定义 标签页,然后点击创建切面类型 。

- 输入以下详细信息:
- 显示名:
Data Asset Governance - 位置:
us-central1
- 显示名:
- 在模板 部分中,我们将为
Aspect定义架构。点击添加字段 以创建以下三个字段:- 字段 1:
- 显示名:
Data Steward - 类型:
Text - 文本类型:
Plain text - 基数:必需(勾选相应复选框)
- 显示名:
- 字段 2 (再次点击添加字段 ):
- 显示名:
Data Sensitivity - 类型:
Enum - 值:添加
Public、Internal和Confidential - 基数:可选
- 显示名:
- 字段 3 (再次点击添加字段 ):
- 显示名:
Last Review Date - 类型:
Date and time - 基数:可选
- 显示名:
- 字段 1:
- 点击保存 。

您刚刚创建了一个可重复使用的元数据合同。目前没有任何内容使用它,但结构已存在。
5. 将治理与资产关联
现在,我们将把所有内容整合在一起。我们有一个 BigQuery 表 (retail_data.transactions)、一个业务定义 (Gross Merchandise Value) 和一个治理架构 (Data Asset Governance)。
我们将丰富 BigQuery 表的 Dataplex 条目 。
使用业务情境丰富架构(列级别)
让我们通过将 gmv 列关联到术语表,告诉用户该列的实际含义。
- 在 Dataplex 左侧导航栏中,点击搜索 。
- 在右上角,点击 Dataplex Universal Catalog 标签页(如果尚未激活)。

- 搜索
retail_data.transactions。点击 BigQuery 表的结果。

- 点击条目详细信息中的架构 标签页。
- 勾选
gmv列行的复选框,然后点击添加业务术语 。 - 选择
Gross Merchandise Value术语。

列 gmv 不再只是“FLOAT”;它现在已关联到 Gross Merchandise Value 的公司定义。
使用结构化技术元数据丰富条目(表级别)
接下来,我们将 Data Asset Governance 切面 附加到表中,以定义所有权和敏感度。
- 停留在
retail_data.transactions条目页面上。 - 点击添加标记或切面 标签页,然后从下拉列表中选择
Data Asset Governance类型。

- 表单现在将显示在切面类型架构中定义的字段。按如下方式填写这些字段:
- 数据管理员:
finance-team@example.com - 数据敏感度: 选择
Internal。 - 上次审核日期: 选择今天的日期。
- 数据管理员:
- 点击保存 。

您已成功将结构化切面附加到条目。与简单标记不同,此数据会根据您创建的架构进行验证。
6. 统一发现和验证
我们这样做不是为了填写表单,而是为了使数据可发现且可信任。让我们看看此元数据如何改变开发者在搜索和发现方面的体验。
返回到 Dataplex Universal Catalog 中的主搜索 页面。
假设您是一名平台工程师,负责强制执行治理。您需要找到由特定切面类型治理的所有标记为“Internal”的资产。您需要根据架构使用精确的谓词。
您可以通过两种方式进行验证:使用精确的查询语法(对于自动化至关重要)或使用交互式界面过滤条件。
方法 1:通过结构化查询进行验证
- 在搜索栏中(在关键字 搜索模式下),输入以下结构化查询。
aspect:data-asset-governance.data-sensitivity=Internal
- 您应该会看到
retail_data.transactions表。

方法 2:通过界面过滤条件分面进行验证
- 清空搜索栏以重置视图
- 查看屏幕左侧的按属性过滤 面板。
- 向下滚动并展开 Data Asset Governance 部分(这表示您创建的切面类型)
- 在数据敏感度下,勾选
Internal的复选框。 - 搜索结果将更新以显示
retail_data.transactions表。

无论您使用输入的查询还是界面过滤条件,底层机制都是相同的。
这说明了 Dataplex 与简单 Wiki 之间的根本区别:您的元数据是可查询的结构。您现在可以构建自动审核(例如,“查找所有 last_review_date 大于 1 年前的表”),并依赖于这种可预测的结构。
7. 清理环境
为避免产生持续费用,请删除在此 Codelab 中创建的资源。
删除 BigQuery 数据集
此命令不可逆,并且使用 -f(强制)标志来移除数据集及其所有表,而无需确认。
# Re-run these exports if your Cloud Shell session timed out
export PROJECT_ID=$(gcloud config get-value project)
# Manually type this command to confirm you are deleting the correct dataset
bq rm -r -f --dataset $PROJECT_ID:retail_data
删除 Dataplex 工件
- 依次前往 Dataplex Universal Catalog 界面 > 管理元数据 > 目录 。
- 在切面类型和标记模板 中,选择 data_asset_governance 切面类型,然后将其删除。
- 依次前往管理元数据 > 术语表 ,选择
Retail Business Glossary,然后将其删除。请务必先删除术语Gross Merchandise Value,然后再删除术语表。
8. 恭喜!
您已超越简单的数据标记,并在 Dataplex 中建立了基础的结构化治理模型。
您已了解:
- 术语表可解决业务歧义。
- 切面类型为技术元数据提供架构合同。
- 切面将该架构应用于实际数据条目。
- Dataplex 搜索利用此结构化元数据进行精确发现。
后续步骤
- 治理即代码: 使用 Google Cloud Terraform 提供方 在版本控制中定义切面类型和术语表,确保开发/测试/生产环境中的架构一致。
- 自动标记: 编写一个 Cloud Functions 或 Cloud Build 步骤,该步骤由新数据集创建触发,自动附加带有默认值(例如
sensitivity=Internal, steward=TBD)的“数据资产治理”切面,并将其标记为待审核。