Configura un espacio de nombres personalizado
Los espacios de nombres personalizados sirven como entornos lógicos para empaquetar y aislar tu base de datos y los módulos de productos de datos analíticos. Ejecutar dentro de un espacio de nombres personalizado dedicado te permite administrar las opciones de configuración y de implementación de forma independiente, lo que proporciona aislamiento para tu entorno. Un beneficio clave de esta separación es que puedes extraer sin problemas futuras actualizaciones y mejoras del espacio de nombres cortex en Google Cloud Cortex Framework sin el riesgo de anular o dañar tus módulos personalizados. Te recomendamos que crees tus módulos personalizados dentro de un espacio de nombres dedicado.
Estructura de carpetas del espacio de nombres personalizado
Las carpetas de espacio de nombres de Cortex Framework se usan para empaquetar y aislar artefactos de módulos personalizados. La estructura de carpetas de un espacio de nombres personalizado se define en la tabla:
| Ruta de acceso del directorio | Propósito y descripción | Estructura de subcarpetas típica |
|---|---|---|
config/ |
Configuración de implementación de Cortex (obligatorio) Para crear espacios de nombres nuevos, es necesario configurarlos en config.yaml.
|
config/config.yaml |
src/data_modules/custom_namespace_path/data_foundation/ |
Módulos de base de datos (opcional) Transformaciones de conjuntos de datos de datos sin procesar a base de datos. |
- |
src/data_modules/custom_namespace_path/data_product/ |
Definiciones de productos de datos (opcional) Contiene lógica empresarial y modelos analíticos. Cada producto se separa en un subdirectorio (por ejemplo, your_product_name) y consta de lo siguiente:
|
data_product/
└── your_product_name/
├── README.md
├── manifest.yaml
├── annotations/
└── definitions/ |
src/data_modules/custom_namespace_path/includes/ |
Auxiliares de JavaScript (opcional) Cualquier archivo de JavaScript que se coloque aquí se empaqueta automáticamente y se pone a disposición de tus modelos de Dataform durante la compilación en la ruta de acceso del espacio de nombres (por ejemplo, includes/custom_namespace/).
|
- |
src/data_modules/custom_namespace_path/common/ |
Herramientas compartidas del espacio de nombres (opcional) Compiladores, implementadores y otras herramientas personalizados con alcance de espacio de nombres |
- |
Configuración del espacio de nombres personalizado
Se puede definir un espacio de nombres nuevo: custom_namespace. Para ello, extiende la sección correspondiente del archivo config.yaml, crea un directorio nuevo en src/data_modules/ y agrega los nuevos recursos de código del módulo.
Para que el compilador de Google Cloud Cortex Framework reconozca tu espacio de nombres y módulos personalizados, debes registrarlos en tu archivo de configuración global (p.ej., config/config.yaml).
Paso A: Registra el espacio de nombres
En el bloque data.namespaces, agrega los metadatos de tu espacio de nombres:
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/'
Paso B: Configura módulos personalizados
Registra tus módulos personalizados en data.modules.foundation o data.modules.product. Usa el formato separado por puntos custom_namespace.module_type para el campo 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"
Código compartido del espacio de nombres personalizado
El espacio de nombres personalizado admite el uso compartido de artefactos de código entre sus módulos. Los tipos de artefactos admitidos son los siguientes:
- includes : Contiene cualquier auxiliar de JavaScript que estará disponible para tus artefactos de Dataform. Se pueden colocar en la carpeta
src/data_modules/custom_namespace_path/includes/. - builders : Cualquier clase de generador personalizado que pueda compilar el código fuente de tu módulo en artefactos de Dataform. Se pueden colocar en
src/data_modules/custom_namespace_path/common/.
Comprende y haz referencia a los compiladores
Los compiladores son clases de generadores de Python que compilan tus archivos de origen de módulos en resultados físicos de Dataform. Google Cloud Cortex Framework compila módulos con una secuencia de resolución de compiladores de tres niveles flexible:
Nivel 1: Compiladores de resguardo globales
El framework incluye compiladores muy sólidos ubicados en src/common/builders/. Estos compiladores se registran de forma global y pueden ser usados por cualquier espacio de nombres personalizado.
Por ejemplo, para usar los compiladores de productos de datos estándar de SAP para tu producto personalizado, haz referencia a sap_product en tu manifest.yaml:
# 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
Nivel 2: Compiladores con alcance de espacio de nombres
Si los módulos dentro de tu espacio de nombres personalizado requieren un compilador especializado, puedes registrar un compilador personalizado para ese espacio de nombres.
Crea un archivo de compilador en
src/data_modules/custom_namespace_path/common/builders/my_builder.py.Decora tu clase de compilador con
@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...
- Haz referencia a ella en el
manifest.yamlde tu producto conbuilder: my_builder.
Nivel 3: Compiladores individuales a nivel de producto
Para las canalizaciones altamente únicas, puedes definir un compilador con alcance exclusivo para un solo producto de datos.
Simplemente crea un archivo llamado
builder.pydirectamente dentro de la carpeta de tu producto de datos (p.ej.,src/data_modules/custom_namespace_path/data_product/data_product_id/builder.py).Define una subclase de
BaseBuilderoProductBuilderdentro de ella:
from common.builders.base import ProductBuilder
class UniqueSalesPerformanceBuilder(ProductBuilder):
# Implement unique build logic here...
- El compilador importará y ejecutará automáticamente esta clase de forma dinámica sin requerir ningún registro ni decorador.
Ejemplo de espacio de nombres personalizado
En el archivo config/config.yaml, agrega este bloque en 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/'
En los siguientes pasos: Creación de módulos de base de datos y Creación de módulos de productos de datos, aprenderás a agregar módulos de datos al espacio de nombres.
- Paso siguiente: Creación de módulos de base de datos
- Volver a la descripción general