Creazione del modulo della base di dati

La creazione di un modulo data foundation personalizzato è necessaria solo se devi definire comportamenti di build personalizzati o estendere il supporto a un nuovo sistema di origine (ad esempio Salesforce) non supportato immediatamente.

Prima di iniziare, assicurati che la tabella di origine che prevedi di elaborare esista nel set di dati del livello non elaborato.

Quando lavori sui moduli della base dati SAP, assicurati che la tabella DD03L replicata contenga i record di metadati necessari per tutte le tabelle che prevedi di importare (incluse tabelle personalizzate o supplementari). Per i requisiti dettagliati, vedi Requisiti dei metadati SAP ERP.

Quando crei un modulo o uno spazio dei nomi della base di dati personalizzata, ti consigliamo di utilizzare uno spazio dei nomi personalizzato dedicato per migliorare la gestione del ciclo di vita separando le estensioni e le personalizzazioni dagli artefatti di Cortex Framework.

Creazione di un nuovo modulo di base di dati

Per la definizione del modulo Data Foundation:

  • 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 implementate le tabelle di 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
  • Per definire il modulo della base dati, aggiungi quanto segue alla sezione modules.foundation all'interno del file config/config.yaml:
data:
  modules:
    foundation:
        # Recommended naming for foundation_module_id:
        # custom_namespace_data_foundation_module_type
      - moduleId: foundation_module_id
        type: cortex.sap
        dataSourceId: sap_raw_s4
        dataTargetId: data_foundation_sap_custom_namespace
        moduleSettings:
          sapVersion: s4
          mandt: "100"
        # Custom table settings file, relative to 'config/' directory
        # If omitted, defaults to "../src/data_modules/custom_namespace/data_foundation/data_foundation_module_type/table_settings.default.yaml"
        # tableSettings: "custom_namespace/data_foundation/data_foundation_module_type/table_settings.yaml"
  • Alternativa: se utilizzi una tabella CDC elaborata esterna come base dei dati, modifica la sezione modules.foundation all'interno del file config/config.yaml con external: true e rimuovi dataTargetId:
data:
  modules:
    foundation:
      - moduleId:  foundation_module_id 
        type: cortex.sap
        dataSourceId: sap_raw_s4
        external: true
        moduleSettings:
          sapVersion: s4
          mandt: "100"
        # Custom table settings file, relative to 'config/' directory
        # If omitted, defaults to "../src/data_modules/custom_namespace/data_foundation/data_foundation_module_type/table_settings.default.yaml"
        # tableSettings: "custom_namespace/data_foundation/data_foundation_module_type/table_settings.yaml"
  • Crea il file tableSettings a cui viene fatto riferimento nella configurazione, definendo quali tabelle del set di dati del livello non elaborato verranno trasformate nel livello di base dei dati. Ti consigliamo di utilizzare il percorso predefinito: src/data_modules/custom_namespace/data_foundation/data_foundation_module_type/table_settings.default.yaml
common:
  - source:
      tableName: custom_sap_table_name
    target:
      tags: [sap, s4, hourly]
      clusterDetails:
        columns: [ pk_column]
      partitionDetails:
        column: fldate
        partitionType: time
        timeGrain: day

Esempio di modulo di base dei dati

L'esempio seguente registra un nuovo modulo di base dati personalizzato che elabora la tabella sflight nello spazio dei nomi personalizzato sap_bookingdatamodel.

Registra il nuovo modulo di base dei 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_bookingdatamodel
        moduleSettings:
          sapVersion: s4
          mandt: "100"

Crea table_settings.default.yaml

Crea il file delle impostazioni della tabella: src/data_modules/sap_bookingdatamodel/data_foundation/sap/table_settings.default.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 secondario della sezione common:.

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

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

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 di base dei dati personalizzato venga compilato e implementato correttamente, consulta la sezione Verifica nella pagina di estensibilità del prodotto di dati.