Création d'un module d'infrastructure de données

La création d'un module d'infrastructure de données personnalisé n'est requise que si vous devez définir des comportements de compilation personnalisés ou étendre la compatibilité à un nouveau système source (tel que Salesforce) qui n'est pas compatible par défaut.

Avant de commencer, assurez-vous que la table source que vous prévoyez de traiter existe dans l'ensemble de données de la couche brute.

Lorsque vous travaillez sur des modules d'infrastructure de données SAP, assurez-vous que la table DD03L répliquée contient les enregistrements de métadonnées nécessaires pour toutes les tables que vous prévoyez d'ingérer (y compris les tables personnalisées ou supplémentaires). Pour en savoir plus sur les exigences, consultez la section Exigences concernant les métadonnées SAP ERP.

Lorsque vous créez un module ou un espace de noms d'infrastructure de données personnalisé, nous vous recommandons d'utiliser un espace de noms personnalisé dédié pour améliorer la gestion du cycle de vie en séparant les extensions et les personnalisations des artefacts Cortex Framework.

Création d'un module d'infrastructure de données

Pour définir le module d'infrastructure de données, procédez comme suit :

  • Dans le fichier config/config.yaml, ajoutez la configuration de l'ensemble de données cible à data.targets. Cela préparera un ensemble de données BigQuery dédié dans lequel les tables d'infrastructure seront déployées :
[...]
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   
  • Pour définir le module d'infrastructure de données, ajoutez les éléments suivants dans la section modules.foundation du fichier 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. 

  • Autre solution : si vous utilisez une table CDC traitée externe comme infrastructure de données, ajustez la section modules.foundation du fichier config/config.yaml avec external: true et supprimez dataTargetId :
[...]
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. 

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

Exemple de module d'infrastructure de données

L'exemple suivant enregistre un nouveau module d'infrastructure de données personnalisé qui traite la table sflight dans l'espace de noms personnalisé sap_bookingdatamodel.

Enregistrer un nouveau module d'infrastructure de données

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"

Créer table_settings.yaml

Créez le fichier de paramètres de table : config/sap_bookingdatamodel/data_foundation/sap/table_settings.yaml avec le contenu suivant :

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

Étant donné que la table a la même mise en page pour les dialectes SAP ECC et S/4HANA, il s'agit d'un élément enfant de la section common:.

Créez un fichier d'annotation pour chaque table, utilisé pour enrichir les schémas avec des métadonnées.

Dans l'exemple de scénario, nous créons src/data_modules/sap_bookingdatamodel/data_foundation/sap/annotations/sflight.yaml, avec le contenu suivant :

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"

Pour vérifier que le module d'infrastructure de données personnalisé est compilé et déployé correctement, consultez la section Vérification de la page Extensibilité des produits de données.