将 Salesforce 数据加载到 BigQuery 中

您可以使用适用于 Salesforce 的 BigQuery Data Transfer Service 连接器将数据从 Salesforce 加载到 BigQuery。借助 BigQuery Data Transfer Service,您可以安排周期性转移作业,将最新数据从 Salesforce 添加到 BigQuery。

限制

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

  • 适用于 Salesforce 的 BigQuery Data Transfer Service 仅支持 Salesforce Bulk API 连接到 Salesforce 实例,并且仅支持转移 Salesforce Bulk API 支持的实体。如需详细了解哪些实体受支持,请参阅“Bulk API 不支持实体”错误
  • 周期性数据转移作业之间的最短间隔时间为 15 分钟。周期性转移作业的默认间隔时间为 24 小时。
  • BigQuery Data Transfer Service 使用 Salesforce Bulk API v1 连接到 Salesforce 端点以检索数据。
  • 如果您配置的网络连接和虚拟机 (VM) 实例位于不同的区域,那么在从 Salesforce 转移数据时,可能会发生跨区域数据移动。

准备工作

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

创建 Salesforce 关联的应用

您必须使用以下所需配置创建 Salesforce 关联的应用

  • 在关联的应用中配置基本信息Connected App Name(关联的应用名称)和联系电子邮件地址字段对于 Salesforce 转移作业是必填字段。
  • 启用 OAuth 设置,并使用以下配置:
    • 选中 Enable OAuth Settings(启用 OAuth 设置)复选框。
    • 回调网址字段中,输入以下内容:
      • 对于生产环境,请输入 https://login.salesforce.com/services/oauth2/token
      • 对于沙盒环境,请输入 https://test.salesforce.com/services/oauth2/token
  • Selected OAuth Scopes(选定的 OAuth 范围)部分中,选择Manage user data via APIs (api)(通过 API (api) 管理用户数据)。
  • 清除 Required Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows(为受支持的授权流程启用必需的用于代码交换的证明密钥 (PKCE) 扩展程序)复选框。
  • 选择 Enable Client Credentials Flow(启用客户端凭据流程),然后在显示的通知中点击确定

使用所需的配置对关联的应用进行配置后,点击保存。系统会将您重定向到新创建的关联的应用的详情页面。

创建关联的应用后,您还必须通过执行以下操作来配置客户端凭据流程:

  1. 点击设置
  2. 在搜索栏中,搜索关联的应用
  3. 依次点击管理应用 > 关联的应用。如果您使用的是 Salesforce Lightning Experience,请点击管理关联的应用
  4. 在您创建的关联的应用上,点击修改
  5. 此时将显示应用详情页面。在 Client Credentials Flow(客户端凭据流程)部分的以此身份运行字段中,输入您的用户名。您可以使用此字段中的查找工具,确保您选择了正确的用户。
  6. 点击保存

必需的 Salesforce 信息

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

参数名称 说明
myDomain Salesforce 中的我的网域
clientId Salesforce 关联的应用的使用方密钥。
clientSecret

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

如需获取 myDomainclientIDclientSecret 值,请选择以下选项之一:

Salesforce Classic

检索 myDomain 详情

如需查找 myDomain,请执行以下操作:

  1. 登录 Salesforce 平台。
  2. 点击设置
  3. 在搜索栏中,搜索“我的网域”
  4. 在搜索结果中,依次点击网域管理 > 我的网域

My Domain Details(我的网域详情)部分中,您的 myDomain 会在 Current My Domain URL(当前我的网域网址)中显示为前缀。例如,如果“我的网域”网址为 example.my.salesforce.com,则要使用的 myDomain 值为 example

检索 ClientIdClientSecret 详情

如需查找 ClientIdClientSecret 值,请执行以下操作:

  1. 登录 Salesforce 平台。
  2. 点击设置
  3. 在搜索栏中,搜索“应用”
  4. 在搜索结果的构建部分,依次点击创建 > 应用
  5. 点击 Connected App Name(关联的应用名称)。
  6. 关联的应用详情页面中,点击 Manage Consumer Details(管理使用方详情)。
  7. 使用已注册的方法之一验证您的身份。您最多可以有 5 分钟的时间查看使用方详情页面,然后系统会提示您再次验证身份。
  8. 使用方详细信息页面中,使用方密钥是您的 ClientId 值。Customer Secret(客户端密钥)是您的 ClientSecret 值。

