Dataplexのアスペクトタイプと用語集を自動設計して登録するツールを作ってみた

Dataplexのアスペクトタイプと用語集を自動設計して登録するツールを作ってみた

2025.09.29

データ事業本部のsutoです。

Google Cloud Dataplex Universal Catalogには、メタデータを拡充させるための「アスペクトタイプ」と「ビジネス用語集」があり、Dataplexに登録してカタログリソースと紐づけることができます。

登録した多くのビジネスメタデータや用語について、どのように階層設計をするか、また一括登録を行うことができるかを検討してみましたが、公式サービスによる機能やオプションでは現時点では無さそうだったので独自にツールを作っています。

ツールの作成にあたっては生成AIであるClaude Codeを利用して開発をやってみました。

こちらはチームとして、今後本格的に複数の機能を充実させる予定なのでGitはまだ公開できていませんが、「 データ事業本部のイニシアティブチームはこんなことやってます 」というアピールも兼ねて、私が開発している機能の部分をご紹介できればと思っています。

実装した機能

現時点で実装が完了した機能は以下のとおりです。

  • CLIインターフェーズ:直接的なコマンドライン操作によってツールを使用する
  • アスペクトタイプの自動生成:.csvや.mdで記載したキーワードや文章などの情報を自然言語処理で解析→Geminiにinputとして渡し、アスペクト名、フィールド名、データ型、descriptionなどを生成→outputをcsvファイルに表として整理
    • 重複しているキーワードのチェックなども含まれている
    • オプション「--no-ai」を付ければ、自然言語処理やGeminiを介さずcsvファイルに整理したテキストをそのまま出力することもできる
  • 用語集の自動生成:アスペクトタイプと同様の処理で用語集の名前、Term(用語)名、dwscriptionを自動生成し、csvファイルに整理
    • 文章全体をチェックして、追加を推奨するキーワードの生成も行なってくれる
    • オプション「--no-ai」を付ければ、自然言語処理やGeminiを介さずcsvファイルに整理したテキストをそのまま出力することもできる
  • Dataplex APIによる登録:自動生成したアスペクトタイプと用語集を指定したプロジェクトのDataplex Universal Catalogに追加
    • メタデータ一括登録:自動生成によるoutputファイルを読み込んで一括登録できる
    • 重複管理:アスペクトタイプと用語の重複チェック(重複があった場合追加をスキップする機能)

必要要件

ツールを動作させる環境に関する情報は以下です。

  • Python 3.10以上(開発中に3.13は互換性問題あり、3.12推奨)
  • Google Cloud プロジェクト
  • Dataplex API有効化
  • Gemini Pro API アクセス
  • Google Cloud認証(Application Default Credentials)

検証してみた

準備

現在は開発環境下での検証なので、「Gitリポジトリからのクローン→依存パッケージのインストール→Google Cloud認証→configファイルに必要な設定を入力」を行います。

			
			git clone "gitリポジトリのURL"
cd "リポジトリのディレクトリ"

pip install -r requirements.txt

gcloud auth application-default login

# コンフィグファイル(app.yaml)に以下の最低限の情報を記載

google_cloud:
  project_id: "your-project-id"
  location: "asia-northeast1"

gemini:
  api_key: "your-gemini-api-key"
  model: "gemini-2.5-pro"
  temperature: 0.7
  max_tokens: 4096
  system_prompt: "あなたはDataplexメタデータ管理の専門家です。ビジネスメタデータの生成において、正確で一貫性のある結果を提供してください。"
  retry_count: 3
  retry_delay: 1  # 秒

		

現在の実装状況における依存パッケージは以下です。

			
			# Core dependencies
python-dotenv==1.0.0
pyyaml==6.0.1
pydantic==2.5.3

# Google Cloud
google-cloud-dataplex==2.12.0  # REST APIフォールバック対応
google-auth==2.25.2
google-auth-httplib2==0.2.0  # Google認証用
google-auth-oauthlib==1.2.0  # OAuth認証用
google-generativeai==0.3.2

# HTTP/REST API
requests==2.31.0  # REST API直接呼び出し用

# Data processing
pandas==2.1.4
numpy==1.26.2
markdown==3.5.1

