使用 Lakehouse 執行階段目錄,整合 SAP Business Data Cloud 資料產品與 Cortex Framework 並保持同步。

本文說明如何使用 Lakehouse 執行階段目錄整合功能,將 Cortex Framework 連線至 SAP Business Data Cloud

結合 Google Cloud SAP Delta Sharing 與 BigQuery Lakehouse 執行階段目錄同盟連線後,Cortex Framework 就能直接在 BigQuery 中查詢 SAP BDC 內管理的任何資料產品,完全不會產生複製負擔,並在自訂下游分析資料產品中參照這些產品。這項整合的主要元件包括:

  1. 聯合查詢:透過安全的 Delta Sharing 端點,公開 SAP BDC 中發布的資料產品。BigQuery 會使用 Google Cloud Lakehouse 執行階段目錄連線,將查詢聯合至這些端點。
  2. 目錄註冊:在 Cortex Framework 中,您可以使用 config/config.yamldata.modules.catalogs 下的 delta_share 類型模組,註冊 SAP BDC 目錄。
  3. Google Cloud Cortex Framework 資料產品繫結:下游自訂資料產品會將輸入依附元件繫結至特定 Delta Sharing 共用和表格 ID (格式為 {catalog_id}.{share_id}.{table_name}),藉此參照 BDC 目錄表格。

SAP BDC 的必要條件

在 Cortex Framework 中設定連線前,您必須先在 Google Cloud 和 SAP 中完成下列步驟:

設定範例

下列設定範例會註冊 SAP BDC 目錄,並使用其共用項目計算自訂銷售成效資料產品:

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

如需參數參考資料,請參閱資料目錄模組類型的「部署設定」一節。

如果自訂資料產品依賴 Lakehouse 執行階段目錄資料表,請使用目錄路徑語法,在 config/config.yaml 中設定輸入依附元件:

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

其中:

  • {catalog_id}data.modules.catalogs 底下的目錄 id 屬性相符。
  • {share_id} 與其中一個已宣告的目錄 shareId 字串相符。
  • {table_name} 與該共用項目中公開的實體資料表名稱相符。

下游 Dataform 依附元件繫結

在編譯期間 (cortex-build),Cortex Framework 會讀取目錄中繼資料,並自動將依附元件繫結轉換為完整合格的 BigQuery 聯邦資料表名稱。

在自訂資料產品定義 (例如 .js.sqlx 檔案) 中,參照已符合規範的 SAP BDC 來源:

// 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
  `
);