使用 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 內管理的任何資料產品,完全不會產生複製負擔,並在自訂下游分析資料產品中參照這些產品。這項整合的主要元件包括:
- 聯合查詢:透過安全的 Delta Sharing 端點,公開 SAP BDC 中發布的資料產品。BigQuery 會使用 Google Cloud Lakehouse 執行階段目錄連線,將查詢聯合至這些端點。
- 目錄註冊:在 Cortex Framework 中,您可以使用
config/config.yaml內data.modules.catalogs下的delta_share類型模組,註冊 SAP BDC 目錄。 - Google Cloud Cortex Framework 資料產品繫結:下游自訂資料產品會將輸入依附元件繫結至特定 Delta Sharing 共用和表格 ID (格式為
{catalog_id}.{share_id}.{table_name}),藉此參照 BDC 目錄表格。
SAP BDC 的必要條件
在 Cortex Framework 中設定連線前,您必須先在 Google Cloud 和 SAP 中完成下列步驟:
- 設定 Google Cloud Lakehouse 執行階段目錄:在 Google Cloud 專案中設定 BigQuery Lakehouse 執行階段目錄連線,並透過 SAP Business Data Cloud 的 Google Cloud Delta Sharing 進行設定。
- 擷取共用 ID:找出並列出已連線 SAP BDC 租戶發布的 Delta Sharing
shareId值 (例如customer_v1_he2_100_p8123或salesorder_v1_he2_100_p8124)。
設定範例
下列設定範例會註冊 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
`
);