Configuración de implementación
En esta página, se explican las opciones de configuración de la implementación para Cortex Framework en las siguientes áreas:
- Configuraciones de la implementación (
config/config.yaml): Definen variables globales, entornos de compilación y asignación de módulos (objetivos de la base de datos y del producto de datos). - Configuraciones de tablas (
table_settings.yaml): Especificaciones de rendimiento y esquema específicas del módulo que describen cómo se compilan y ajustan las tablas base en BigQuery.
En esta página, también se proporcionan guías prácticas con instrucciones paso a paso para casos de uso y situaciones de implementación comunes.
Archivo de configuración: config/config.yaml
El archivo config/config.yaml, que suele inicializarse a partir de la plantilla config/config.yaml.example, sirve como configuración principal para la implementación de Cortex Framework. La configuración se divide en los siguientes bloques estructurales:
- Entorno de compilación (
buildEnvironment): Rige la capa de orquestación de compilación, especificando el proyecto Google Cloud central en el que se facturan y ejecutan los cálculos de metadatos intermedios, las validaciones de bases de datos y las búsquedas de esquemas. - Datos (
data): Rigen la arquitectura de datos lógicos. Este bloque configura las ubicaciones de los conjuntos de datos, los límites del espacio de nombres, los detalles de conexión para las fuentes de transferencia sin procesar y los conjuntos de datos de destino, y registra las instancias del módulo de datos (foundations,catalogsyproducts). - Implementación (
deployment): Configura las implementaciones del sistema de destino físico. Especifica los detalles del repositorio de Dataform (ID del proyecto, ubicación, nombre del repositorio y espacio de trabajo de desarrollo) en el que se implementan las canalizaciones de transformación compiladas de SQLX/JS.
En las siguientes secciones, se proporciona un desglose detallado de cada bloque.
Entorno de compilación
El proyecto de entorno de compilación es el proyecto al que se le facturan las acciones de compilación, como los trabajos de BigQuery que leen DD03L.
buildEnvironment:
buildProjectId: YOUR_BUILD_PROJECT_ID
En la siguiente tabla, se describen los parámetros del entorno de compilación.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
buildEnvironment.buildProjectId |
ID de compilación del proyecto | YOUR_BUILD_PROJECT_ID |
Google Cloud ID del proyecto en el que se ejecutan las operaciones de compilación. |
Descripción general de la sección de datos
La sección data: del archivo de configuración define tus fuentes de datos, tus objetivos y los módulos específicos para la base de datos y los productos de datos.
Su estructura general es la siguiente:
data:
# Geographic location for BigQuery datasets (for example: US, EU, us-central1)
# For full list see: https://docs.cloud.google.com/cortex/docs/supported-locations
bigQueryLocation: US
# List of namespaces for data foundation and product modules.
namespaces:
- name: cortex
path: ../src/data_modules/cortex
# List of datasets mapping.
datasets:
- ...
# Configuration for data foundation, data product, and external catalog modules.
modules:
# List of foundation modules.
foundations:
- ...
# List of external catalog modules.
catalogs:
- ...
# List of data product modules.
products:
- ...
Datos: Ubicación de BigQuery
Define la ubicación de los conjuntos de datos de origen y destino de BigQuery.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
data.bigQueryLocation |
Ubicación de BigQuery | US |
Ubicación del conjunto de datos de BigQuery (por ejemplo, US, us-central1 o europe-west1)
|
Datos: Espacio de nombres de Cortex
Define el espacio de nombres de Cortex Framework.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
data.namespaces.name |
Nombre del espacio de nombres | - | Es el nombre del espacio de nombres de Cortex Framework. Por ejemplo, cortex. |
data.namespaces.path |
Ruta de acceso del espacio de nombres | - | Ruta del espacio de nombres del Cortex Framework para los subdirectorios que se usan en la carpeta src y config. Por ejemplo, cortex. |
Datos: Conjuntos de datos de origen y destino de BigQuery
La lista de conjuntos de datos define los puntos de conexión de datos sin procesar entrantes y las ubicaciones de almacenamiento salientes para el framework. Cada conjunto de datos registra un identificador único asignado a un proyecto Google Cloud y un conjunto de datos de BigQuery específicos.
Se hace referencia a los conjuntos de datos desde los módulos con su ID único.
# Dataset mapping
datasets:
- id: sap_raw
projectId: YOUR_SOURCE_PROJECT_ID
datasetId: cortex_sap_raw
- id: sap_foundation
projectId: YOUR_TARGET_PROJECT_ID
datasetId: cortex7_sap_data_foundation
En la siguiente tabla, se describen los parámetros de asignación del conjunto de datos.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
data.datasets.id |
ID de conjunto de datos | - |
Define un identificador único para el conjunto de datos (p.ej., sap_raw o sap_foundation). |
data.datasets.projectId |
ID del proyecto | - |
Hace referencia al ID del proyecto Google Cloud que aloja el conjunto de datos. |
data.datasets.datasetId |
ID del conjunto de datos de BigQuery | - |
Hace referencia al nombre real del conjunto de datos de BigQuery. |
Datos: Módulos
Los módulos definen la estructura y los componentes de las canalizaciones de datos de Dataform.
Datos: Módulos: Conceptos básicos
En esta sección, se configuran los módulos de la capa de base de datos que procesan los datos de la capa sin procesar en una representación estandarizada de los registros más recientes de los datos de origen. En caso de que la fuente proporcione una vista de los registros más recientes directamente, o si el conector del sistema fuente realiza esas transformaciones, el módulo se puede configurar como una fuente externa de datos básicos.
modules:
# List of foundation modules.
foundations:
# Unique identifier for the module instance.
- moduleId: erp
# Path of the module format: {namespace}.{systemtype:sap}.{module_type:foundations}.{subsystemtype:sap}, for example, cortex.sap.foundations.sap.
modulePath: cortex.sap.foundations.sap
# Reference to the source dataset ID.
dataSourceId: sap_raw
# Reference to the target dataset ID.
dataTargetId: sap_foundation
# Module-specific configuration settings.
moduleSettings:
# SAP version (for example, ecc, s4).
sapVersion: ecc
# SAP client number.
mandt: "100"
# Whether the module is enabled.
enabled: true
# Whether the foundation is external (does not create target dataset).
external: false
# Custom table settings file, relative to 'config/' file directory
# Recommended path: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml' (e.g. 'cortex/sap/foundations/sap/table_settings.yaml')
# Default path: '../src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml'
tableSettings: "custom_table_settings.yaml"
En la siguiente tabla, se describen los parámetros de los módulos de la base de datos para la configuración de modules.foundations.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
moduleId |
Identificador del módulo | erp |
Es el identificador único de una instancia específica del módulo de transformación de la base de datos. |
modulePath |
Ruta de acceso del módulo | cortex.sap.foundations.sap |
Define la ruta con espacio de nombres al módulo, la lógica empresarial o la plantilla aplicada.
Formato: {namespace}.{systemtype:sap}.{module_type:foundations}.{subsystemtype:sap} (por ejemplo, cortex.sap.foundations.sap). |
dataSourceId |
Vínculo a la fuente | sap_raw |
Hace referencia al "id" de la lista data.datasets para extraer datos. |
dataTargetId |
Vínculo de destino | sap_foundation |
Hace referencia al "id" de la lista data.datasets a la que se envían los datos. |
moduleSettings.sapVersion |
Versión del sistema SAP | ecc |
Solo se aplica a las fuentes de datos de SAP. Determina la lógica específica de la fuente para los sistemas ecc (ECC) o s4 (S/4HANA). |
moduleSettings.mandt |
Cliente de SAP (Mandant) | 100 |
Solo se aplica a las fuentes de datos de SAP. Es el identificador de cliente de SAP de 3 dígitos que se usa para filtrar las filas de datos. |
enabled |
Habilitación del módulo | true |
Especifica si el módulo está habilitado. |
external |
Base externa | false |
Especifica si la base es externa (no crea un conjunto de datos de destino). |
tableSettings |
Configuración de tabla | src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml |
Ruta de acceso al archivo de configuración personalizado de Table settings, relativa a este archivo de configuración. Ruta recomendada: Relativa al directorio "config/": "{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml" Ruta predeterminada: "../src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml" |
Datos: Módulos: Catálogos
Los catálogos externos de Lakehouse permiten que Cortex Framework transfiera tablas externas desde catálogos y recursos compartidos de BigLake Delta Sharing sin manifiestos físicos.
modules:
# List of external catalog modules.
catalogs:
# Unique identifier for the catalog.
- id: sap_bdc_catalog
# Type of the catalog.
type: lakehouse_delta_share
# Logical namespace prefixes bound by this catalog.
bindsNamespaces: [sap_bdc]
# Connection settings for the catalog.
connectionSettings:
# Unique identifier for the catalog.
catalogId: sap_bdc_catalog
# Unique identifier for the project hosting the catalog.
projectId: sap_bdc_delta_share
# Geographic region location for the catalog.
location: europe-west3
# List of shares to import.
shares:
- shareId: customer_v1_he2_100_p8123
- shareId: salesorder_v1_he2_100_p8124
# Whether the catalog is enabled.
# enabled: true
En la siguiente tabla, se describen los parámetros de configuración del catálogo externo.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
id |
Identificador de catálogo | - | Es el identificador único de una instancia específica del módulo de catálogo externo. |
type |
Tipo de catálogo | lakehouse_delta_share |
Es el tipo de catálogo. Admite lakehouse_delta_share. |
bindsNamespaces |
Namespaces Bound | - | Es una lista de prefijos de espacios de nombres lógicos vinculados por este catálogo (p.ej., [sap_bdc]). |
connectionSettings.catalogId |
ID de catálogo físico | - | Es el ID del catálogo físico. Por lo general, es el mismo que el ID del módulo. |
connectionSettings.projectId |
ID del proyecto | - | ID del proyecto Google Cloud en el que se administra la conexión del catálogo. |
connectionSettings.location |
Ubicación | - | Es la ubicación de la región geográfica del catálogo. |
connectionSettings.shares |
Archivos compartidos | - | Lista de recursos compartidos de Delta Sharing que se importarán. Cada uso compartido debe contener un shareId. |
enabled |
Habilitación del catálogo | true |
Especifica si el catálogo está habilitado. |
Datos: Módulos: Productos
Los módulos de productos de datos definen las agregaciones, los cálculos y las uniones necesarios para transformar los datos sin procesar en estadísticas que satisfagan casos de uso comerciales específicos.
La configuración de los productos de datos permite establecer un ID único, definir dependencias y hacer referencia al módulo de la base de datos y al conjunto de datos de destino en el que se almacenarán los resultados.
La configuración detallada de los productos de datos determinados se define en los archivos a los que hace referencia la clave: tableSettings.
modules:
# List of data product modules.
products:
# Unique identifier for the data product instance.
- moduleId: sap_purchasing_organizational_structure
# Path of the data product (namespaced).
modulePath: cortex.sap.products.purchasing_organizational_structure
# Map of module dependencies.
dependencyBindings:
sapModule: erp
# Reference to the target dataset ID.
dataTargetId: product_target
# Whether the module is enabled.
enabled: true
# Whether this data product is synced to the Knowledge Catalog. Defaults to true.
syncToKc: true
# Custom table settings file, relative to 'config/' file directory
# Recommended path: '{namespace_dir}/{system_type}/products/{product_name}/table_settings.yaml'
# If omitted, defaults to '../src/data_modules/{namespace_dir}/{system_type}/products/{product_name}/table_settings.default.yaml'
# tableSettings: "custom_dataproduct_table_settings.yaml"
En la siguiente tabla, se describen los parámetros de los módulos de productos de datos para la configuración de modules.products.
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
moduleId |
Identificador del módulo | - | Es el identificador único de una instancia de módulo de transformación específica. |
modulePath |
Ruta de acceso del módulo | - | Define la ruta de acceso con espacio de nombres al módulo, la lógica empresarial o la plantilla aplicada. El formato es {namespace}.{systemtype:sap}.{module_type:products}.{dataproduct_name}, por ejemplo, cortex.sap.products.purchasing_organizational_structure, definido en la carpeta src/data_modules/{namespace_dir}/{system_type}/products/{product_name}. |
dataTargetId |
Vínculo de destino | product_target |
Hace referencia al "id" de la lista de destinos para enviar datos. |
dependencyBindings |
Dependencia upstream | sapModule: erp |
Especifica las asignaciones para satisfacer las dependencias del módulo. Por ejemplo, mapear sapModule a erp. |
enabled |
Habilitación del módulo | true |
Especifica si el módulo está habilitado. |
syncToKc |
Sincronización de Knowledge Catalog | true |
Indica si este producto de datos está sincronizado con Knowledge Catalog. |
tableSettings |
Configuración de tabla | src/data_modules/{namespace_dir}/{system_type}/products/{product_name}/table_settings.default.yaml |
Ruta de acceso al archivo de configuración personalizado de Table settings, relativa a este archivo de configuración. Ruta recomendada: Relativa al directorio "config/": "{namespace_dir}/{system_type}/products/{product_name}/table_settings.yaml" Ruta predeterminada: "../src/data_modules/{namespace_dir}/{system_type}/products/{product_name}/table_settings.default.yaml" |
Entorno de implementación
Cortex Framework usa Dataform para coordinar las transformaciones de SQL en BigQuery. El bloque deployment: define la configuración de Dataform, que es responsable de la ejecución de las canalizaciones de datos, incluido el proyecto del repositorio, la ubicación, el nombre del repositorio y el nombre del espacio de trabajo de Dataform.
deployment:
targets:
- type: dataform
enabled: true
targetSettings:
repositoryProjectId: YOUR_REPO_PROJECT_ID
repositoryRegion: us-central1
repositoryName: cortex-repository
workspaceName: dev
# serviceAccount: "example@example.com"
En la siguiente tabla, se describen los parámetros de ubicación de los destinos de implementación (deployment.targets:).
| Parámetro | Significado | Valor predeterminado | Descripción |
|---|---|---|---|
type |
Tipo de implementación | dataform |
Es el tipo de destinos de implementación. |
enabled |
Habilitado/ Inhabilitado | true |
Especifica si el destino de la implementación determinado está habilitado o inhabilitado. |
targetSettings.repositoryProjectId |
ID del proyecto del repositorio | YOUR_REPO_PROJECT_ID |
ID del proyecto Google Cloud en el que se administra el repositorio de Dataform. |
targetSettings.repositoryRegion |
Región del repositorio | us-central1 |
Es la región Google Cloud del repositorio de Dataform (por ejemplo, us-central1 o europe-west1). |
targetSettings.repositoryName |
Nombre del repositorio | cortex-repository |
Nombre específico del repositorio de Dataform. |
targetSettings.workspaceName |
Nombre del espacio de trabajo | dev |
Es el espacio de trabajo específico de Dataform que se usa para el ciclo de implementación. |
targetSettings.serviceAccount |
Correo electrónico de la cuenta de servicio | - |
Es la dirección de correo electrónico de la cuenta de servicio predeterminada para la ejecución del repositorio de Dataform. |
Archivo de configuración: table_settings.yaml
En esta guía, se explica cómo usar el archivo table_settings.yaml para configurar las tablas de la base de datos y los productos de datos en Google Cloud Cortex Framework.
El archivo table_settings.yaml específico del módulo de datos controla cómo se ajustan las tablas de origen sin procesar y cómo se materializan los modelos de datos analíticos en BigQuery. Con este archivo, puedes configurar etiquetas, estrategias de materialización y funciones avanzadas de rendimiento de BigQuery, como la partición o el agrupamiento en clústeres.
Resolución de dependencias dinámica
De forma predeterminada, Cortex Framework optimiza la huella de implementación y el tiempo de ejecución implementando y compilando solo las tablas de base que se requieren como dependencias de los productos de datos habilitados. Si una tabla configurada en table_settings.yaml no tiene ningún producto de datos activo que dependa de ella, se omite de la implementación.
Para anular esta optimización y forzar la implementación de una tabla de base, puedes establecer el atributo deployAlways en true (consulta la referencia del parámetro de estilo de la base de datos).
En Google Cloud Cortex Framework, a cada módulo (de base o de producto) se le puede asignar un archivo de configuración de tabla específico en el archivo de configuración de implementación: config/config.yaml con la propiedad tableSettings.
Rutas de configuración
- Configuración personalizada (recomendada): Para personalizar el comportamiento de la tabla, copia el archivo predeterminado en tu directorio de configuración, modifícalo y haz referencia a su ruta de acceso en
config/config.yaml. Las rutas de acceso recomendadas para usar (relativas al directorioconfig/) son las siguientes:- Módulos de base:
namespace_dir/system_type/foundations/system_sub_type/custom_table_settings.yaml(p.ej.,config/cortex/sap/foundations/sap/table_settings.yaml) - Módulos de productos:
namespace_dir/system_type/products/product_name/custom_table_settings.yaml(p.ej.,config/cortex/sap/products/accounting_documents/table_settings.yaml)
- Módulos de base:
- Respaldo predeterminado: Si se omite
tableSettings, el framework recurre automáticamente a lo siguiente:- Módulos de base:
../src/data_modules/namespace_dir/system_type/foundations/system_sub_type/table_settings.default.yaml - Módulos de productos:
../src/data_modules/namespace_dir/system_type/products/product_name/table_settings.default.yaml
- Módulos de base:
Estilos de configuración
Hay dos estilos de esquema distintos para table_settings.yaml según la categoría del módulo:
Estilo de la base de datos: Es un mapeo basado en listas que define las relaciones del esquema de origen a destino, el control de CDC (captura de datos modificados) y el diseño de BigQuery. Ten en cuenta que el diseño de la configuración de la tabla de la base de datos es específico del sistema fuente.
Estilo del producto de datos: Es una asignación basada en mapas (diccionario) que define cómo se materializan y optimizan las vistas o tablas analíticas (p.ej., como vistas, tablas o tablas incrementales).
Ambos estilos admiten tres secciones de nivel raíz para separar las configuraciones por versión del sistema fuente (se usan principalmente para SAP Data Foundation y productos dependientes de SAP):
ecc: Parámetros de configuración que se aplican solo cuando se implementa un sistema fuente de SAP ECC.s4: Parámetros de configuración que se aplican solo cuando se implementa un sistema de origen de SAP S/4HANA.common: Se aplica la configuración independientemente de la versión de SAP (se usa para la configuración universal o conforme).
Estilo de base de datos para SAP ERP
En un módulo de base de datos para los sistemas de origen de SAP ERP, el archivo table_settings.yaml se estructura como una lista de elementos de tabla en las claves ecc, s4 y common. Cada elemento asigna una tabla de origen sin procesar a una tabla de destino conforme y configura sus parámetros de BigQuery.
Ejemplo de sintaxis de YAML
common:
- source:
tableName: raw_custom_bkpf
sapTableName: bkpf
isCdc: true
target:
tableName: bkpf # Optional: defaults to source tableName if omitted
bigQueryLabels:
- key: data_class
value: transactional
- key: line_of_business
value: finance
dataformTags: [sap, common, finance, hourly]
clusterDetails:
columns: [bukrs, gjahr]
partitionDetails:
column: budat
partitionType: time
timeGrain: day
deployAlways: false
Referencia del parámetro
| Parámetro | Tipo | Obligatorio | Predeterminado / ejemplo | Descripción |
|---|---|---|---|---|
[].source |
object |
Sí | [] |
Describe la tabla en el sistema de origen entrante de la base de datos (p.ej., "sap_raw"). Consulta la configuración de la fuente. |
[].target |
object |
Sí | [] |
Describe la tabla de destino en los conjuntos de datos de la base de datos (p.ej., "sap_data_foundation"). Consulta la configuración de destino. |
ecc | s4 | common |
string |
No | [] |
Versión o dialecto del sistema de origen |
[].deployAlways |
boolean |
No | false |
Si es true, la tabla siempre se implementa y compila, incluso si las reglas de optimización podrían omitirla. Consulta también Resolución de dependencias dinámicas |
Configuración de las fuentes
Define las características de la tabla de entrada sin procesar.
| Parámetro | Tipo | Obligatorio | Predeterminado / ejemplo | Descripción |
|---|---|---|---|---|
tableName |
string |
Yes | - |
Nombre de la tabla de origen sin procesar en BigQuery (no distingue mayúsculas de minúsculas) tal como la importa el conector del sistema de origen . |
sapTableName |
string |
No | - |
Nombre de la tabla de SAP (sin distinción entre mayúsculas y minúsculas) tal como se define en las tablas de metadatos del sistema de origen (p.ej., "DD03L"). Si se define, este parámetro se usa como nombre para la tabla de la base de datos correspondiente. |
isCdc |
boolean |
No | true |
Indica si la tabla de origen contiene registros de captura de datos modificados (CDC).
• • |
Configuración del objetivo
Define el diseño de la tabla de salida conforme en el conjunto de datos de destino.
| Parámetro | Tipo | Obligatorio | Predeterminado / ejemplo | Descripción |
|---|---|---|---|---|
tableName |
string |
No | *(Igual que la fuente)* | Es el nombre de la tabla de destino que se creará. Si se omite, el framework usa de forma predeterminada la fuente tableName. |
dataformTags |
array[string] |
No | [sap, finance] |
Es una lista de etiquetas de metadatos adjuntas a la acción conforme en Dataform. Son cadenas arbitrarias y no es necesario registrarlas previamente ni definirlas en otras configuraciones. Se pueden usar de inmediato para filtrar las ejecuciones de la canalización (p. ej., con dataform run --tags ...). |
bigQueryLabels |
array[map] |
No | - |
Es una lista de pares clave-valor que representan las etiquetas de BigQuery que se aplicarán a la tabla de destino (por ejemplo, clave: data_class, valor: transactional). |
clusterDetails |
map |
No | — | Es opcional. Es la configuración del agrupamiento en clústeres de BigQuery. Consulta Detalles del agrupamiento en clústeres. |
partitionDetails |
map |
No | — | Es opcional. Es la configuración de la partición de BigQuery. Consulta los detalles de la partición. |
Estilo del producto de datos
En un módulo de producto de datos, el archivo table_settings.yaml (bloque ProductTableSettings) se estructura como un diccionario (mapa) en las claves raíz ecc, s4 y common. Las claves de este diccionario representan los nombres de la vista o la tabla analítica de destino (sin distinción entre mayúsculas y minúsculas), y cada valor es un bloque de configuración de Product TableItem (ProductTableItem) que define estrategias de materialización, habilitación de tablas y optimizaciones del rendimiento.
Ejemplo de sintaxis de YAML
common:
currency_conversion:
materializationType: table
bigQueryLabels:
- key: data_class
value: transactional
- key: line_of_business
value: finance
dataformTags: [sap, dataproduct, common]
enabled: true
retentionDays: 365 # Custom parameter passed to Dataform context
s4:
customers:
materializationType: incremental
bigQueryLabels:
- key: data_class
value: master
dataformTags: [sap, dataproduct, masterdata]
enabled: true
clusterDetails:
columns: [mandt, ktokd]
partitionDetails:
column: erdat
partitionType: time
timeGrain: day
Referencia del parámetro
| Parámetro | Tipo | Obligatorio | Predeterminado / ejemplo | Descripción |
|---|---|---|---|---|
ecc | s4 | common |
map |
No | {} |
Es un mapa de los recursos analíticos de destino (tablas o vistas) a sus descriptores de configuración de ProductTableItem. |
[table_name] |
map |
No | {} |
Es el bloque de esquema del descriptor Product Table Item que configura un activo analítico específico. |
[table_name].enabled |
boolean |
No | true |
Controla si la tabla o vista analítica ([table_name]) está activa y se incluye cuando se compila el espacio de trabajo de Dataform.
• • |
[table_name].materializationType |
string |
No | incremental |
Cómo se compila el activo analítico en BigQuery
Valores permitidos:
|
[table_name].dataformTags |
array[string] |
No | [sap, dataproduct] |
Son las etiquetas de metadatos adjuntas al recurso analítico en Dataform. Son cadenas arbitrarias y no es necesario registrarlas previamente. Se pueden usar de inmediato para ejecuciones de canalizaciones selectivas (por ejemplo, con dataform run --tags ...). |
[table_name].bigQueryLabels |
array[map] |
No | - |
Es una lista de pares clave-valor que representan las etiquetas de BigQuery que se aplicarán al activo analítico objetivo (por ejemplo, clave: data_class, valor: master). |
[table_name].clusterDetails |
map |
No | — | Es opcional. Es la configuración del agrupamiento en clústeres de BigQuery. Consulta Detalles del agrupamiento en clústeres. |
[table_name].partitionDetails |
map |
No | — | Es opcional. Es la configuración de la partición de BigQuery. Consulta los detalles de la partición. |
Configuraciones avanzadas de BigQuery
Ambos estilos comparten la misma estructura para optimizar el almacenamiento y el rendimiento de las consultas de BigQuery a través del agrupamiento en clústeres y la partición.
Detalles del agrupamiento en clústeres
La agrupación en clústeres coloca los datos en la misma ubicación según los valores de columnas específicas. BigQuery ordena los datos dentro de cada bloque de almacenamiento con estas columnas, lo que acelera drásticamente las consultas que filtran (WHERE) o unen (JOIN) en ellas.
clusterDetails:
columns: [bukrs, gjahr]
Referencia del parámetro
| Parámetro | Tipo | Obligatorio | Ejemplo | Descripción |
|---|---|---|---|---|
columns |
array[string] |
Yes | [bukrs, gjahr] |
Es una lista ordenada de hasta cuatro nombres de columnas por las que se agrupará la tabla en clústeres.
Restricción: Las columnas deben ser alfanuméricas y contener solo guiones bajos. El orden de las columnas en la lista determina la jerarquía de clasificación. |
Detalles de la partición
La partición divide una tabla grande en segmentos físicos más pequeños según los valores de una columna de fecha, marca de tiempo o número entero. Esto evita que BigQuery analice la tabla completa cuando una consulta solo solicita un rango específico de días, meses o IDs.
partitionDetails:
column: budat
partitionType: time
timeGrain: day
Referencia del parámetro
| Parámetro | Tipo | Obligatorio | Ejemplo | Descripción |
|---|---|---|---|---|
column |
string |
Yes | budat |
Nombre de la columna que se usa para particionar la tabla. Solo debe contener caracteres alfanuméricos y guiones bajos. El tipo de columna debe coincidir con el partitionType. |
partitionType |
string |
Yes | time |
Es la estrategia de partición.
Valores permitidos:
|
timeGrain |
string |
No | day |
Obligatorio si partitionType es time o DATE. Define la granularidad de las particiones de tiempo.
Valores permitidos: |
rangeStart |
integer |
No | 1 |
Obligatorio si partitionType es integer. Es el valor inicial de la primera partición (inclusivo). |
rangeEnd |
integer |
No | 1000 |
Obligatorio si partitionType es integer. Es el valor final de la última partición (exclusivo). |
rangeInterval |
integer |
No | 10 |
Obligatorio si partitionType es integer. Es el ancho de cada intervalo de partición. |
Ejemplos
En los siguientes ejemplos, se muestran plantillas de configuración para los módulos de la base de datos y del producto de datos, en las que se describe cómo personalizar las tablas de destino, optimizar el diseño de almacenamiento en BigQuery y configurar los tipos de materialización.
1. Ejemplo de configuración de la tabla de datos personalizada
En este ejemplo, se muestra cómo configurar una capa de base con tablas transaccionales particionadas y agrupadas (como bseg y ekbe) junto con tablas de datos estándares:
# ==============================================================================
# S/4HANA-Specific Tables
# ==============================================================================
s4:
# ACDOCA is a massive table in S/4HANA; clustering is vital
- source:
tableName: acdoca
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, s4, finance, transactional, hourly]
clusterDetails:
columns: [rclnt, rbukrs, gjahr]
# ==============================================================================
# ECC-Specific Tables
# ==============================================================================
ecc:
- source:
tableName: faglflexa
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, ecc, finance, transactional, hourly]
# ==============================================================================
# Common Tables (ECC & S/4HANA)
# ==============================================================================
common:
# Financial document header (partitioned by posting date)
- source:
tableName: bkpf
isCdc: true
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, common, finance, hourly]
clusterDetails:
columns: [bukrs, gjahr]
partitionDetails:
column: budat
partitionType: time
timeGrain: day
# Purchasing document items (partitioned by creation date)
- source:
tableName: ekpo
target:
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, common, logistics, purchasing, hourly]
clusterDetails:
columns: [mandt, ebeln]
partitionDetails:
column: aedat
partitionType: time
timeGrain: month
# Standard master data table (no partitioning/clustering needed)
- source:
tableName: lfa1
target:
bigQueryLabels:
- key: data_class
value: master
dataformTags: [sap, common, masterdata, vendor, daily]
2. Ejemplo de configuración personalizada de la tabla de productos de datos
En este ejemplo, se muestra cómo configurar los tipos de materialización para los productos de datos analíticos posteriores. Establecemos sales_documents transaccional como incremental para optimizar el rendimiento de la compilación y ahorrar costos, mientras que las tablas de datos no transaccionales, como customers, se compilan como tablas estándar:
# settings applied for both ECC and S/4HANA pipelines
common:
# Transactional data product - incremental build
sales_documents:
materializationType: incremental
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, dataproduct, sales, transactional]
clusterDetails:
columns: [vkorg, vbeln]
partitionDetails:
column: audat
partitionType: time
timeGrain: day
# Master data product - full table rebuild
customers:
materializationType: table
bigQueryLabels:
- key: data_class
value: master
dataformTags: [sap, dataproduct, masterdata]
clusterDetails:
columns: [mandt, ktokd]
# Aggregated reporting view - virtual view
sales_performance_summary:
materializationType: view
bigQueryLabels:
- key: data_class
value: transactional
dataformTags: [sap, dataproduct, sales, reporting]
Guías prácticas
En esta sección, se proporcionan guías paso a paso para tareas de configuración comunes y situaciones de implementación personalizadas.
Personaliza el alcance de la tabla en un módulo de la base de datos
Para agregar o quitar tablas dentro de un módulo de base de datos existente sin crear módulos nuevos ni ejecutar instancias de canalización separadas, sigue estos pasos:
- Copia la configuración predeterminada de
table_settings.default.yamlen el directorio de configuración de tu espacio de trabajo (por ejemplo,config/cortex/sap/foundations/sap/custom_table_settings.yaml). - En tu archivo nuevo, agrega tus tablas personalizadas o quita las tablas estándar que no se usen en las claves
ecc,s4ocommonsegún sea necesario:
common:
- source:
tableName: custom_table_name
target:
dataformTags: [custom_tag]
- Actualiza
config/config.yamlpara que haga referencia a la ruta de acceso de la configuración de tu tabla personalizada en la propiedadtableSettingsdel módulo:
data:
modules:
foundations:
- moduleId: erp
modulePath: cortex.sap.foundations.sap
# Custom table settings file, relative to configuration file directory
# Recommended path: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml'
tableSettings: 'cortex/sap/foundations/sap/custom_table_settings.yaml'
- Para enriquecer el esquema de la tabla adicional con anotaciones (descripciones de tablas y columnas), crea un archivo de anotaciones en el espacio de nombres del módulo de la base de datos que estás usando. En este ejemplo, según
modulePath: cortex.sap.foundations.sap, la ruta para almacenar tu archivo de anotacióncustom_table_name.yamlessrc/data_modules/cortex/sap/foundations/sap/annotations. El formato de los archivos de anotación se describe en la guía de extensibilidad para la base de datos.
Configura varias instancias de un módulo de base de datos
Implementar dos o más instancias de canalización separadas del mismo tipo de módulo (por ejemplo, para admitir varias instancias de SAP, segmentar tablas, aislar entornos o segmentar diferentes conjuntos de datos de destino)
Antes de comenzar:
- Asegúrate de que las tablas de origen existan en tu conjunto de datos sin procesar de origen.
- Cuando trabajes con módulos de la base de datos de SAP, verifica que la tabla de metadatos
DD03Lcontenga columnas y la información del descriptor para las tablas personalizadas que deseas transferir. Consulta los requisitos de SAP ERP para obtener más detalles.
Instrucciones:
- En el archivo
config/config.yaml, agrega configuraciones de destino endata.targetspara definir conjuntos de datos de destino para cada instancia de canalización:
data:
targets:
- id: data_foundation_core
projectId: target_project_id
datasetId: data_foundation_sap_core
- id: data_foundation_custom
projectId: target_project_id
datasetId: data_foundation_sap_custom
- Define varias instancias del módulo en la lista
data.modules.foundations. Asigna a cada instancia unmoduleIdúnico, sus propios IDs de conjunto de datos objetivo y, de manera opcional, la configuración detableSettings:
data:
modules:
foundations:
# Core SAP ERP foundation module instance
- moduleId: erp_core
modulePath: cortex.sap.foundations.sap
dataSourceId: sap_raw
dataTargetId: data_foundation_core
# If omitted, defaults to "../src/data_modules/{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.default.yaml"
# tableSettings: "../src/data_modules/cortex/sap/foundations/sap/table_settings.default.yaml"
# Custom tables pipeline instance
- moduleId: erp_custom
modulePath: cortex.sap.foundations.sap
dataSourceId: sap_raw
dataTargetId: data_foundation_custom
# Custom table settings file, relative to configuration file directory
# Recommended path: '{namespace_dir}/{system_type}/foundations/{system_sub_type}/table_settings.yaml'
tableSettings: "cortex/sap/foundations/sap/custom_datafoundation_table_settings.yaml"
- Crea el archivo
config/cortex/data_foundation/sap/custom_datafoundation_table_settings.yamlque especifica el alcance personalizado. P. ej.:
common:
- source:
tableName: custom_sap_table_name
target:
dataformTags: [sap, s4, hourly]
clusterDetails:
columns: [carrid, connid]
partitionDetails:
column: fldate
partitionType: time
timeGrain: day
Para enriquecer el esquema de la tabla adicional con anotaciones (descripciones de tablas y columnas), crea un archivo de anotaciones en el espacio de nombres del módulo de la base de datos que estás usando. En este ejemplo, según
modulePath: cortex.sap.foundations.sap, la ruta para almacenar tu archivo de anotacióncustom_table_name.yamlessrc/data_modules/cortex/sap/foundations/sap/annotations. El formato de los archivos de anotación se describe en la guía de extensibilidad para la base de datos.Aplica los cambios ejecutando la secuencia de comandos de implementación (
uv run cortex-build-and-deploy) y, luego, ejecuta las acciones de Dataform como se describe en Pasos posteriores a la implementación.