# CLI
click==8.1.7
rich==13.7.0

# Logging
structlog==24.1.0

# Retry and resilience
tenacity==8.2.3

# Performance and caching
psutil==5.9.6
redis==5.0.1  # オプション: Redisキャッシュ使用時
cachetools==5.3.2

		

アスペクトタイプの生成

アスペクトタイプとして生成したいワードを記載した.csv(または.md)を以下に準備しました。
※ツールとして、記載フォーマットは決まっておらず、内部のキーワードや文章を自然言語処理で解析してフィールド名とそのdescriptionとして登録するリストを出力し、Gemini(今回はGemini 2.5 Pro を使用)に渡します。

入力ファイルには、キーワードに関する説明もかなり大まかで、重複しているワードも含まれています。

スクリーンショット 2025-09-29 15.01.59

実際にアスペクトタイプ生成コマンドを実行してみます。
入力ファイルを格納したフォルダ:input_aspect
出力先フォルダ:output_aspect

			
			% python -m src.cli.main aspect generate -i ./input_aspect -o ./output_aspect          
アスペクトタイプ生成を開始しています...
2025-09-29 15:03:19 - src.services.gemini_client - INFO - GeminiClient initialized
AI支援機能が有効です (Gemini)
2025-09-29 15:03:19 - src.services.file_parser - INFO - FileParser initialized
2025-09-29 15:03:19 - src.services.keyword_extractor - INFO - KeywordExtractor initialized
2025-09-29 15:03:19 - src.services.prompts.prompt_optimizer - INFO - PromptOptimizer initialized
2025-09-29 15:03:19 - src.services.data_transformer - INFO - DataTransformer initialized
2025-09-29 15:03:19 - src.services.csv_writer - INFO - CSVWriter initialized with output_dir: ./output_aspect
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - AspectTypeWorkflow initialized
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - [0.0%] file_discovery: Discovering files...
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - Discovered 1 files
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - [20.0%] file_discovery: Completed: file_discovery
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - [20.0%] file_parsing: Parsing 1 files...
2025-09-29 15:03:19 - src.services.file_parser - INFO - File parsed successfully
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - Parsed 1 documents
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - [40.0%] file_parsing: Completed: file_parsing
2025-09-29 15:03:19 - src.workflows.aspect_type_workflow - INFO - [40.0%] keyword_extraction: Extracting keywords...
2025-09-29 15:03:19 - src.services.gemini_client - INFO - Generating content
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1759125799.976137 17779407 alts_credentials.cc:93] ALTS creds ignored. Not running on GCP and untrusted ALTS is not enabled.
2025-09-29 15:03:48 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 15:03:48 - src.utils.json_parser - INFO - Successfully parsed JSON from text
2025-09-29 15:03:48 - src.workflows.aspect_type_workflow - INFO - Extracted 50 unique keywords
2025-09-29 15:03:48 - src.workflows.aspect_type_workflow - INFO - [60.0%] keyword_extraction: Completed: keyword_extraction
2025-09-29 15:03:48 - src.workflows.aspect_type_workflow - INFO - [60.0%] data_transformation: Transforming to aspect types...
2025-09-29 15:03:48 - src.services.gemini_client - INFO - Generating content
2025-09-29 15:04:31 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 15:04:31 - src.utils.json_parser - INFO - Successfully parsed JSON from text
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - Generated 4 aspect types
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - [80.0%] data_transformation: Completed: data_transformation
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - [80.0%] csv_output: Writing to CSV...
2025-09-29 15:04:31 - src.services.csv_writer - INFO - Wrote 25 rows to ./output_aspect/aspect_types_20250929_150431.csv
2025-09-29 15:04:31 - src.services.csv_writer - INFO - Exported Dataplex format to ./output_aspect/aspect_type_dataplex_import_20250929_150431.csv
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - Wrote CSV files: ./output_aspect/aspect_types_20250929_150431.csv, ./output_aspect/aspect_type_dataplex_import_20250929_150431.csv
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - [100.0%] csv_output: Completed: csv_output
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - [100.0%] completed: Workflow completed successfully
2025-09-29 15:04:31 - src.workflows.aspect_type_workflow - INFO - Workflow execution completed in 71.72 seconds
       アスペクトタイプ生成結果       
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ 項目               ┃ 値            ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ status             │ completed     │
│ success            │ True          │
│ total_files        │ 1             │
│ processed_files    │ 1             │
│ aspect_types_count │ 4             │
│ execution_time     │ 71.72 seconds │
│ errors_count       │ 0             │
└────────────────────┴───────────────┘

		

