Mengintegrasikan dan menyinkronkan produk data SAP Business Data Cloud dengan Cortex Framework menggunakan katalog runtime Lakehouse.
Dokumen ini menjelaskan cara menghubungkan Cortex Framework ke SAP Business Data Cloud menggunakan integrasi katalog runtime Lakehouse.
Dengan menggabungkan Google Cloud SAP Delta Sharing dengan koneksi federasi katalog runtime BigQuery Lakehouse, Cortex Framework dapat mengkueri produk data apa pun yang dikelola di dalam SAP BDC langsung di BigQuery tanpa overhead salinan, dan mereferensikannya dalam produk data analitik hilir kustom. Komponen utama integrasi ini adalah:
- Federated Querying: Produk data yang dipublikasikan di SAP BDC diekspos menggunakan endpoint Delta Sharing yang aman. BigQuery menggabungkan kueri ke endpoint ini menggunakan koneksi katalog runtime Lakehouse Google Cloud .
- Pendaftaran Katalog: Di Cortex Framework, Anda mendaftarkan katalog SAP BDC menggunakan modul jenis
delta_sharedi bagiandata.modules.catalogsdalamconfig/config.yaml. - Pengikatan produk data Google Cloud Cortex Framework: Produk data kustom hilir mereferensikan tabel katalog BDC dengan mengikat dependensi inputnya ke ID tabel dan berbagi Delta Sharing tertentu dalam format
{catalog_id}.{share_id}.{table_name}.
Prasyarat untuk SAP BDC
Sebelum mengonfigurasi koneksi di Cortex Framework, Anda harus menyelesaikan langkah-langkah berikut di Google Cloud dan SAP:
- Konfigurasi Google Cloud katalog runtime Lakehouse: Siapkan koneksi katalog runtime BigQuery Lakehouse di Google Cloud Project Anda dengan memanfaatkan Google Cloud Delta Sharing untuk SAP Business Data Cloud.
- Mengambil ID Berbagi: Temukan dan cantumkan nilai
shareIdDelta Sharing (misalnya,customer_v1_he2_100_p8123atausalesorder_v1_he2_100_p8124) yang dipublikasikan oleh tenant SAP BDC yang terhubung.
Contoh konfigurasi
Contoh konfigurasi berikut mendaftarkan katalog BDC SAP dan menggunakan pembagiannya untuk menghitung produk data performa penjualan kustom:
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
Untuk referensi parameter, lihat bagian Konfigurasi deployment untuk jenis modul katalog data.
Saat produk data kustom mengandalkan tabel katalog runtime Lakehouse, konfigurasikan dependensi inputnya di config/config.yaml menggunakan sintaksis jalur katalog:
dependencyBindings:
{logical_input_name}: {catalog_id}.{share_id}.{table_name}
Dengan:
{catalog_id}cocok dengan propertiidkatalog di bagiandata.modules.catalogs.{share_id}cocok dengan salah satu stringshareIdkatalog yang dinyatakan.{table_name}cocok dengan nama tabel fisik yang ditampilkan dalam berbagi tersebut.
Pengikatan dependensi Dataform hilir
Selama kompilasi (cortex-build), Cortex Framework membaca metadata katalog dan secara otomatis menerjemahkan binding dependensi ke dalam nama tabel gabungan BigQuery yang sepenuhnya memenuhi syarat.
Dalam definisi produk data kustom Anda (misalnya, file .js atau .sqlx), rujuk sumber SAP BDC yang disesuaikan:
// 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
`
);