将数据产品发布到 SAP BDC

本文档介绍了如何配置 Google Cloud ,以便 SAP Business Data Cloud (BDC) 访问 BigQuery 数据,而无需复制数据。您可以通过在 Lakehouse for Apache Iceberg 运行时目录或 Knowledge Catalog Data Product 中设置 Apache Iceberg REST 目录端点,与 SAP 共享数据。

如需大致了解此集成及其用例,请参阅 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.

    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.

    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 存储桶:创建一个 Cloud Storage 存储桶,用于存储 Iceberg 元数据和数据文件。如需查看相关说明,请参阅创建存储分区。所有资源(包括后端存储桶)都必须位于同一区域,以避免配置流水线失败。
  7. Apache Iceberg REST 目录:在 Lakehouse 运行时目录中设置 Apache Iceberg REST 目录端点,并启用凭据销售功能,其中包含您要共享的命名空间和表。此目录使用 Cloud Storage 存储桶作为其仓库。如需查看相关说明,请参阅设置 Iceberg REST 目录
  8. Delta Sharing 连接目录:为您的 SAP BDC 连接准备已注册的 Delta Sharing 连接目录。此目录与您在初始设置期间创建的目录相同,用于将数据从 SAP BDC 共享到 BigQuery;您无需创建新目录。如需查看相关说明,请参阅为 SAP BDC 设置跨云 Lakehouse
  9. 工作负载身份联合 (WIF):准备配置 WIF 以信任 SAP BDC 身份验证颁发者。您将在下一部分中进行此设置。

所需角色

如需获取配置工作负载身份联合和发布数据所需的权限,请让管理员向您授予项目中的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

常规工作流程

如需将数据发布到 SAP BDC,请按以下步骤操作:

  1. 配置 Workload Identity 联合 :创建 Workload Identity 联合池和提供方,以与 SAP BDC OIDC 颁发者建立信任关系。
  2. 向联合正文授予角色 :向联合身份授予查看目录元数据和使用服务配额的权限。
  3. 发布数据 :使用 gcloud CLI 将 Apache Iceberg REST 目录或 Knowledge Catalog 数据产品发布到 SAP BDC。

配置工作负载身份联合

如需让 SAP BDC 访问您的 Lakehouse 资源,而无需导出服务帐号密钥,请配置工作负载身份联合 (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"

在命令输出中,找到 federatedIdentityIssuer 字段,其中包含颁发者 URI。

创建工作负载身份池

创建一个工作负载身份池,用于对外部身份进行分组。

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 目录,也可以使用 Knowledge Catalog 数据产品发布包含 Iceberg 表的 gcloud CLI。控制台不支持发布 数据产品 Google Cloud 。

Iceberg REST 目录

在发布之前,请验证您的 Iceberg 表是否具有主键且至少包含一行数据,因为 SAP BDC 查询需要这两者。

控制台

  1. 在 Google Cloud 控制台中,前往 Lakehouse 运行时目录 页面。

    前往 Lakehouse 运行时目录

  2. 在导航面板中,展开您的项目,然后选择要用于发布的 Delta 目录 (连接目录)。

  3. 点击发布数据产品

  4. 输入所需的共享详细信息,包括选择要发布的 Iceberg REST 目录。

  5. 点击 Publish (发布)。

gcloud

  1. 验证 Apache Iceberg REST 目录端点是否存在并获取其详细信息:

    gcloud alpha biglake iceberg catalogs describe ICEBERG_CATALOG_ID \
        --project="PROJECT_ID"
  2. 将 Apache Iceberg REST 目录发布到 SAP BDC。请注意,连接目录、Iceberg 目录和底层 Cloud Storage 存储桶必须都位于同一区域。

    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 Sharing 连接目录,是在初始设置期间创建的,用于将数据从 SAP BDC 共享到 BigQuery。它与设置说明中提到的 Delta Sharing 目录相同;您无需再创建一个用于发布回传。
    • PROJECT_NUMBER:您的 Google Cloud 项目 编号。sap-federated-identity-provider 必须使用项目编号,而不是项目 ID。
    • POOL_ID:WIF 池 ID。
    • PROVIDER_ID:WIF 提供方 ID。
    • TITLE_TEXTSHORT_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. 创建数据产品:

    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

  2. 将 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 控制台中。

  3. 可选:验证数据产品中的资产:

    gcloud alpha dataplex data-products data-assets list \
        --data_product="DATA_PRODUCT_ID" \
        --location="LOCATION" \
        --project="PROJECT_ID"
  4. 将数据产品发布到 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 中共享的名称。

在 SAP BDC 中访问 Google Cloud 数据

将数据发布到 SAP BDC 后,您可以在 SAP 环境中以原生方式访问 Google Cloud 数据 。如需详细了解如何在 SAP 中将数据产品作为远程表安装和使用,请参阅 安装数据 产品 在 SAP 文档中。

后续步骤