1. 简介
作为开发者和数据工程师,我们经常会继承大量看起来更像数据沼泽的数据集合。我们反复遇到相同的摩擦点:“‘amt’列的实际定义是什么?”“如果此数据集出现问题,谁负责?”,或者“我们是否可以在个性化推荐引擎中使用此表?”
传统上,数据目录是包含自由文本标记的被动清单,这些标记很快就会变得不一致和过时。它们不强制执行结构,使得程序化治理几乎不可能实现。
为了使此过程更具实践性,我们将在此实验中演练一个场景:对原始零售销售数据建立可靠的治理,以便财务部门可以信任这些数据并将其用于正式报告。您将把这些数据从模糊不清的“沼泽”状态转移到受监管的产品中。
Dataplex Universal Catalog 通过提供主动式结构化元数据管理框架来改变这种情况。借助它,您可以将结构化、基于架构的元数据(切面)和已接受的业务定义(术语库)直接附加到数据资产(条目)。
在编写 Python 脚本或 Terraform 模块以大规模自动执行此操作之前,您需要了解底层对象模型。
在本 Codelab 中,我们将手动在 Google Cloud 控制台中执行治理步骤。我们将明确关联条目、方面类型、方面和术语库,以便您对如何使数据可发现、可理解和可信有一个扎实的心理模型。
前提条件
- 拥有“所有者”或“编辑者”访问权限的 Google Cloud 项目。
- 熟悉 Google Cloud 控制台。
- 具备 Cloud Shell 中的 gcloud 和 bq CLI 基本技能。
学习内容
- Dataplex 条目、切面类型和切面之间的关键区别。
- 如何创建业务术语库来消除术语的歧义。
- 如何设计切面类型以针对技术元数据强制执行严格的架构(超越“标记”)。
- 如何将业务术语表中的术语与特定的 BigQuery 列相关联。
- 如何将结构化 Aspect 附加到数据资产并验证输入。
- 如何针对此新的结构化元数据执行精确的搜索查询。
所需条件
- 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(或您在设置中定义的位置)。
- 名称:
- 点击创建。

- 点击新创建的零售业务术语库以进入该术语库。

- 点击创建类别,将其命名为
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。您需要一个架构来强制要求所有者必须是有效的电子邮件格式。
我们将使用 Aspect Type 来定义此合约。
- 在 Dataplex 左侧导航栏中,选择目录下方的切面类型和标记模板。
- 选择自定义标签页,然后点击创建切面类型。

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

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

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

- 点击条目详情中的架构标签页。
- 选中
gmv列所在行的复选框,然后点击添加业务术语。 - 选择
Gross Merchandise Value学期。

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

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

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

方法 2:通过界面过滤条件分面进行验证
- 清空搜索栏以重置视图
- 查看屏幕左侧的按房源属性过滤面板。
- 向下滚动并展开数据资产治理部分(这表示您创建的切面类型)
- 在数据敏感度下,勾选
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),并标记为待审核。