1. はじめに
開発者やデータ エンジニアは、データ沼のような大量のデータ コレクションを継承することがよくあります。「この amt 列の実際の定義は何ですか?」、「このデータセットが破損した場合、誰が責任を負うのか?」や「このテーブルをパーソナライズされたレコメンデーション エンジンで使用してもよいか?」などです。
従来、データ カタログは、すぐに不整合が生じて古くなる自由形式のテキストタグで埋められた受動的なインベントリでした。構造が強制されないため、プログラムによるガバナンスはほぼ不可能です。
このラボでは、小売業の生データを財務部門が公式レポートに使用できるように、そのデータに対する堅牢なガバナンスを確立するというシナリオを実践します。このデータは、曖昧な「沼」状態から管理されたプロダクトに移行されます。
Dataplex Universal Catalog は、アクティブで構造化されたメタデータ管理フレームワークを提供することで、この状況を変えます。これにより、構造化されたスキーマ駆動型メタデータ(アスペクト)と承認済みのビジネス定義(用語集)をデータアセット(エントリ)に直接関連付けることができます。
この処理を大規模に自動化する Python スクリプトまたは Terraform モジュールを作成する前に、基盤となるオブジェクト モデルを理解する必要があります。
この Codelab では、Google Cloud コンソールでガバナンスの手順を手動で実行します。エントリ、アスペクト タイプ、アスペクト、用語集を明示的に関連付け、データを検出可能、理解可能、信頼できるものにする方法について、確固たるメンタルモデルを構築します。
前提条件
- オーナーまたは編集者のアクセス権を持つ 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(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある 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. アスペクト タイプを使用して構造化されたテクニカル メタデータを定義する
単純な「キー:値」タグは、エンジニアリングの厳密性には不十分です。「データオーナー」を追跡する必要がある場合は、1 つのテーブルに owner:bob タグを付け、別のテーブルに contact:alice@example.com タグを付けることはできません。オーナーが必須であり、有効なメール形式である必要があることを強制するには、スキーマが必要です。
このコントラクトを定義するには、アスペクト タイプを使用します。
- Dataplex の左側のナビゲーションで、[カタログ] の [アスペクト タイプとタグ テンプレート] を選択します。
- [カスタム] タブを選択し、[アスペクト タイプを作成する] をクリックします。

- 次の詳細情報を入力します。
- Display name:
Data Asset Governance - ロケーション:
us-central1
- Display name:
- [テンプレート] セクションで、
Aspectのスキーマを定義します。[フィールドを追加] をクリックして、次の 3 つのフィールドを作成します。- フィールド 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 エントリを拡充します。
ビジネス コンテキストでスキーマを拡充する(列レベル)
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 のメインの [検索] ページに戻ります。
たとえば、ガバナンスを適用するプラットフォーム エンジニアであるとします。特定の Aspect Type によって管理されている「内部」とマークされたすべてのアセットを見つける必要があります。スキーマに基づいて正確な述語を使用する必要があります。
これを確認するには、正確なクエリ構文(自動化に不可欠)を使用する方法と、インタラクティブな UI フィルタを使用する方法の 2 つがあります。
方法 1: 構造化クエリで確認する
- 検索バー(キーワード検索モード)に、次の構造化クエリを入力します。
aspect:data-asset-governance.data-sensitivity=Internal
retail_data.transactionsテーブルが表示されます。

方法 2: UI フィルタ ファセットで確認する
- 検索バーをクリアしてビューをリセットする
- 画面の左側にある [プロパティでフィルタ] パネルを確認します。
- 下にスクロールして [データアセット ガバナンス] セクションを開きます(これは作成したアスペクト タイプを表します)。
- [データの機密性] で、
Internalのチェックボックスをオンにします。 - 検索結果が更新され、
retail_data.transactionsテーブルが表示されます。

入力したクエリを使用する場合でも、UI フィルタを使用する場合でも、基盤となるメカニズムは同じです。
これは、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 UI > [メタデータの管理] > [カタログ] に移動します。
- [アスペクト タイプとタグ テンプレート] で、data_asset_governance アスペクト タイプを選択して削除します。
- [メタデータを管理] > [用語集] に移動し、
Retail Business Glossaryを選択して削除します。用語Gross Merchandise Valueを削除してから、用語集を削除してください。
8. 完了
単純なデータタグ付けを超えて、Dataplex に基盤となる構造化されたガバナンス モデルを確立している。
学習した内容は以下のとおりです。
- 用語集はビジネスの曖昧さを解消します。
- アスペクト タイプは、技術メタデータのスキーマ コントラクトを提供します。
- アスペクトは、そのスキーマを実際のデータ エントリに適用します。
- Dataplex Search は、この構造化メタデータを使用して正確な検出を行います。
次のステップ
- Governance as Code: Google Cloud Terraform プロバイダを使用して、バージョン管理でアスペクト タイプと用語集を定義し、開発環境、テスト環境、本番環境で一貫したスキーマを確保します。
- 自動タグ付け: 新しいデータセットの作成によってトリガーされる Cloud Functions または Cloud Build ステップを作成し、デフォルト値(
sensitivity=Internal, steward=TBD)し、審査対象として報告します。