Creazione del modulo della base di dati

La creazione di un modulo della base di dati è necessaria per elaborare le tabelle non elaborate supplementari e includerle nel set di dati della base di dati.

Quando crei un modulo della base di dati personalizzato, ti consigliamo di utilizzare uno spazio dei nomi personalizzato dedicato per il packaging. Inoltre, assicurati che la tabella di origine che intendi elaborare esista nel set di dati del livello non elaborato.

Quando lavori sui moduli della base di dati SAP, assicurati che la tabella DD03L sia stata replicata nel set di dati non elaborati, configurato come origine per il modulo della base di dati nel file config/config.yaml. Assicurati inoltre che la tabella DD03L replicata contenga i record dei metadati dei campi per tutte le tabelle che intendi importare (ad esempio, le tabelle personalizzate o supplementari come sflight). Gli script di build e il resolver delle dipendenze di Cortex Framework leggono queste righe di metadati per identificare gli elenchi di colonne, i tipi di dati e le relazioni di chiave primaria tra le tabelle.

Definizione del modulo della base di dati

Per la definizione del modulo della base di dati, segui questi passaggi:

  • Nel file config/config.yaml, aggiungi la configurazione del set di dati di destinazione a data.targets. In questo modo, verrà preparato un set di dati BigQuery dedicato in cui verranno eseguito il deployment delle tabelle della base di dati:
[...]
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   
  • Per definire il modulo della base di dati, aggiungi quanto segue alla sezione modules.foundation all'interno del file 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. 

  • In alternativa, se utilizzi una tabella CDC elaborata esterna come base di dati, modifica la sezione modules.foundation all'interno del file config/config.yaml con external: true e rimuovi 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 il file table_settings.yaml a cui viene fatto riferimento, definendo le tabelle del set di dati del livello non elaborato che verranno trasformate nel livello della base di dati.
common:
  - source:
      tableName: custom_sap_table_name
    target:
      tags: [sap, s4, hourly]
      clusterDetails:
        columns: [carrid, connid]
      partitionDetails:
        column: fldate
        partitionType: time
        timeGrain: day

Esempio di modulo della base di dati

Nell'esempio seguente, utilizzeremo lo spazio dei nomi custom_namespace definito in precedenza per creare un nuovo modulo della base di dati personalizzato che elabora la tabella sflight.

Registra il nuovo modulo della base di dati.

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 il file: config/sap_bookingdatamodel/data_foundation/sap/table_settings.yaml con questo contenuto:

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

Poiché la tabella ha lo stesso layout per i dialetti SAP ECC e S/4HANA, è un elemento figlio della sezione common:.

Crea file di annotazioni per ogni tabella, utilizzati per arricchire gli schemi con i metadati.

Nello scenario di esempio, creiamo src/data_modules/sap_bookingdatamodel/data_foundation/sap/annotations/sflight.yaml, con questo contenuto:

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"

Per verificare che il modulo della base di dati personalizzato venga compilato ed eseguito il deployment correttamente, consulta la sezione Verifica nella pagina Estensibilità del prodotto dati.