安排 Salesforce 转移作业

借助适用于 Salesforce 的 BigQuery Data Transfer Service,您可以自动安排和管理从 Salesforce 到 BigQuery 的周期性加载作业。

限制

Salesforce 转移作业受到以下限制:

  • 适用于 Salesforce 的 BigQuery Data Transfer Service 仅支持 Salesforce Bulk API 连接到 Salesforce 实例,并且仅支持转移 Salesforce Bulk API 支持的实体。如需详细了解哪些实体受支持,请参阅“Bulk API 不支持实体”错误
  • 周期性转移作业之间的最短间隔时间为 15 分钟。周期性转移作业的默认间隔时间为 24 小时。
  • 适用于 Salesforce 的 BigQuery Data Transfer Service 不支持与 Salesforce 沙盒环境的连接。

准备工作

以下部分介绍了在创建 Salesforce 转移作业之前需要执行的步骤。

Salesforce 前提条件

为 Salesforce 实例启用 Salesforce Bulk API

使用以下配置创建 Salesforce 关联的应用

  • 为应用生成安全令牌
  • 通过执行以下操作来允许使用 OAuth 用户名和密码流程:

    1. 在关联的应用中,点击 Setup(设置)。
    2. 快速查找字段中,搜索 OAuth and OpenID Connect Settings(OAuth 和 OpenID Connect 设置),并将其启用。

      在 Salesforce 中启用“OAuth and OpenID connect settings”(OAuth 和 OpenID Connect 设置)

  • 执行以下操作,为关联的应用的用户启用自行授权:

    1. 在关联的应用中,点击 Setup(设置)。
    2. 快速查找字段中,搜索 Manage connected apps(管理关联的应用)。
    3. 针对用于转移作业运行的关联的应用,点击 Edit(编辑)。
    4. OAuth Policies(OAuth 政策)下,点击 Permitted Users(允许的用户)菜单,然后选择 All users may self-authorize(所有用户都可以自行授权)。

      在 Salesforce 中为用户启用自行授权

    5. IP Relaxation(IP 放宽)下,选择 Relax IP restrictions(放宽 IP 限制)。

      Salesforce 中的“Relax IP restrictions”(放宽 IP 限制)

创建 Salesforce 转移作业时,您还必须具有以下 Salesforce 信息:

参数名称 说明
clientId Salesforce 关联的应用的客户端 ID 或使用方密钥。
clientSecret

Salesforce 关联的应用的 OAuth 客户端密钥或使用方密钥。

username

Salesforce 账号的用户名。

password

Salesforce 账号的密码。

securityToken

Salesforce 账号的安全令牌。此安全令牌是附加到密码的字母数字代码(区分大小写)。从 Salesforce 配置的可信 IP 范围之外访问 Salesforce API 时,需要安全令牌。

BigQuery 前提条件

所需 BigQuery 角色

