Criação do módulo de base de dados

A criação de um módulo de base de dados é necessária para processar tabelas brutas complementares e incluí-las no conjunto de dados da base de dados.

Ao criar um módulo de base de dados personalizado, recomendamos usar um namespace personalizado dedicado para empacotá-lo. Além disso, verifique se a tabela de origem que você planeja processar existe no conjunto de dados da camada bruta.

Ao trabalhar em módulos de base de dados SAP, verifique se a tabela DD03L foi replicada no conjunto de dados brutos, configurado como a origem do módulo de base de dados no arquivo config/config.yaml. Verifique também se a tabela DD03L replicada contém os registros de metadados de campo para todas as tabelas que você planeja ingerir (por exemplo, as tabelas personalizadas ou complementares, como sflight). Os scripts de build e o resolvedor de dependências do Cortex Framework leem essas linhas de metadados para identificar listas de colunas, tipos de dados e relações de chave primária entre tabelas.

Definição do módulo de base de dados

Para definir o módulo de base de dados, siga estas etapas:

  • No arquivo config/config.yaml, adicione a configuração do conjunto de dados de destino a data.targets. Isso vai preparar um conjunto de dados dedicado do BigQuery em que as tabelas de base de dados serão implantadas:
[...]
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 o módulo de base de dados, adicione o seguinte à seção modules.foundation no arquivo 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: se você estiver usando uma tabela CDC processada externa como base de dados, ajuste a seção modules.foundation no arquivo config/config.yaml com external: true e remova 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. 

  • Crie o table_settings.yaml referenciado, definindo quais tabelas do conjunto de dados da camada bruta serão transformadas na camada de base de dados.
common:
  - source:
      tableName: custom_sap_table_name
    target:
      tags: [sap, s4, hourly]
      clusterDetails:
        columns: [carrid, connid]
      partitionDetails:
        column: fldate
        partitionType: time
        timeGrain: day

Exemplo de módulo de base de dados

No exemplo a seguir, vamos usar o namespace custom_namespace definido anteriormente para criar um novo módulo de base de dados personalizado que processa a tabela sflight.

Registrar um novo módulo de base de dados.

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"

Criar table_settings.yaml

Crie o arquivo: config/sap_bookingdatamodel/data_foundation/sap/table_settings.yaml com este conteúdo:

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

Como a tabela tem o mesmo layout para os dialetos SAP ECC e S/4HANA, ela é um elemento filho da seção common:.

Crie arquivos de anotações para cada tabela, usados para enriquecer os esquemas com metadados.

No cenário de exemplo, estamos criando src/data_modules/sap_bookingdatamodel/data_foundation/sap/annotations/sflight.yaml, com este conteúdo:

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 se o módulo de base de dados personalizado é compilado e implantado corretamente, consulte a seção Verificação na página de extensibilidade do produto de dados.