出力された結果は以下となります。

  • Geminiの指示やプロンプトには「アスペクトIDやフィールドIDは英語で生成」、「descriptionは日本語で生成」などの条件を入れています
    • 入力ファイルの文章をs流程度踏襲しつつ、簡潔な文章のdescriptionが日本語で生成された
    • キーワード、文章からアスペクト名、フィールド名をしっかり連想できている
  • アスペクトタイプを4種類にカテゴリ分けされているように、分類に関しても自動で判断して設計できている
  • 同じフィールド名の生成が起きないようになっている

スクリーンショット 2025-09-29 15.08.52

アスペクトタイプの一括登録

前述で出力されたcsvファイルを引数として、自分のプロジェクトのDataplex Universal Catalogにアスペクトタイプを追加するコマンドを実行してみます。

			
			% python -m src.cli.main --project-id suto-takeshi-******** dataplex register \ 
  -f ./output_aspect/aspect_type_dataplex_import_20250929_150431.csv --skip-duplicates
Dataplex登録を開始しています...
2025-09-29 15:58:17 - src.services.dataplex_client - INFO - Using REST API mode (DATAPLEX_CLIENT_MODE=REST)
2025-09-29 15:58:17 - src.services.dataplex_rest_client - WARNING - GOOGLE_APPLICATION_CREDENTIALS points to non-existent file: /path/to/your/credentials.json
2025-09-29 15:58:17 - src.services.dataplex_rest_client - INFO - Clearing GOOGLE_APPLICATION_CREDENTIALS to use Application Default Credentials
2025-09-29 15:58:18 - src.services.dataplex_rest_client - INFO - DataplexRESTClient initialized for project: suto-takeshi-********
2025-09-29 15:58:18 - src.services.dataplex_client - INFO - RESTClientAdapter initialized
2025-09-29 15:58:18 - src.services.dataplex_client - INFO - REST API client initialized successfully
2025-09-29 15:58:18 - src.services.dataplex_client - INFO - DataplexClient initialized with RESTClient
2025-09-29 15:58:18 - src.workflows.dataplex_registration_workflow - INFO - DataplexRegistrationWorkflow initialized
2025-09-29 15:58:18 - src.workflows.dataplex_registration_workflow - INFO - Transaction started: 680d6cda-c6e0-4b72-b48a-f72e49b94676
2025-09-29 15:58:18 - src.workflows.dataplex_registration_workflow - INFO - Found 1 metadata files
2025-09-29 15:58:18 - src.workflows.dataplex_registration_workflow - INFO - Loaded 24 items from ./output_aspect/aspect_type_dataplex_import_20250929_150431.csv
2025-09-29 15:58:18 - src.services.dataplex_client - INFO - Extracted 10 fields for aspect type business-governance
2025-09-29 15:58:18 - src.services.dataplex_rest_client - INFO - AspectType created: projects/suto-takeshi-********/locations/asia-northeast1/operations/operation-1759129098835-63feb290cd782-34e6c06a-920abe40
2025-09-29 15:58:18 - src.workflows.dataplex_registration_workflow - INFO - Registered aspect type: business-governance
2025-09-29 15:58:18 - src.services.dataplex_client - INFO - Extracted 3 fields for aspect type system-context
2025-09-29 15:58:18 - src.services.dataplex_rest_client - INFO - AspectType created: projects/suto-takeshi-********/locations/asia-northeast1/operations/operation-1759129098988-63feb290f2b4f-67f7914e-8067c7c6
2025-09-29 15:58:18 - src.workflows.dataplex_registration_workflow - INFO - Registered aspect type: system-context
2025-09-29 15:58:18 - src.services.dataplex_client - INFO - Extracted 2 fields for aspect type product-catalog
2025-09-29 15:58:19 - src.services.dataplex_rest_client - INFO - AspectType created: projects/suto-takeshi-********/locations/asia-northeast1/operations/operation-1759129099136-63feb29116cfc-1e403826-326eba47
2025-09-29 15:58:19 - src.workflows.dataplex_registration_workflow - INFO - Registered aspect type: product-catalog
2025-09-29 15:58:19 - src.services.dataplex_client - INFO - Extracted 9 fields for aspect type product-analytics
2025-09-29 15:58:19 - src.services.dataplex_rest_client - INFO - AspectType created: projects/suto-takeshi-********/locations/asia-northeast1/operations/operation-1759129099242-63feb29130cbe-fd432c4a-0e2d9fd3
2025-09-29 15:58:19 - src.workflows.dataplex_registration_workflow - INFO - Registered aspect type: product-analytics
2025-09-29 15:58:19 - src.workflows.dataplex_registration_workflow - INFO - Transaction committed: 680d6cda-c6e0-4b72-b48a-f72e49b94676
2025-09-29 15:58:19 - src.workflows.dataplex_registration_workflow - INFO - Registration completed in 0.90 seconds
                     Dataplex登録結果                      
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 項目             ┃ 値                                   ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ status           │ completed                            │
│ success          │ True                                 │
│ registered_count │ 4                                    │
│ skipped_count    │ 0                                    │
│ failed_count     │ 0                                    │
│ total_processed  │ 4                                    │
│ execution_time   │ 0.90 seconds                         │
│ transaction_id   │ 680d6cda-c6e0-4b72-b48a-f72e49b94676 │
└──────────────────┴──────────────────────────────────────┘

		

