本文說明如何設定,讓 SAP Business Data Cloud (BDC) 存取 BigQuery 資料,不必複製資料。 Google Cloud 方法是在 Lakehouse for Apache Iceberg 執行階段目錄或 Knowledge Catalog 資料產品中設定 Apache Iceberg REST 目錄端點,然後與 SAP 分享。
如要瞭解這項整合功能及其用途,請參閱「關於 SAP BDC 整合」。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake and Dataplex APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake and Dataplex APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.- Cloud Storage bucket:建立 Cloud Storage bucket,儲存 Iceberg 中繼資料和資料檔案。如需操作說明,請參閱「建立 bucket」。所有資源 (包括後端 bucket) 都必須位於同一個區域,以免設定管道發生故障。
- Apache Iceberg REST 目錄:在 Lakehouse 執行階段目錄中設定 Apache Iceberg REST 目錄端點,並啟用憑證販售功能,其中包含您要共用的命名空間和資料表。這個目錄會使用 Cloud Storage bucket 做為倉庫。如需操作說明,請參閱「設定 Iceberg REST 目錄」。
- Delta Sharing 連線目錄:準備已註冊的 Delta Sharing 連線目錄,供 SAP BDC 連線使用。這與您在初始設定期間建立的目錄相同,可將資料從 SAP BDC 分享至 BigQuery,因此不需要建立新目錄。如需操作說明,請參閱「為 SAP BDC 設定跨雲端 Lakehouse」。
- Workload Identity Federation (WIF):準備設定 WIF,以信任 SAP BDC 驗證簽發者。您將在下一節中設定這項功能。
必要的角色
如要取得設定 Workload Identity Federation 和發布資料所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
管理 Workload Identity 聯盟:
身分與存取權管理 (IAM) Workload Identity 集區管理員 (
roles/iam.workloadIdentityPoolAdmin) -
發布資料產品:
BigLake 管理員 (
roles/biglake.admin) -
查看目錄中繼資料 (授予 WIF 主體):
BigLake 檢視者 (
roles/biglake.viewer) -
使用服務配額 (授予 WIF 主體):
服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
一般工作流程
如要將資料發布至 SAP BDC,請按照下列步驟操作:
- 設定 Workload Identity 聯盟:建立 Workload Identity 聯盟集區和提供者,與 SAP BDC OIDC 簽發者建立信任關係。
- 將角色授予聯合主體:授予聯合身分權限,以便查看目錄中繼資料及使用服務配額。
- 發布資料:使用
gcloudCLI,將 Apache Iceberg REST 目錄或 Knowledge Catalog 資料產品發布至 SAP BDC。
設定 Workload Identity 聯盟
如要讓 SAP BDC 存取 Lakehouse 資源,不必匯出服務帳戶金鑰,請設定 Workload Identity Federation (WIF)。這會在 Google Cloud 和 SAP BDC OIDC 簽發者之間建立信任關係。
請按照下列步驟設定 WIF 集區和供應商:
取得核發者 URI
從 Delta Sharing 連線目錄擷取 OIDC 核發者 URI。您需要這個 URI 來設定 WIF 提供者。
gcloud alpha biglake delta-sharing catalogs describe CONNECTION_CATALOG_ID \ --project="PROJECT_ID"
在指令輸出中,找出包含核發者 URI 的 federatedIdentityIssuer 欄位。
建立 Workload Identity Pool
建立工作負載身分集區,將外部身分歸類。
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --display-name="POOL_DISPLAY_NAME" \ --project="PROJECT_ID"
建立 OIDC 提供者
在集區中建立 OIDC 提供者,定義信任關係並對應權杖憑證附加資訊。
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER_URI" \ --attribute-mapping="google.subject=assertion.sub.split('://')[1].split('.')[0]" \ --project="PROJECT_ID"
將角色授予同盟主體
授權來自信任集區的聯合身分呼叫必要的 Google API。您可以授權特定主體 UUID 或整個集區。
授權特定主體 (建議):
gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/biglake.viewer" \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/WIF_SUBJECT" gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/serviceusage.serviceUsageConsumer" \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/WIF_SUBJECT"
將 WIF_SUBJECT 替換為 SAP 端簽發者為工作負載核發的 UUID。
授權集區中的每個身分 (限制較少,適合測試環境):
gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/biglake.viewer" \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*" gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/serviceusage.serviceUsageConsumer" \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*"
將資料發布至 SAP BDC
您可以使用 Google Cloud 控制台或 Google Cloud CLI 發布 Apache Iceberg REST 目錄,也可以使用 gcloud CLI 發布包含 Iceberg 表格的 Knowledge Catalog 資料產品。 Google Cloud 主控台不支援發布資料產品。
Iceberg REST 目錄
發布前,請確認 Iceberg 表格有主鍵和至少一個資料列,因為 SAP BDC 查詢需要這兩項條件。
控制台
前往 Google Cloud 控制台的「Lakehouse Runtime Catalog」(Lakehouse 執行階段目錄) 頁面。
在導覽面板中展開專案,然後選取要用於發布的「Delta Catalog」(Delta 目錄) (連線目錄)。
按一下「發布資料產品」。
輸入必要共用詳細資料,包括選取要發布的 Iceberg REST 目錄。
按一下「發布」。
gcloud
確認 Apache Iceberg REST 目錄端點存在,並取得詳細資料:
gcloud alpha biglake iceberg catalogs describe ICEBERG_CATALOG_ID \ --project="PROJECT_ID"
將 Apache Iceberg REST 目錄發布至 SAP BDC。請注意,連線目錄、Iceberg 目錄和基礎 Cloud Storage bucket 必須位於相同地區。
gcloud alpha biglake data-product-sharing publish \ --connection-catalog="projects/PROJECT_ID/catalogs/CONNECTION_CATALOG_ID" \ --share="SAP_SHARE_NAME" \ --sap-federated-identity-provider="projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \ --iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \ --title="TITLE_TEXT" \ --short-description="SHORT_DESCRIPTION_TEXT" \ --description="DETAILED_DESCRIPTION_TEXT" \ --project="PROJECT_ID"
發布的 Apache Iceberg REST 目錄可在 SAP BDC 中探索,並以遠端資料表的形式安裝在 SAP Datasphere 中。
更改下列內容:
CONNECTION_CATALOG_ID:已註冊的 Delta 共用連線目錄,是在從 SAP BDC 共用資料至 BigQuery 的初始設定期間建立。這與設定說明中提及的 Delta Sharing 目錄相同,您不需要再建立一個目錄來發布。PROJECT_NUMBER:您的 Google Cloud 專案編號。sap-federated-identity-provider必須使用專案編號,而非專案 ID。POOL_ID:WIF 集區 ID。PROVIDER_ID:WIF 供應商 ID。TITLE_TEXT和SHORT_DESCRIPTION_TEXT:SAP BDC 中股份的必要顯示值。DETAILED_DESCRIPTION_TEXT:選填詳細說明。請勿為簡短說明和詳細說明輸入相同文字,否則 SAP 會拒絕。如果詳細說明包含與簡短說明完全相同的子字串,發布作業也會遭到拒絕。舉例來說,如果簡短說明是Sales Data,則系統會拒絕Longer Sales Data details的詳細說明,因為其中包含Sales Data。但接受「較長的銷售資訊」詳細說明。
Knowledge Catalog 資料產品
或者,您也可以發布 Knowledge Catalog 資料產品。資料產品是經過精選的資料資產 (例如資料表或檢視區塊) 邏輯分組,包裝在一起以解決特定業務問題。您可以選取特定 Apache Iceberg 資料表,將其歸類為資料產品,然後將這組精選集合發布至 SAP BDC,不必發布完整目錄。
建立資料產品:
gcloud alpha dataplex data-products create DATA_PRODUCT_ID \ --location="LOCATION" \ --display-name="TITLE_TEXT" \ --description="SHORT_DESCRIPTION_TEXT" \ --owner-emails="OWNER_EMAIL" \ --project="PROJECT_ID"
--display-name會對應至 SAP BDC 中的title,而--description會對應至short_description。將 Lakehouse Iceberg 資料表資產連結至資料產品:
gcloud alpha dataplex data-products data-assets create DATA_ASSET_ID \ --data_product="DATA_PRODUCT_ID" \ --location="LOCATION" \ --resource="//biglake.googleapis.com/projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME" \ --project="PROJECT_ID"
在資料產品中設定資產時,表格資產必須有主鍵和至少一列。單一資料產品中的所有資料資產都必須屬於同一個 Apache Iceberg REST 目錄。資料產品最多可有 50 個資料表,且必須至少包含一個有效資料資產才能發布。Iceberg 資料表可能不會立即顯示在Google Cloud 控制台中。
選用:驗證資料產品中的資產:
gcloud alpha dataplex data-products data-assets list \ --data_product="DATA_PRODUCT_ID" \ --location="LOCATION" \ --project="PROJECT_ID"
將資料產品發布至 SAP BDC。確認連線目錄、資料產品和基礎資源位於相同區域。
gcloud alpha biglake data-product-sharing publish \ --connection-catalog="projects/PROJECT_ID/catalogs/CONNECTION_CATALOG_ID" \ --share="SAP_SHARE_NAME" \ --sap-federated-identity-provider="projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \ --data-product="projects/PROJECT_ID/locations/LOCATION/dataProducts/DATA_PRODUCT_ID" \ --project="PROJECT_ID"
發布的資料產品可在 SAP BDC 中探索,並以遠端資料表的形式安裝在 SAP Datasphere 中。在 SAP BDC 中,發布的資料產品會沿用建立 Knowledge Catalog 資料產品時設定的名稱和簡短說明。
更改下列內容:
CONNECTION_CATALOG_ID:在初始設定期間建立的已註冊 Delta Sharing 連線目錄,用於從 SAP BDC 分享資料至 BigQuery。這與設定說明中提及的 Delta Sharing 目錄相同,您不需要再建立一個目錄來發布。PROJECT_NUMBER:您的 Google Cloud專案編號。sap-federated-identity-provider必須使用專案編號,而非專案 ID。POOL_ID:WIF 集區 ID。PROVIDER_ID:WIF 供應商 ID。DATA_PRODUCT_ID:您的 Knowledge Catalog 資料產品 ID。LOCATION:Knowledge Catalog 資料產品的位置。SAP_SHARE_NAME:SAP BDC 中的共用名稱。
存取 Google Cloud SAP BDC 中的資料
將資料發布至 SAP BDC 後,您就能在 SAP 環境中存取 Google Cloud 資料。如要進一步瞭解如何在 SAP 中以遠端資料表的形式安裝及使用資料產品,請參閱 SAP 說明文件中的「安裝資料產品」。
後續步驟
- 排解 SAP BDC 的跨雲端 Lakehouse 問題。
- 安裝資料產品 SAP 說明文件。