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

La création d'un module Data Foundation est nécessaire pour traiter les tables brutes supplémentaires et les inclure dans l'ensemble de données Data Foundation.

Lorsque vous créez un module de base de données personnalisé, nous vous recommandons d'utiliser un espace de noms personnalisé dédié pour l'empaqueter. Assurez-vous également 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 de base de données SAP, assurez-vous que la table DD03L a été répliquée dans l'ensemble de données brutes, configuré comme source de votre module de base dans le fichier config/config.yaml. Assurez-vous également que la table DD03L répliquée contient les enregistrements de métadonnées de champ pour toutes les tables que vous prévoyez d'ingérer (par exemple, les tables personnalisées ou supplémentaires comme sflight). Les scripts de compilation et le résolveur de dépendances du framework Cortex lisent ces lignes de métadonnées pour identifier les listes de colonnes, les types de données et les relations de clé primaire entre les tables.

Définition du module de base de données

Pour définir le module de base 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. Un ensemble de données BigQuery dédié sera ainsi préparé pour le déploiement des tables 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   
  • Pour définir le module de base de données, ajoutez ce qui suit 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 base de données, ajustez la section modules.foundation dans le fichier config/config.yaml avec external: true et supprimez 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. 

  • Créez le table_settings.yaml référencé, qui définit les tables de l'ensemble de données du niveau brut qui seront transformées en niveau Data Foundation.
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 de fondation de données

Dans l'exemple suivant, nous allons utiliser l'espace de noms custom_namespace défini précédemment pour créer un module de base de données personnalisé qui traite la table sflight.

Enregistrez un nouveau module de base 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 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

Comme la mise en page du tableau est la même pour les dialectes SAP ECC et S/4HANA, il s'agit d'un élément enfant de la section common:.

Créez des fichiers d'annotations pour chaque table, qui serviront à 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 de base de données personnalisées se compile et se déploie correctement, consultez la section Validation sur la page d'extensibilité des produits de données.