結果は以下のとおり、登録することができました。

スクリーンショット 2025-09-29 15.23.58

スクリーンショット 2025-09-29 15.24.11

用語集の生成

アスペクトタイプと同様に用語集の生成も検証してみます。
以下のcsvにリスト化した用語をinputとしてやってみます。

スクリーンショット 2025-09-29 16.02.01

用語集を生成するためのコマンドを実行します。

			
			% python -m src.cli.main glossary generate -i ./input_glossary -o ./output_glossary        
用語集生成を開始しています...
2025-09-29 16:03:50 - src.services.gemini_client - INFO - GeminiClient initialized
AI支援機能が有効です (Gemini)
2025-09-29 16:03:50 - src.services.file_parser - INFO - FileParser initialized
2025-09-29 16:03:50 - src.services.keyword_extractor - INFO - KeywordExtractor initialized
2025-09-29 16:03:50 - src.services.prompts.prompt_optimizer - INFO - PromptOptimizer initialized
2025-09-29 16:03:50 - src.services.data_transformer - INFO - DataTransformer initialized
2025-09-29 16:03:50 - src.services.csv_writer - INFO - CSVWriter initialized with output_dir: ./output_glossary
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - GlossaryWorkflow initialized
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - [0.0%] file_discovery: Discovering files...
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - Discovered 1 files
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - [16.7%] file_discovery: Completed: file_discovery
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - [17.0%] file_parsing: Parsing 1 files...
2025-09-29 16:03:50 - src.services.file_parser - INFO - File parsed successfully
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - Parsed 1 documents
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - [33.3%] file_parsing: Completed: file_parsing
2025-09-29 16:03:50 - src.workflows.glossary_workflow - INFO - [33.0%] term_extraction: Extracting terms...
2025-09-29 16:03:50 - src.services.gemini_client - INFO - Generating content
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1759129430.509778 17867878 alts_credentials.cc:93] ALTS creds ignored. Not running on GCP and untrusted ALTS is not enabled.
2025-09-29 16:04:04 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 16:04:04 - src.utils.json_parser - INFO - Successfully parsed JSON from text
2025-09-29 16:04:04 - src.workflows.glossary_workflow - INFO - Pre-generating English names for 12 Japanese terms
2025-09-29 16:04:04 - src.services.gemini_client - INFO - Generating content
2025-09-29 16:04:27 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 16:04:27 - src.services.gemini_client - INFO - Generating content
2025-09-29 16:04:35 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 16:04:35 - src.services.gemini_client - INFO - Generating content
2025-09-29 16:05:18 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 16:05:18 - src.utils.json_parser - INFO - Successfully parsed JSON from text
2025-09-29 16:05:18 - src.workflows.glossary_workflow - INFO - Extracted 17 unique terms
2025-09-29 16:05:18 - src.workflows.glossary_workflow - INFO - [50.0%] term_extraction: Completed: term_extraction
2025-09-29 16:05:18 - src.workflows.glossary_workflow - INFO - [50.0%] term_grouping: Grouping terms...
2025-09-29 16:05:18 - src.services.gemini_client - INFO - Generating content
2025-09-29 16:05:37 - src.services.gemini_client - INFO - Content generated successfully
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - [66.7%] term_grouping: Completed: term_grouping
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - [67.0%] glossary_generation: Generating glossaries...
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - Generated 1 glossaries
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - [83.3%] glossary_generation: Completed: glossary_generation
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - [83.0%] csv_output: Writing to CSV...
2025-09-29 16:05:37 - src.services.csv_writer - INFO - Wrote 1 glossaries to ./output_glossary/glossaries_20250929_160537.csv
2025-09-29 16:05:37 - src.services.csv_writer - INFO - Exported Dataplex glossary format to ./output_glossary/glossary_dataplex_import_20250929_160537.csv
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - Wrote CSV files: ./output_glossary/glossaries_20250929_160537.csv, ./output_glossary/glossary_dataplex_import_20250929_160537.csv
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - [100.0%] csv_output: Completed: csv_output
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - [100.0%] completed: Workflow completed successfully
2025-09-29 16:05:37 - src.workflows.glossary_workflow - INFO - Workflow execution completed in 107.35 seconds
           用語集生成結果            
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ 項目             ┃ 値             ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ status           │ completed      │
│ success          │ True           │
│ total_files      │ 1              │
│ processed_files  │ 1              │
│ glossaries_count │ 1              │
│ total_terms      │ 17             │
│ execution_time   │ 107.35 seconds │
│ errors_count     │ 0              │
└──────────────────┴────────────────┘

		