如需获得创建转移作业所需的权限,请让管理员向您授予 BigQuery 管理员 (roles/bigquery.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含创建转移作业所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建转移作业需要以下权限:

  • bigquery.transfers.update(针对用户)
  • bigquery.datasets.get(针对目标数据集)
  • bigquery.datasets.update(针对目标数据集)

您也可以使用自定义角色或其他预定义角色来获取这些权限。

设置 Salesforce 数据转移作业

如需创建 Salesforce 数据转移作业,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 点击数据转移 > 创建转移作业

  3. 来源类型部分的来源中,选择 Salesforce

  4. 转移配置名称部分的显示名中,输入转移作业的名称。

  5. 时间表选项部分中,执行以下操作:

    • 重复频率列表中,选择一个选项以指定此转移作业的运行频率。如需指定自定义重复频率,请选择自定义。如果您选择按需,则当您手动触发转移作业时,此转移作业会运行。

    • 如果适用,请选择立即开始在设置的时间开始,并提供开始日期和运行时间。

  6. 目标设置部分的数据集中,选择您创建的用来存储数据的数据集。

  7. 数据源详细信息部分中,执行以下操作:

    • 对于自定义网域,输入自定义登录网域(如果适用)。
    • 对于用户名,输入 Salesforce 账号的用户名。
    • 对于密码,输入 Salesforce 账号的密码。
    • 对于安全令牌,输入 Salesforce 账号的安全令牌。
    • 对于客户端 ID,输入 Salesforce 关联的应用使用方密钥。
    • 对于客户端密钥,输入 Salesforce 关联的应用使用方密钥。
    • 对于要转移的 Salesforce 对象,请点击浏览以选择要转移到 BigQuery 目标数据集的任何对象。

      • 此外,您还可以在此字段中手动输入要包含在转移作业中的任何对象。

      配置 Salesforce 转移作业配置

  8. 服务账号列表中,选择与您的 Google Cloud 项目关联的服务账号。所选服务账号必须具有所需的角色才能运行此转移作业。

    如果您使用联合身份登录,则需要有服务账号才能创建转移作业。如果您使用 Google 账号登录,则转移作业的服务账号是可选的。

    如需详细了解如何将服务账号用于数据转移,请参阅使用服务账号

  9. 可选:在通知选项部分中,执行以下操作:

    • 如需启用电子邮件通知,请点击电子邮件通知切换开关。启用此选项后,传输作业管理员会在传输作业运行失败时收到电子邮件通知。
    • 如需为此转移作业启用 Pub/Sub 转移作业运行通知,请点击 Pub/Sub 通知切换开关。您可以选择主题名称,也可以点击创建主题来创建某个主题。
  10. 点击保存

bq

输入 bq mk 命令并提供转移作业创建标志 --transfer_config

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

其中:

  • PROJECT_ID(可选):您的 Google Cloud 项目 ID。如果未提供 --project_id 来指定具体项目,则系统会使用默认项目。
  • DATA_SOURCE:数据源,salesforce
  • NAME:此标志表示转移配置的显示名称。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
  • DATASET:转移作业配置的目标数据集。
  • PARAMETERS:所创建转移作业配置的参数(采用 JSON 格式)。例如 --params='{"param":"param_value"}'。以下是 Salesforce 转移作业的参数:

    • connector.authentication.oauth.clientId:Salesforce 关联的应用的客户端 ID 或使用方密钥。
    • connector.authentication.oauth.clientSecret:Salesforce 关联的应用的 OAuth 客户端密钥或使用方密钥。
    • connector.customDomainName(可选):Salesforce 自定义登录网域(如果适用)。留空则使用默认登录网域 login.Salesforce.com
    • connector.authentication.username:Salesforce 账号的用户名。
    • connector.authentication.password:Salesforce 账号的密码。
    • connector.authentication.securityToken:Salesforce 账号的安全令牌。
    • assets:要转移到 BigQuery 的 Salesforce 对象的路径。

例如,以下命令会使用所有必需参数在默认项目中创建 Salesforce 转移作业:

bq mk \
    --transfer_config \
    --target_dataset=mydataset \
    --data_source=salesforce \
    --display_name='My Transfer' \
    --params='{"assets":["Account"],
        "connector.authentication.oauth.clientId": "1234567890",
        "connector.authentication.oauth.clientSecret":"ABC12345",
        "connector.customDomainName":"MyDomainName",
        "connector.authentication.username":"user1@force.com",
        "Connector.authentication.password":"abcdef1234",
        "connector.authentication.securityToken":"a1hghbb44lnl465lbl75b",}'

API

使用 projects.locations.transferConfigs.create 方法并提供一个 TransferConfig 资源实例。

价格

将 Salesforce 数据转移到 BigQuery 的功能处于预览版阶段时,您无需付费即可使用此功能。

排查转移作业设置问题

如果您在设置转移作业时遇到问题,请参阅 Salesforce 转移问题

后续步骤