Creación del módulo de base de datos

Se requiere la creación de un módulo de base de datos para procesar tablas sin procesar complementarias y, luego, incluirlas en el conjunto de datos de la base de datos.

Cuando crees un módulo de base de datos personalizado, te recomendamos que uses un espacio de nombres personalizado exclusivo para empaquetarlo. Además, asegúrate de que la tabla de origen que planeas procesar exista en el conjunto de datos de la capa sin procesar.

Cuando trabajes en los módulos de la base de datos de SAP, asegúrate de que la tabla DD03L se haya replicado en el conjunto de datos sin procesar, configurado como la fuente de tu módulo de base en el archivo config/config.yaml. También asegúrate de que la tabla DD03L replicada contenga los registros de metadatos de campo para las tablas que planeas transferir (por ejemplo, las tablas personalizadas o complementarias, como sflight). Los scripts de compilación y el solucionador de dependencias de Cortex Framework leen estas filas de metadatos para identificar las listas de columnas, los tipos de datos y las relaciones de clave primaria entre las tablas.

Definición del módulo de la base de datos

Para definir el módulo de la base de datos, sigue estos pasos:

  • En el archivo config/config.yaml, agrega la configuración del conjunto de datos de destino a data.targets. Esto preparará un conjunto de datos de BigQuery dedicado en el que se implementarán las tablas de base:
[...]
data:
  [...]
  targets:
    - id: data_foundation_sap_custom_namespace
      # Google Cloud Project ID for the target dataset.
      projectId:  target_project_id 
      # BigQuery dataset ID for the target.
      datasetId: data_foundation_sap_custom_namespace   
  • Para definir el módulo de la base de datos, agrega lo siguiente a la sección modules.foundation dentro del archivo config/config.yaml:
[...]
data:
  [...]
  modules:
    foundation:
      [...]
      - moduleId:  foundation_module_id 
        type: cortex.sap
        dataSourceId: sap_raw_s4
        dataTargetId: data_foundation_sap_custom_namespace
        moduleSettings:
          sapVersion: s4
          mandt: "100"
        tableSettings: "table_settings.yaml"
        # Optional. Path to custom table settings configuration relative to this config file, e.g., `config/custom_namespace_path/data_foundation/sap/table_settings.yaml`
        # If omitted, defaults to src/data_modules/cortex/data_foundation/sap/table_settings.default.yaml. 

  • Alternativa: Si usas una tabla de CDC procesada externa como base de datos, ajusta la sección modules.foundation dentro del archivo config/config.yaml con external: true y quita targetDataSetID.
[...]
data:
  [...]
  modules:
    foundation:
      [...]
      - moduleId:  foundation_module_id 
        type: cortex.sap
        dataSourceId: sap_raw_s4
        external: true
        moduleSettings:
          sapVersion: s4
          mandt: "100"
        tableSettings: "table_settings.yaml"
        # Optional. Path to custom table settings configuration relative to this config file, e.g., `config/custom_namespace_path/data_foundation/sap/table_settings.yaml`
        # If omitted, defaults to src/data_modules/cortex/data_foundation/sap/table_settings.default.yaml. 

  • Crea el table_settings.yaml al que se hace referencia, que define qué tablas del conjunto de datos de la capa sin procesar se transformarán en la capa de base de datos.
common:
  - source:
      tableName: custom_sap_table_name
    target:
      tags: [sap, s4, hourly]
      clusterDetails:
        columns: [carrid, connid]
      partitionDetails:
        column: fldate
        partitionType: time
        timeGrain: day

Ejemplo de módulo de base de datos

En el siguiente ejemplo, usaremos el espacio de nombres custom_namespace definido anteriormente para crear un nuevo módulo de base de datos personalizado que procese la tabla sflight.

Registra un nuevo módulo de base de datos.

data:
  targets:
    - id: data_foundation_sap_bookingdatamodel
      projectId:  target_project_id
      datasetId: data_foundation_sap_bookingdatamodel   
  modules:
    foundation:
      - moduleId:  sap_bookingdatamodel
        type: sap_bookingdatamodel.sap
        dataSourceId: sap_raw_s4
        dataTargetId: data_foundation_sap_sap_bookingdatamodel
        moduleSettings:
          sapVersion: s4
          mandt: "100"
        tableSettings: "table_settings.yaml"

Crea table_settings.yaml

Crea el archivo config/sap_bookingdatamodel/data_foundation/sap/table_settings.yaml con este contenido:

common:
  - source:
      tableName: sflight
    target:
      tags: [sap, s4, hourly]
      clusterDetails:
        columns: [carrid, connid]
      partitionDetails:
        column: fldate
        partitionType: time
        timeGrain: day

Dado que la tabla tiene el mismo diseño para los dialectos de SAP ECC y S/4HANA, es un elemento secundario de la sección common:.

Crea archivos de anotaciones para cada tabla, que se usan para enriquecer los esquemas con metadatos.

En la situación de ejemplo, creamos src/data_modules/sap_bookingdatamodel/data_foundation/sap/annotations/sflight.yaml con el siguiente contenido:

description: "transparent table FLIGHT, part of the Basis Components Module, BC-DWB-TND (Training and Demo)."
fields:
- name: "mandt"
  description: "Client"
- name: "carrid"
  description: "Airline Code"
- name: "connid"
  description: "Flight Connection Number"
- name: "fldate"
  description: "Flight date"
- name: "price"
  description: "Airfare"
- name: "currency"
  description: "Local currency of airline"
- name: "planetype"
  description: "Aircraft Type"
- name: "seatsmax"
  description: "Maximum capacity in economy class"
- name: "seatsocc"
  description: "Occupied seats in economy class"
- name: "paymentsum"
  description: "Total of current bookings"
- name: "seatsmax_b"
  description: "Maximum capacity in business class"
- name: "seatsocc_b"
  description: "Occupied seats in business class"
- name: "seatsmax_f"
  description: "Maximum capacity in first class"
- name: "seatsocc_f"
  description: "Occupied seats in first class"

Para verificar que el módulo de la base de datos personalizada se compile y se implemente correctamente, consulta la sección Verificación en la página de extensibilidad del producto de datos.