出力結果は以下となります。

  • リストのキーワードの他に新たに自然言語処理から抽出されたキーワードも追加されました。
    • 自然言語処理の部分で、それなりに多くのワードが抽出されたようなので、この辺をどこまで適用するか、または過剰な機能として適用しないかは今後の調整としたいと思います。
  • 今回の階層は、なるべくシンプルな階層にしたかったため"glossaries ー Term"の2階層として設計するように機能を実装しました。
    • 中間の"category"については、今後実装に含めるか検討しようと思います。

スクリーンショット 2025-09-29 16.10.28

用語集の一括登録

こちらも出力されたcsvを引数として一括登録を実行してみます。

			
			% python -m src.cli.main --project-id  suto-takeshi-******** dataplex register \
 -f ./output_glossary/glossary_dataplex_import_20250929_160537.csv --skip-duplicates
Dataplex登録を開始しています...
2025-09-29 16:19:57 - src.services.dataplex_client - INFO - Using REST API mode (DATAPLEX_CLIENT_MODE=REST)
2025-09-29 16:19:57 - src.services.dataplex_rest_client - WARNING - GOOGLE_APPLICATION_CREDENTIALS points to non-existent file: /path/to/your/credentials.json
2025-09-29 16:19:57 - src.services.dataplex_rest_client - INFO - Clearing GOOGLE_APPLICATION_CREDENTIALS to use Application Default Credentials
2025-09-29 16:19:58 - src.services.dataplex_rest_client - INFO - DataplexRESTClient initialized for project: suto-takeshi-********
2025-09-29 16:19:58 - src.services.dataplex_client - INFO - RESTClientAdapter initialized
2025-09-29 16:19:58 - src.services.dataplex_client - INFO - REST API client initialized successfully
2025-09-29 16:19:58 - src.services.dataplex_client - INFO - DataplexClient initialized with RESTClient
2025-09-29 16:19:58 - src.workflows.dataplex_registration_workflow - INFO - DataplexRegistrationWorkflow initialized
2025-09-29 16:19:58 - src.workflows.dataplex_registration_workflow - INFO - Transaction started: 0137d026-4a8d-4482-884d-47d8d6d31df6
2025-09-29 16:19:58 - src.workflows.dataplex_registration_workflow - INFO - Found 1 metadata files
2025-09-29 16:19:58 - src.workflows.dataplex_registration_workflow - INFO - Loaded 16 items from ./output_glossary/glossary_dataplex_import_20250929_160537.csv
2025-09-29 16:19:58 - src.services.dataplex_rest_client - INFO - Glossary creation started: projects/suto-takeshi-********/locations/asia-northeast1/operations/operation-1759130398994-63feb768bb01a-907dff72-b8e9e416
2025-09-29 16:20:00 - src.services.dataplex_rest_client - INFO - Glossary created successfully: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001
2025-09-29 16:20:00 - src.services.dataplex_client - INFO - Created new glossary: glossary-001
2025-09-29 16:20:02 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/kms
2025-09-29 16:20:02 - src.services.dataplex_client - INFO - Created glossary term: kms
2025-09-29 16:20:02 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/aes-256
2025-09-29 16:20:02 - src.services.dataplex_client - INFO - Created glossary term: aes-256
2025-09-29 16:20:02 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/etl
2025-09-29 16:20:02 - src.services.dataplex_client - INFO - Created glossary term: etl
2025-09-29 16:20:02 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/proxy-server
2025-09-29 16:20:02 - src.services.dataplex_client - INFO - Created glossary term: proxy-server
2025-09-29 16:20:02 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/dns
2025-09-29 16:20:02 - src.services.dataplex_client - INFO - Created glossary term: dns
2025-09-29 16:20:02 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/server
2025-09-29 16:20:02 - src.services.dataplex_client - INFO - Created glossary term: server
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/data-pipeline
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: data-pipeline
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/name
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: name
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/ip
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: ip
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/service
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: service
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/bit
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: bit
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/data
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: data
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/process
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: process
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/client
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: client
2025-09-29 16:20:03 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/host
2025-09-29 16:20:03 - src.services.dataplex_client - INFO - Created glossary term: host
2025-09-29 16:20:04 - src.services.dataplex_rest_client - INFO - Glossary term created: projects/suto-takeshi-********/locations/asia-northeast1/glossaries/glossary-001/terms/address
2025-09-29 16:20:04 - src.services.dataplex_client - INFO - Created glossary term: address
2025-09-29 16:20:04 - src.workflows.dataplex_registration_workflow - INFO - Registered glossary: glossary-001
2025-09-29 16:20:04 - src.workflows.dataplex_registration_workflow - INFO - Transaction committed: 0137d026-4a8d-4482-884d-47d8d6d31df6
2025-09-29 16:20:04 - src.workflows.dataplex_registration_workflow - INFO - Registration completed in 5.68 seconds
                     Dataplex登録結果                      
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 項目             ┃ 値                                   ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ status           │ completed                            │
│ success          │ True                                 │
│ registered_count │ 1                                    │
│ skipped_count    │ 0                                    │
│ failed_count     │ 0                                    │
│ total_processed  │ 1                                    │
│ execution_time   │ 5.68 seconds                         │
│ transaction_id   │ 0137d026-4a8d-4482-884d-47d8d6d31df6 │
└──────────────────┴──────────────────────────────────────┘

		

結果は以下のとおり、登録することができました。

スクリーンショット 2025-09-29 16.21.26

今後の展望

まだまだ開発しながらの実装とテストを繰り返している最中なので、今回の結果で良いアウトプットが得られたとしても入力ファイルの構成やテキストの内容が変わるとまた違う質の結果となることが十分考えられます。
直近としては以下を実施していこうと思います。

  • 追加したアスペクトタイプ、用語集をカタログのエントリーに一括設定する機能の追加
  • Dockerコンテナ化
  • 入力ファイルのテキスト構成ごとの言語生成のチューニング(恒久対応)
  • パフォーマンスチューニング

この記事をシェアする

FacebookHatena blogX

関連記事

Dataplexのアスペクトタイプと用語集を自動設計して登録するツールを作ってみた | DevelopersIO