通过与 Workday Data Lake 的跨云连接,您可以在 Google Cloud中直接查询 Workday 数据。此功能可将外部数据源与现有Google Cloud 环境集成,从而统一数据分析。
之后,您可以使用无边界 Lakehouse 来管理对联邦数据的访问权限。
使用场景
将 Lakehouse 连接到 Workday Data Lake 可支持多种关键使用情形:
- 统一分析:将 Workday 人力资源和薪酬数据与Google Cloud 数据相关联,例如,为销售和配额提供背景信息。
- 充分利用 Google Cloud 生态系统:例如,将 Google 的代理框架与 BigQuery ML 和 Workday 人力资源数据搭配使用,以预测员工留存率。
- 以流式传输实时、无复制数据:分析 Workday 采购和应付账款数据,以及存储在Google Cloud 中的物流和库存数据,以报告供应链效率低下的问题并优化供应商成本。
准备工作
- 查看湖仓一体概览,了解湖仓一体如何管理数据访问权限。
- 请参阅有关访问跨云数据的文章,了解其运作方式。
- 查看支持的目录以验证兼容性。
- 了解如何使用区域性 Secret Manager 密文向 Workday Data Lake 进行身份验证。
- 请与 Workday Data Lake 管理员联系,按照本文档中的说明设置身份验证。管理员可能需要与 Workday 支持团队联系,以启用 Data Lake 访问权限,这可能需要一段时间才能解决。
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs, if any are not already enabled.
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, Secret Manager APIs, if any are not already enabled.
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.
所需的角色
如需获得设置跨云访问所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
管理 Lakehouse 目录:
BigLake Admin (
roles/biglake.admin) -
管理 Secret:Secret Manager Admin (
roles/secretmanager.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
限制和注意事项
本部分列出了访问跨云数据的限制和注意事项。
- 只读:Lakehouse 中的联合目录是远程目录的只读视图。不支持资源操作(例如创建、更新或删除资源),必须直接在远程目录中执行。
- 数据新鲜度:联合目录的
--refresh-interval标志用于确定元数据的同步频率。该值必须为0s(已停用)或至少为300s(5 分钟)。目录的后台元数据刷新时间可能会随着命名空间和表资源数量的增加而延长。如果上一次刷新超时,系统会跳过当前刷新,但会在下一个间隔安排下一次刷新。 - Lakehouse 缓存:系统会自动为所有跨云查询启用 Lakehouse 缓存,以便通过在 Google Cloud中本地存储数据块来节省出站流量费用。缓存不支持客户管理的加密密钥 (CMEK);缓存的数据使用 Google-owned and Google-managed encryption keys进行加密。如果查询中的任何表强制执行
constraints/gcp.restrictNonCmekServices组织政策限制,则系统会自动为该查询停用缓存。 如需了解详情,请参阅智能缓存。 - 数据驻留和合规性:在 Google Cloud 区域中创建联邦目录或连接会将缓存的静态数据存储在该目标区域中。如果您的远程云数据位于其他司法管辖区,请确保跨区域缓存符合您组织的数据驻留和法规遵从性要求。
常规工作流程
如需在 Workday Data Lake 中访问跨云数据,请按以下一般步骤操作:
- 设置联合:在 Lakehouse 中配置基于 Secret 的身份验证并创建联合目录。
- 在 Workday 中,设置数据湖和 Workday API 凭据。
- 在 Secret Manager 中创建包含 Workday API 凭据的 Secret。
- 在 Lakehouse 中创建联合目录,并向目录服务账号授予对密文的访问权限。
- 验证连接:验证 Lakehouse 是否可以连接到远程目录并同步元数据。
- 查询数据:使用 BigQuery 或 Managed Service for Apache Spark 针对联合数据运行查询。如需了解详情,请参阅查询远程数据。
- 配置权限:使用 Identity and Access Management (IAM) 来管理哪些人可以查看和查询联合数据。
设置联合
如需查询数据,您必须设置一个 Lakehouse 联合目录,该目录可连接到远程 Workday 数据湖。
配置身份验证
联合需要使用安全存储在区域级 Secret Manager Secret 中的凭据向远程 Workday Data Lake 进行身份验证。
在 Workday 中,完成以下操作:
- 设置数据湖。
- 为数据湖注册 API 客户端(刷新令牌授权)。
- 在数据湖中设置安全性和表导出。
如需有关完成此流程的端到端说明,请参阅 Workday Data Lake 使用入门。
使用上一步中的凭据创建名为
credentials.json的 JSON 文件:{ "client_id": "CLIENT_ID", "client_secret": "CLIENT_SECRET", "refresh_token": "REFRESH_TOKEN" }
替换以下内容:
CLIENT_ID:Workday API 客户端(用于集成)中的 OAuth 客户端 ID。CLIENT_SECRET:Workday API Client for Integrations 中的 OAuth 客户端密钥。REFRESH_TOKEN:为您的 Workday ISU 生成的永不过期的刷新令牌。
为 Secret Manager 配置区域端点:
默认情况下,Secret Manager 使用全球端点。为避免连接问题并最大限度地减少延迟时间和数据传输费用,请在同一区域中创建您的密钥和目录。如需使用区域级 Secret 替换默认的全局端点,请运行以下命令:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
替换以下内容:
REGION:您存储 Secret Manager Secret 的 Google Cloud 区域。例如us-east4。
将载荷上传到 Secret Manager:
gcloud secrets create WORKDAY_SECRET_NAME \ --location="REGION" \ --project="PROJECT_ID" \ --data-file=credentials.json
安全地删除
credentials.json文件,以防止凭据泄露。替换以下内容:
WORKDAY_SECRET_NAME:Secret Manager 中 Workday Secret 的唯一名称,例如workday-api-credentials或workday-data-lake-secret。REGION:您创建 Secret 的 Google Cloud 区域,例如us-east4。PROJECT_ID:您的 Google Cloud 项目 ID。
创建联合目录
如需使用 gcloud CLI 创建联合目录,请运行以下命令:
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="workday" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/WORKDAY_SECRET_NAME" \ --workday-base-url="WORKDAY_BASE_URL" \ --workday-tenant="WORKDAY_TENANT" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS"
替换以下内容:
FEDERATED_CATALOG_NAME:Lakehouse 中联合目录的名称。PROJECT_ID:您的 Google Cloud 项目 ID。REGION:您创建联合目录的 Lakehouse 区域,例如us-east4。为尽量缩短延迟时间和降低数据传输费用,请选择距离您的 Workday 实例最近的 Google Cloud区域。此区域必须与您存储 Secret 的区域相同。WORKDAY_SECRET_NAME:Secret Manager 中 Workday Secret 的名称。WORKDAY_BASE_URL:Workday 实例的基础网址。例如impl-services1.wd12.myworkday.com或wd501.myworkday.com。WORKDAY_TENANT:Workday 租户名称。REFRESH_INTERVAL:可选:指定更新目录信息的频率。将此值设置为时长,例如300s或5m。较短的间隔时间会更频繁地更新数据,但可能会增加 API 调用费用。间隔时间越长,费用可能越低,但查询的数据可能无法反映您的最新数据集。如果省略,刷新间隔时间默认为 5 分钟 (300s)。将值设置为0s可停用后台元数据刷新。NAMESPACE_FILTERS:可选:以英文逗号分隔的要进行联邦的命名空间列表,例如finance,hr。如果省略,Lakehouse 会包含所有命名空间。
完成身份验证设置
创建目录后,Lakehouse 会为其预配一个唯一服务账号,该账号在资源说明中标识为 biglake-service-account。
您必须向此服务账号授予您之前创建的密文的 Secret Manager Secret Accessor 角色 (roles/secretmanager.secretAccessor)。新的 IAM 政策可能需要几分钟才能生效。
控制台
在 Google Cloud 控制台中,前往 Lakehouse。
点击您为 Workday 创建的联合目录的名称。
在目录详情页面上的提醒横幅中,点击授予 Secret 权限。
Lakehouse 向已配置的服务账号授予对相应 Secret 的
roles/secretmanager.secretAccessor角色。
gcloud CLI
向目录的服务账号授予访问相应 Secret 的权限:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets add-iam-policy-binding WORKDAY_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION" \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/secretmanager.secretAccessor"
如需验证联合目录服务账号是否具有对相应 Secret 的访问权限,请运行以下命令:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets get-iam-policy WORKDAY_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION"
在输出中,验证
biglake-service-account服务账号是否具有roles/secretmanager.secretAccessor角色。
替换以下内容:
REGION:您存储 Secret Manager Secret 并创建联邦目录的 Google Cloud 区域,例如us-east4。WORKDAY_SECRET_NAME:Secret Manager 中 Workday Secret 的名称。PROJECT_ID:您的 Google Cloud 项目 ID。FEDERATED_CATALOG_NAME:Lakehouse 中联合目录的名称。
验证连接
验证后台元数据刷新是否成功完成,以及您的命名空间和表是否已同步。
验证刷新状态是否显示成功:
gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
确认命名空间已同步:
gcloud alpha biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目 ID。FEDERATED_CATALOG_NAME:Lakehouse 中您的联邦目录的名称。