Intégrer et synchroniser les produits de données SAP Business Data Cloud avec Cortex Framework à l'aide du catalogue d'exécution Lakehouse

Ce document explique comment connecter Cortex Framework à SAP Business Data Cloud à l'aide de l'intégration du catalogue d'exécution Lakehouse.

En combinant Google Cloud SAP Delta Sharing avec la connexion de fédération du catalogue d'exécution BigQuery Lakehouse, Cortex Framework peut interroger tous les produits de données gérés dans SAP BDC directement dans BigQuery sans frais de copie, et les référencer dans des produits de données analytiques personnalisés en aval. Les principaux composants de cette intégration sont les suivants :

  1. Requêtes fédérées : les produits de données publiés dans SAP BDC sont exposés à l'aide de points de terminaison Delta Sharing sécurisés. BigQuery fédère les requêtes vers ces points de terminaison à l'aide de la connexion du catalogue d'exécution Google Cloud Lakehouse.
  2. Enregistrement du catalogue : dans Cortex Framework, vous enregistrez le catalogue SAP BDC à l'aide d'un module de type delta_share sous data.modules.catalogs dans config/config.yaml.
  3. Liaisons de produits de données Google Cloud Cortex Framework : les produits de données personnalisés en aval référencent les tables de catalogue BDC en liant leurs dépendances d'entrée aux ID de partage et de table Delta Sharing spécifiques au format {catalog_id}.{share_id}.{table_name}.

Prérequis pour SAP BDC

Avant de configurer la connexion dans Cortex Framework, vous devez suivre les étapes ci-dessous dans Google Cloud et SAP :

  • Configurer Google Cloud le catalogue d'exécution Lakehouse : configurez la connexion du catalogue d'exécution BigQuery Lakehouse dans votre Google Cloud projet en tirant parti de Google Cloud Delta Sharing pour SAP Business Data Cloud.
  • Récupérer les ID de partage : recherchez et listez les valeurs shareId Delta Sharing (par exemple, customer_v1_he2_100_p8123 ou salesorder_v1_he2_100_p8124) publiées par le locataire SAP BDC connecté.

Exemple de configuration

L'exemple de configuration suivant enregistre un catalogue SAP BDC et utilise ses partages pour calculer un produit de données personnalisé sur les performances commerciales :

buildEnvironment:
  buildProjectId: YOUR_BUILD_PROJECT_ID

data:
  bigQueryLocation: europe-west3
  namespaces:
    - name: cortex
      path: ../src/data_modules/cortex
    - name: cortex_samples
      path: ../src/data_modules/cortex_samples
  datasets:
    - id: sap_bdc_data_products
      projectId: YOUR_TARGET_PROJECT_ID
      datasetId: sap_bdc_data_products

  modules:
    # 1. Register the SAP BDC Lakehouse runtime catalog connection (using lakehouse_delta_share type)
    catalogs:
      - id: sap_bdc_catalog
        type: lakehouse_delta_share
        enabled: true
        bindsNamespaces: [sap_bdc]
        connectionSettings:
          catalogId: sap_bdc_catalog
          projectId: YOUR_CATALOG_PROJECT_ID
          location: europe-west3
          shares:
            - shareId: customer_v1_he2_100_p8123
            - shareId: salesorder_v1_he2_100_p8124

    # 2. Reference the catalog shares in downstream products
    products:
      - moduleId: sap_bdc_sales_performance
        modulePath: cortex_samples.sap_bdc.products.sales_performance
        dependencyBindings:
          # Bind logical dependencies directly to the catalog shares and tables
          sapBdcCustomer: sap_bdc_catalog.customer_v1_he2_100_p8123.customer
          sapBdcSalesOrder: sap_bdc_catalog.salesorder_v1_he2_100_p8124.salesorder
        dataTargetId: sap_bdc_data_products

Pour obtenir une référence des paramètres, consultez la section Configuration du déploiement pour le type de module de catalogue de données.

Lorsqu'un produit de données personnalisé repose sur des tables de catalogue d'exécution Lakehouse, configurez ses dépendances d'entrée dans config/config.yaml à l'aide de la syntaxe du chemin d'accès au catalogue :

dependencyBindings:     {logical_input_name}: {catalog_id}.{share_id}.{table_name}

Où :

  • {catalog_id} correspond à la propriété id du catalogue sous data.modules.catalogs.
  • {share_id} correspond à l'une des chaînes shareId du catalogue déclarées.
  • {table_name} correspond au nom de la table physique exposée dans ce partage.

Liaison de dépendance Dataform en aval

Lors de la compilation (cortex-build), Cortex Framework lit les métadonnées du catalogue et traduit automatiquement les liaisons de dépendance en noms de tables fédérées BigQuery complets.

Dans vos définitions de produits de données personnalisés (par exemple, les fichiers .js ou .sqlx), référencez les sources SAP BDC conformes :

// Example JS definition referencing SAP BDC inputs
const moduleConfig = config.product[moduleContext.moduleId];
const customerSource = moduleConfig.sources.sapBdcCustomer;
const salesOrderSource = moduleConfig.sources.sapBdcSalesOrder;

publish("custom_sales_performance", {
  type: "table",
}).query(
  (ctx) => `
    SELECT
      cust.customer_id,
      orders.sales_order_id,
      orders.amount
    FROM ${ctx.ref(customerSource.datasetId, customerSource.tableName)} AS cust
    JOIN ${ctx.ref(salesOrderSource.datasetId, salesOrderSource.tableName)} AS orders
      ON cust.customer_id = orders.customer_id
  `
);