使用 Dataplex Universal Catalog 实现基础治理:入门

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 图标:

激活云端 Shell

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

Google 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 的列,他们不应该猜测它是否包含税费或退货。业务术语表通过将业务定义与技术实现分离来解决此问题。

  1. 在 Google Cloud 控制台中,进入 Dataplex Universal Catalog
  2. 在左侧导航菜单中,选择术语表 (在“管理元数据”下)。

96020207ba4bd128.png

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

e3b146e5f3b57785.png

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

c98bdf049e946234.png

  1. 点击创建类别 并将其命名为 Sales Metrics,然后点击创建 。类别有助于将相关术语分组。
  2. 选择 Sales Metrics 类别,然后点击 添加术语,将其命名为 Gross Merchandise Value,然后点击 创建
  3. 点击“概览”中的“+ 添加”按钮,然后填写以下详细信息:
    • 概览: 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. 点击保存

3a642fd2a41c040e.png

您现在已建立明确的定义,该定义可以关联到组织中的技术资产。

4. 使用切面类型定义结构化技术元数据

简单的“键:值”标记不足以满足工程严谨性。如果您需要跟踪“数据所有者”,则不希望一个表标记为 owner:bob,另一个表标记为 contact:alice@example.com。您需要一个架构来强制执行所有者是必需的,并且必须是有效的电子邮件格式。

我们将使用切面类型 来定义此合同。

  1. 在 Dataplex 左侧导航栏中,选择 目录 下的 切面类型和标记模板
  1. 选择自定义 标签页,然后点击创建切面类型

a920c555d40425a.png

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

20babd75c2b8dce6.png

您刚刚创建了一个可重复使用的元数据合同。目前没有任何内容使用它,但结构已存在。

5. 将治理与资产关联

现在,我们将把所有内容整合在一起。我们有一个 BigQuery 表 (retail_data.transactions)、一个业务定义 (Gross Merchandise Value) 和一个治理架构 (Data Asset Governance)。

我们将丰富 BigQuery 表的 Dataplex 条目

使用业务情境丰富架构(列级别)

让我们通过将 gmv 列关联到术语表,告诉用户该列的实际含义。

  1. 在 Dataplex 左侧导航栏中,点击搜索
  2. 在右上角,点击 Dataplex Universal Catalog 标签页(如果尚未激活)。

849a24e7b1a86a19.png

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

54d3edd1520593a9.png

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

64768eecf630c90b.png

gmv 不再只是“FLOAT”;它现在已关联到 Gross Merchandise Value 的公司定义。

使用结构化技术元数据丰富条目(表级别)

接下来,我们将 Data Asset Governance 切面 附加到表中,以定义所有权和敏感度。

  1. 停留在 retail_data.transactions 条目页面上。
  2. 点击添加标记或切面 标签页,然后从下拉列表中选择 Data Asset Governance 类型。

4b770307159a28d8.png

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

f953c5569520d42a.png

您已成功将结构化切面附加到条目。与简单标记不同,此数据会根据您创建的架构进行验证。

6. 统一发现和验证

我们这样做不是为了填写表单,而是为了使数据可发现且可信任。让我们看看此元数据如何改变开发者在搜索和发现方面的体验。

返回到 Dataplex Universal Catalog 中的主搜索 页面。

假设您是一名平台工程师,负责强制执行治理。您需要找到由特定切面类型治理的所有标记为“Internal”的资产。您需要根据架构使用精确的谓词。

您可以通过两种方式进行验证:使用精确的查询语法(对于自动化至关重要)或使用交互式界面过滤条件。

方法 1:通过结构化查询进行验证

  1. 在搜索栏中(在关键字 搜索模式下),输入以下结构化查询。
aspect:data-asset-governance.data-sensitivity=Internal
  1. 您应该会看到 retail_data.transactions 表。

49120fe4ea224359.png

方法 2:通过界面过滤条件分面进行验证

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

4df224cb06720ec4.png

无论您使用输入的查询还是界面过滤条件,底层机制都是相同的。

这说明了 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 工件

  1. 依次前往 Dataplex Universal Catalog 界面 > 管理元数据 > 目录
  2. 切面类型和标记模板 中,选择 data_asset_governance 切面类型,然后将其删除。
  3. 依次前往管理元数据 > 术语表 ,选择 Retail Business Glossary,然后将其删除。请务必先删除术语 Gross Merchandise Value,然后再删除术语表。

8. 恭喜!

您已超越简单的数据标记,并在 Dataplex 中建立了基础的结构化治理模型。

您已了解:

  • 术语表可解决业务歧义。
  • 切面类型为技术元数据提供架构合同。
  • 切面将该架构应用于实际数据条目。
  • Dataplex 搜索利用此结构化元数据进行精确发现。

后续步骤

  • 治理即代码: 使用 Google Cloud Terraform 提供方 在版本控制中定义切面类型和术语表,确保开发/测试/生产环境中的架构一致。
  • 自动标记: 编写一个 Cloud Functions 或 Cloud Build 步骤,该步骤由新数据集创建触发,自动附加带有默认值(例如 sensitivity=Internal, steward=TBD)的“数据资产治理”切面,并将其标记为待审核。