Salesforce Lightning Experience

检索 myDomain 详情

如需查找 myDomain,请执行以下操作:

  1. 登录 Salesforce 平台。
  2. 点击设置

在 Salesforce 平台中打开“设置”页面。

  1. 在搜索栏中,搜索“我的网域”
  2. 在搜索结果中,依次点击公司设置 > 我的网域

My Domain Details(我的网域详情)部分中,您的 myDomain 会在 Current My Domain URL(当前我的网域网址)中显示为前缀。例如,如果“我的网域”网址为 example.my.salesforce.com,则要使用的 myDomain 值为 example

检索 ClientIdClientSecret 详情

  1. 登录 Salesforce 平台。
  2. 点击设置
  3. 在搜索栏中,搜索“应用”
  4. 在搜索结果中,依次点击应用 > App Manager(应用管理器)。
  5. 找到关联的应用,然后点击查看
  6. 点击管理使用方详细信息
  7. 使用已注册的方法之一验证您的身份。您最多可以有 5 分钟的时间查看使用方详情页面,然后系统会提示您再次验证身份。
  8. 使用方详细信息页面中,使用方密钥是您的 ClientId 值。Customer Secret(客户端密钥)是您的 ClientSecret 值。

BigQuery 前提条件

所需 BigQuery 角色

如需获得创建转移作业所需的权限,请让您的管理员为您授予 BigQuery Admin (roles/bigquery.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

所需权限

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

  • 针对用户的 bigquery.transfers.update 权限
  • 针对目标数据集的 bigquery.datasets.get 权限
  • 针对目标数据集的 bigquery.datasets.update 权限

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

设置 Salesforce 数据转移作业

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

控制台

  1. 前往 Google Cloud 控制台中的“数据转移”页面。

    转到“数据传输”

  2. 点击 创建转移作业

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

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

    • 我的网域部分,输入 Salesforce 我的网域
    • 客户端 ID 部分,输入 Salesforce 关联的应用使用方密钥。
    • 客户端密钥部分,输入 Salesforce 关联的应用使用方密钥。
    • Salesforce objects to transfer(要转移的 Salesforce 对象)部分,点击浏览以选择要转移到 BigQuery 目标数据集的任何对象。此外,您还可以在此字段中手动输入要包含在数据转移作业中的任何对象。

      配置 Salesforce 转移作业配置

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

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

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

    • 重复频率列表中,选择一个选项来指定此数据转移作业的运行频率。如需指定自定义重复频率,请选择自定义。如果您选择按需,则当您手动触发转移作业时,此转移作业会运行。
    • 如果适用,请选择立即开始从设置的时间开始,并提供开始日期和运行时间。
  8. 可选:在通知选项部分中,执行以下操作:

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

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 关联的应用的使用方密钥。
    • connector.authentication.oauth.clientSecret:Salesforce 关联的应用的 OAuth 客户端密钥或使用方密钥。
    • connector.authentication.oauth.myDomainSalesforce 我的网域。例如,如果您的网域网址为 example.my.salesforce.com,则该值为 example
    • 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.authentication.oauth.myDomain":"MyDomainName",}'

API

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

数据类型映射

下表将 Salesforce 数据类型与相应的 BigQuery 数据类型进行了映射:

Salesforce 数据类型 BigQuery 数据类型
_bool BOOLEAN
_int INTEGER
_long INTEGER
_double FLOAT
currency FLOAT
percent FLOAT
geolocation (latitude) FLOAT
geolocation (longitude) FLOAT
date DATE
datetime TIMESTAMP
time TIME
picklist STRING
multipicklist STRING
combobox STRING
reference STRING
base64 STRING
textarea STRING
phone STRING
id STRING
url STRING
email STRING
encryptedstring STRING
datacategorygroupreference STRING
location STRING
address STRING
anyType STRING

价格

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

排查转移作业设置问题

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

后续步骤