カスタム Namespace の設定
カスタム名前空間は、データ基盤と分析データ プロダクト モジュールをパッケージ化して分離するための論理環境として機能します。専用のカスタム Namespace 内で実行すると、構成オプションとデプロイ オプションを個別に管理できるため、環境の分離が実現します。この分離の主なメリットは、カスタム モジュールをオーバーライドしたり破損させたりするリスクを冒すことなく、Google Cloud Cortex Framework の cortex 名前空間から将来の更新や機能強化をシームレスに取得できることです。専用の名前空間内にカスタム モジュールを作成することを強くおすすめします。
カスタム Namespace のフォルダ構造
Cortex Framework の Namespace フォルダは、カスタム モジュール アーティファクトのパッケージ化と分離に使用されます。カスタム名前空間のフォルダ構造は、次の表で定義されています。
| ディレクトリ パス | 目的と説明 | 一般的なサブフォルダ構造 |
|---|---|---|
config/ |
Cortex デプロイ構成(必須) 新しい Namespace を作成するには、 config.yaml 内で設定する必要があります。 |
config/config.yaml |
src/data_modules/custom_namespace_path/data_foundation/ |
データ基盤モジュール(省略可) 生データから基盤データセットへの変換。 |
- |
src/data_modules/custom_namespace_path/data_product/ |
データ プロダクトの定義(省略可) ビジネス ロジックと分析モデルが含まれます。各プロダクトはサブディレクトリ( your_product_name など)に分割され、次の要素で構成されます。
|
data_product/
└── your_product_name/
├── README.md
├── manifest.yaml
├── annotations/
└── definitions/ |
src/data_modules/custom_namespace_path/includes/ |
JavaScript ヘルパー(省略可) ここに配置された JavaScript ファイルは自動的にパッケージ化され、コンパイル中に名前空間パス( includes/custom_namespace/ など)の下で Dataform モデルで使用できるようになります。 |
- |
src/data_modules/custom_namespace_path/common/ |
Namespace 共有ツール(省略可) Namespace スコープのカスタム ビルダー、デプロイツール、その他のツール。 |
- |
カスタム Namespace の構成
新しい名前空間 custom_namespace は、config.yaml ファイルの対応するセクションを拡張し、src/data_modules/ の下に新しいディレクトリを作成して、新しいモジュール コード アセットを追加することで定義できます。
Google Cloud Cortex Framework コンパイラがカスタム Namespace とモジュールを認識できるようにするには、グローバル構成ファイル(config/config.yaml など)に登録する必要があります。
ステップ A: 名前空間を登録する
data.namespaces ブロックの下に、名前空間のメタデータを追加します。
data:
namespaces:
- name: cortex
path: cortex/
- name: custom_namespace # <-- Name of custom namespace
path: custom_namespace_path/ # <-- Folder name that is used for custom namespace, points to subdirectory of 'src/data_modules/'
ステップ B: カスタム モジュールを構成する
カスタム モジュールを data.modules.foundation または data.modules.product に登録します。type フィールドには、ドット区切りの形式 custom_namespace.module_type を使用します。
data:
modules:
foundation:
- moduleId: custom_namespace_foundation_module_id
type: custom_namespace.sap # Format: <namespace>.<module_type>
dataSourceId: sap_raw_s4
dataTargetId: data_foundation_sap_custom_namespace
moduleSettings:
sapVersion: s4
mandt: "100"
tableSettings: "config/custom_namespace_path/data_foundation/sap/table_settings.yaml"
product:
- moduleId: custom_namespace_data_product_id
type: custom_namespace.data_product_id # Format: <namespace>.<module_type>
dependsOn:
sapModule: erp_ecc # References an existing foundation moduleId
dataTargetId: product_target
tableSettings: "config/custom_namespace_path/data_product/data_product_id/table_settings.yaml"
カスタム Namespace の共有コード
カスタム名前空間は、モジュール間のコード アーティファクトの共有をサポートしています。サポートされているアーティファクト タイプは次のとおりです。
- includes - Dataform アーティファクトで使用可能になる JavaScript ヘルパーが含まれています。
src/data_modules/custom_namespace_path/includes/フォルダに配置できます。 - builders - モジュールのソースコードを Dataform アーティファクトにコンパイルできるカスタム ジェネレータ クラス。これらは
src/data_modules/custom_namespace_path/common/に配置できます。
ビルダーの理解と参照
ビルダーは、モジュール ソースファイルを物理的な Dataform 出力にコンパイルする Python ジェネレータ クラスです。Google Cloud Cortex Framework は、柔軟な3 層のビルダー解決シーケンスを使用してモジュールをコンパイルします。
Tier 1: グローバル フォールバック ビルダー
このフレームワークには、src/common/builders/ にある非常に堅牢なビルダーが含まれています。これらのビルダーはグローバルに登録され、任意のカスタム Namespace で使用できます。
たとえば、カスタム プロダクトに標準の SAP データ プロダクト ビルダーを使用するには、manifest.yaml で sap_product を参照します。
# src/data_modules/custom_namespace_path/data_product/data_product_id/manifest.yaml
type: data_product_id
builder: sap_product # Automatically resolves to the global SapProductBuilder fallback
dependencies:
sapModule:
type: sap
supportedVersions:
- ecc
- s4
Tier 2: Namespace-scoped ビルダー
カスタム名前空間内のモジュールに特殊なコンパイラが必要な場合は、その名前空間のカスタム ビルダーを登録できます。
src/data_modules/custom_namespace_path/common/builders/my_builder.pyの下にビルダー ファイルを作成します。ビルダー クラスに
@builder_registry.register("my_builder")アノテーションを付けます。
from common.builders.base import ProductBuilder
from common.registry import builder_registry
@builder_registry.register("my_builder")
class MyCustomProductBuilder(ProductBuilder):
# Implement build logic here...
builder: my_builderを使用して、プロダクトのmanifest.yamlで参照します。
Tier 3: 個々のプロダクト レベルのビルダー
一意性の高いパイプラインの場合は、単一のデータ プロダクトに限定してビルダーを定義できます。
データ プロダクト フォルダ(
src/data_modules/custom_namespace_path/data_product/data_product_id/builder.pyなど)内にbuilder.pyという名前のファイルを作成するだけです。その中で
BaseBuilderまたはProductBuilderのサブクラスを定義します。
from common.builders.base import ProductBuilder
class UniqueSalesPerformanceBuilder(ProductBuilder):
# Implement unique build logic here...
- コンパイラは、登録やデコレータを必要とせずに、このクラスを自動的に動的にインポートして実行します。
カスタム Namespace の例
config/config.yaml ファイルの data.namespaces の下に次のブロックを追加します。
data:
namespaces:
- name: cortex
path: cortex/
- name: sap_bookingdatamodel # <-- Name of custom namespace: sap_bookingdatamodel
path: sap_bookingdatamodel/ # <-- Folder name that is used for custom namespace:sap_bookingdatamodel, points to subdirectory of 'src/data_modules/'
次のステップ(データ基盤モジュールの作成とデータ プロダクト モジュールの作成)では、データ モジュールを Namespace に追加する方法について説明します。
- 次のステップ: データ基盤モジュールの作成
- 概要に戻る