將資料產品發布至 SAP BDC

Google Cloud 可讓您與 SAP Business Data Cloud (BDC) 共用 BigQuery 資料,而不必複製資料。如要將資料發布至 SAP BDC,請在 Lakehouse 執行階段目錄中設定 Apache Iceberg REST 目錄端點,或設定Knowledge Catalog 資料產品。

如需這項整合功能和用途的總覽,請參閱「關於 SAP BDC 整合」。

事前準備

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the BigLake and Dataplex APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the BigLake and Dataplex APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  6. Cloud Storage bucket:建立 Cloud Storage bucket,用於儲存 Iceberg 中繼資料和資料檔案。如需操作說明,請參閱「建立 bucket」。所有資源 (包括後端 bucket) 都必須位於相同區域,以免設定管道失敗。
  7. Apache Iceberg REST 目錄端點:在 Lakehouse 執行階段目錄中設定 Apache Iceberg REST 目錄端點,並啟用憑證販售功能,其中包含要共用的命名空間和資料表。這個目錄會使用 Cloud Storage bucket 做為倉儲。如需操作說明,請參閱「設定 Apache Iceberg REST 目錄端點」。
  8. Delta Sharing 連線目錄:為 SAP BDC 連線準備已註冊的 Delta Sharing 連線目錄。這個目錄與您在初始設定期間建立的目錄相同,用於將資料從 SAP BDC 共用至 BigQuery,因此您不需要建立新目錄。如需操作說明,請參閱「設定 SAP Business Data Cloud 的跨雲端連線」。
  9. Workload Identity Federation (WIF):準備設定 WIF,信任 SAP BDC 驗證核發者。您將在下一節中設定這項功能。

必要的角色

如要取得設定 Workload Identity Federation 和發布資料所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

一般工作流程

如要將資料發布至 SAP BDC,請按照下列步驟操作:

  1. 設定 Workload Identity Federation:建立 Workload Identity Federation 集區和提供者,與 SAP BDC OIDC 核發者建立信任關係。
  2. 將角色授予聯合主體:授予聯合身分查看目錄中繼資料和使用服務配額的權限。
  3. 發布資料:使用 gcloud CLI,將 Apache Iceberg REST 目錄端點或 Knowledge Catalog 資料產品發布至 SAP BDC。

設定 Workload Identity Federation

如要讓 SAP BDC 存取無邊界 Lakehouse 資源,而不必匯出服務帳戶金鑰,請設定 Workload Identity Federation (WIF)。這會在 Google Cloud 和 SAP BDC OIDC 核發者之間建立信任關係。

請按照下列步驟設定 WIF 集區和供應商:

取得核發者 URI

從 Delta Sharing 連線目錄擷取 OIDC 核發者 URI。您需要這個 URI 才能設定 WIF 供應商。

gcloud biglake delta-sharing catalogs describe CONNECTION_CATALOG_ID \
    --project="PROJECT_ID"

在指令輸出內容中,找出包含核發者 URI 的 federatedIdentityIssuer 欄位。

建立 workload identity pool

建立 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 目錄端點,或含有 Iceberg 資料表的 Knowledge Catalog 資料產品。

Iceberg REST 目錄

發布前,請確認 Iceberg 資料表的中繼資料已使用 identifier-field-ids 定義主鍵,且至少有一列,因為 SAP BDC 查詢需要這兩項資訊。identifier-field-ids 中參照的任何資料欄,都必須在 Iceberg 結構定義中設為 required: true (不可為空值)。如果資料表沒有主鍵,或包含可為空值的鍵欄位,請參閱「更新 Iceberg 資料表結構定義的主鍵」,瞭解如何使用 BigLake REST API 更新。

控制台

  1. 前往 Google Cloud 控制台的「Lakehouse 執行階段目錄」頁面。

    前往 Lakehouse 執行階段目錄

  2. 在導覽面板中展開專案,然後選取要用於發布的 Delta 目錄 (連線目錄)。

  3. 按一下「Publish Data Product」(發布資料產品)。

  4. 輸入必要的共用詳細資料,包括選取要發布的 Iceberg REST 目錄。

  5. 按一下「發布」。

gcloud

  1. 確認 Apache Iceberg REST 目錄端點存在,並取得詳細資料:

    gcloud biglake iceberg catalogs describe ICEBERG_CATALOG_ID \
        --project="PROJECT_ID"
  2. 將 Apache Iceberg REST 目錄端點發布至 SAP BDC。請注意,連線目錄、Iceberg 目錄和基礎 Cloud Storage bucket 必須位於相同區域。

    gcloud 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 Sharing 連線目錄,在初始設定期間建立,用於將資料從 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。不過,我們接受「Longer Sales Information」的詳細說明。

Knowledge Catalog 資料產品

或者,您也可以發布 Knowledge Catalog 資料產品。資料產品是經過精選、邏輯群組的資料資產 (例如資料表或檢視表),可打包在一起,用於解決特定業務問題。您可以選取特定 Apache Iceberg 資料表,將其分組為資料產品,然後將這個精選集合發布至 SAP BDC,而不必發布整個目錄。

控制台

  1. 前往 Google Cloud 控制台的「Knowledge Catalog」頁面。

    前往 Knowledge Catalog

  2. 在導覽選單中,選取「Data products」(資料產品)。

  3. 按一下要發布的資料產品,開啟詳細資料頁面。

  4. 按一下「共用」圖示 ,然後選取「發布至 SAP」。

  5. 在「Publish Data Product to SAP」(將資料產品發布至 SAP) 窗格中,設定下列欄位:

    • 共用區名稱:輸入 SAP BDC 中的共用區名稱。
    • Delta 目錄:選取已註冊的 Delta Sharing 連線目錄。
    • Workload Identity:選取或輸入 workload identity pool 提供者。
  6. 按一下「發布」。

gcloud

  1. 建立資料產品:

    gcloud 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。

  2. 將 Lakehouse 管理的 Apache Iceberg 資料表資產連結至資料產品:

    gcloud 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"

    在資料產品中設定資產時,資料表資產必須在 Iceberg 資料表中繼資料中使用 identifier-field-ids 定義主鍵 (所有 ID 資料欄都標示為 required: true),且至少有一列。如果資料表沒有主鍵,或包含可為空值的主鍵欄位,請參閱「更新 Iceberg 資料表架構的主鍵」,瞭解如何使用 BigLake REST API 更新。單一資料產品中的所有資料資產,都必須屬於同一個 Apache Iceberg REST 目錄。資料產品最多可有 50 個資料表,且至少須包含一項有效的資料資產,才能發布。Iceberg 資料表可能不會立即顯示在 Google Cloud 控制台中。

  3. 選用:驗證資料產品中的資產:

    gcloud dataplex data-products data-assets list \
        --data-product="DATA_PRODUCT_ID" \
        --location="LOCATION" \
        --project="PROJECT_ID"
  4. 將資料產品發布至 SAP BDC。請確認連線目錄、資料產品和基礎資源位於相同區域。

    gcloud 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 中的共用區名稱。

存取 SAP BDC 中的 Google Cloud 資料

將資料發布至 SAP BDC 後,您可以在 SAP 環境中以原生方式存取 Google Cloud 資料。如要進一步瞭解如何在 SAP 中安裝及使用資料產品做為遠端資料表,請參閱 SAP 說明文件中的「安裝資料產品」。

後續步驟