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

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

激活云端 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. 点击新创建的零售业务术语库以进入该术语库。

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。您需要一个架构来强制要求所有者必须是有效的电子邮件格式。

我们将使用 Aspect Type 来定义此合约。

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

a920c555d40425a.png

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

20babd75c2b8dce6.png

您刚刚创建了一个可重复使用的元数据合同。目前尚未使用,但结构已存在。

5. 将治理与资产相关联

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

我们将丰富 BigQuery 表的 Dataplex Entry

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

让我们通过将 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 Aspect 附加到表中,以定义所有权和敏感度。

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

4b770307159a28d8.png

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

f953c5569520d42a.png

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

6. 统一的发现和验证

我们开展这项工作并非只是为了填写表单。我们这样做是为了让数据可发现且可信。让我们看看这些元数据如何改变搜索和发现的开发者体验。

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

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

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

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

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

49120fe4ea224359.png

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

  1. 清空搜索栏以重置视图
  2. 查看屏幕左侧的按房源属性过滤面板。
  3. 向下滚动并展开数据资产治理部分(这表示您创建的切面类型)
  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),并标记为待审核。