将 Salesforce 数据加载到 BigQuery 中
您可以使用适用于 Salesforce 的 BigQuery Data Transfer Service 连接器将数据从 Salesforce Sales Account 加载到 BigQuery。借助 BigQuery Data Transfer Service,您可以安排周期性转移作业,以将 Salesforce Sales Account 中的最新数据添加到 BigQuery。
限制
Salesforce 数据转移作业受到以下限制:
- Salesforce 连接器仅支持从 Salesforce 销售账号转移数据。
- Salesforce 连接器仅支持 Salesforce Bulk API V1 版本 64.0 中包含的字段。以前版本的 Salesforce Bulk API 中包含的某些字段可能不受支持。如需详细了解 Salesforce 连接器的这些变更,请参阅 Salesforce Bulk API。
- Salesforce 连接器使用 Salesforce Bulk API V1 连接到 Salesforce 端点以检索数据。
- Salesforce 连接器仅支持 Salesforce Bulk API V1 连接到 Salesforce 实例,并且仅支持转移 Salesforce Bulk API 支持的实体。如需详细了解哪些实体受支持,请参阅“Bulk API 不支持实体”错误。
- Salesforce 连接器不支持传输具有二进制字段的以下对象。
AttachmentContentVersionDocumentStaticResourceScontrolEmailCaptureMailMergeTemplate
- 周期性数据转移作业之间的最短间隔时间为 15 分钟。周期性转移作业的默认间隔时间为 24 小时。
- 由于 Salesforce 处理限制,一次性安排过多的数据转移作业可能会导致延迟或失败。我们建议您对 Salesforce 数据转移作业进行以下限制:
- 每个转移配置最多可包含 10 个资产。
- 在不同的转移配置中,一次最多只能同时运行 10 个转移作业。
- 单个转移配置在给定时间只能支持一次数据转移运行。如果第二次数据转移的预定运行时间在第一次转移完成之前,则只有第一次数据转移会完成,而与第一次转移时间重叠的任何其他数据转移都会被跳过。
- 为避免在单个转移配置中跳过转移,建议您通过配置重复频率来增加大型数据转移之间的时长。
- 如果您配置的网络连接和虚拟机 (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。
- 对于生产环境,请输入
- 验证是否未选中为指定用户签发基于 JSON Web 令牌(JWT) 的访问令牌复选框。
- 在 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(启用客户端凭据流程),然后在显示的通知中点击确定。
使用所需的配置对关联的应用进行配置后,点击保存。系统会将您重定向到新创建的关联的应用的详情页面。
创建关联的应用后,您还必须通过执行以下操作来配置客户端凭据流程:
- 点击设置。
- 在搜索栏中,搜索关联的应用。
- 依次点击管理应用 > 关联的应用。如果您使用的是 Salesforce Lightning Experience,请点击管理关联的应用。
- 在您创建的关联的应用上,点击修改。
- 此时将显示应用详情页面。在 Client Credentials Flow(客户端凭据流程)部分的以此身份运行字段中,输入您的用户名。您可以使用此字段中的查找工具,确保您选择了正确的用户。
- 点击保存。
必需的 Salesforce 信息
创建 Salesforce 数据转移作业时,您必须具有以下 Salesforce 信息:
| 参数名称 | 说明 |
|---|---|
myDomain |
Salesforce 中的我的网域。 |
clientId |
Salesforce 关联的应用的使用方密钥。 |
clientSecret |
Salesforce 关联的应用的 OAuth 客户端密钥或使用方密钥。 |
如需获取 myDomain、clientID 和 clientSecret 值,请选择以下选项之一:
Salesforce Classic
检索 myDomain 详情
如需查找 myDomain,请执行以下操作:
- 登录 Salesforce 平台。
- 点击设置。
- 在搜索栏中,搜索“我的网域”。
- 在搜索结果中,依次点击网域管理 > 我的网域。
在 My Domain Details(我的网域详情)部分中,您的 myDomain 会在 Current My Domain URL(当前我的网域网址)中显示为前缀。例如,如果“我的网域”网址为 example.my.salesforce.com,则要使用的 myDomain 值为 example。
检索 ClientId 和 ClientSecret 详情
如需查找 ClientId 和 ClientSecret 值,请执行以下操作:
- 登录 Salesforce 平台。
- 点击设置。
- 在搜索栏中,搜索“应用”。
- 在搜索结果的构建部分,依次点击创建 > 应用。
- 点击 Connected App Name(关联的应用名称)。
- 在关联的应用详情页面中,点击 Manage Consumer Details(管理使用方详情)。
- 使用已注册的方法之一验证您的身份。您最多可以有 5 分钟的时间查看使用方详情页面,然后系统会提示您再次验证身份。
- 在使用方详细信息页面中,使用方密钥是您的
ClientId值。Customer Secret(客户端密钥)是您的ClientSecret值。
Salesforce Lightning Experience
检索 myDomain 详情
如需查找 myDomain,请执行以下操作:
- 登录 Salesforce 平台。
- 点击设置。
- 在搜索栏中,搜索“我的网域”。
- 在搜索结果中,依次点击公司设置 > 我的网域。
在 My Domain Details(我的网域详情)部分中,您的 myDomain 会在 Current My Domain URL(当前我的网域网址)中显示为前缀。例如,如果“我的网域”网址为 example.my.salesforce.com,则要使用的 myDomain 值为 example。
检索 ClientId 和 ClientSecret 详情
- 登录 Salesforce 平台。
- 点击设置。
- 在搜索栏中,搜索“应用”。
- 在搜索结果中,依次点击应用 > App Manager(应用管理器)。
- 找到关联的应用,然后点击查看。
- 点击管理使用方详细信息。
- 使用已注册的方法之一验证您的身份。您最多可以有 5 分钟的时间查看使用方详情页面,然后系统会提示您再次验证身份。
- 在使用方详细信息页面中,使用方密钥是您的
ClientId值。Customer Secret(客户端密钥)是您的ClientSecret值。
为 Salesforce 转移设置 IP 许可名单
您必须配置 Google Cloud 环境和 Salesforce 账号,才能将特定 IP 地址添加到数据传输许可名单中。这样可确保 Salesforce 仅接受来自可信的静态 IP 地址的连接。
为此,您必须先设置和配置 Google Cloud 网络以使用静态 IP 地址:
- 在虚拟私有云网络中设置具有静态 IP 地址的公共网络地址转换 (NAT)。CloudNAT 必须配置在与相应数据转移的目标数据集相同的区域内。
- 在同一 VPC 网络中设置网络连接。BigQuery Data Transfer Service 使用此资源来访问私有服务。
接下来,您必须在 Salesforce 中配置可信 IP 范围。 添加 IP 地址范围时,请使用Google Cloud Public NAT 中的静态 IP 地址作为 IP 范围的起始和结束 IP 地址。
设置 IP 地址范围后,您现在可以在设置迁移配置时,通过在网络连接字段中选择网络连接来指定静态 IP。
BigQuery 前提条件
- 确认您已完成启用 BigQuery Data Transfer Service 所需的所有操作。
- 创建 BigQuery 数据集来存储数据。
- 如果您想要为 Pub/Sub 设置转移作业运行通知,请确保拥有
pubsub.topics.setIamPolicyIdentity and Access Management (IAM) 权限。如果您只是要设置电子邮件通知,则无需 Pub/Sub 权限。如需了解详情,请参阅 BigQuery Data Transfer Service 运行通知。
所需 BigQuery 角色
如需获得创建 BigQuery Data Transfer Service 数据转移作业所需的权限,请让您的管理员为您授予项目的 BigQuery Admin (roles/bigquery.admin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供创建 BigQuery Data Transfer Service 数据转移作业所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建 BigQuery Data Transfer Service 数据转移作业需要以下权限:
-
BigQuery Data Transfer Service 权限:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
BigQuery 权限:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
如需了解详情,请参阅授予 bigquery.admin 访问权限。
设置 Salesforce 数据转移作业
通过使用以下选项之一设置转移配置,将 Salesforce 数据添加到 BigQuery 中:
控制台
前往 Google Cloud 控制台中的“数据转移”页面。
点击 创建转移作业。
在来源类型部分的来源中,选择 Salesforce。
在数据源详细信息部分,执行以下操作:
- 对于网络连接,请从列表中选择一个网络连接。 如需了解详情,请参阅为 Salesforce 转移设置 IP 许可清单
- 在我的网域部分,输入 Salesforce 我的网域。
- 在客户端 ID 部分,输入 Salesforce 关联的应用使用方密钥。
- 在客户端密钥部分,输入 Salesforce 关联的应用使用方密钥。
在 Salesforce objects to transfer(要转移的 Salesforce 对象)部分,点击浏览以选择要转移到 BigQuery 目标数据集的任何对象。此外,您还可以在此字段中手动输入要包含在数据转移作业中的任何对象。
在目标设置部分的数据集中,选择您创建用来存储数据的数据集。
在转移配置名称部分的显示名称中,输入数据转移作业的名称。
在时间表选项部分中,执行以下操作:
- 在重复频率列表中,选择一个选项来指定此数据转移作业的运行频率。如需指定自定义重复频率,请选择自定义。如果您选择按需,则当您手动触发转移作业时,此转移作业会运行。
- 如果适用,请选择立即开始或从设置的时间开始,并提供开始日期和运行时间。
可选:在通知选项部分中,执行以下操作:
- 如需启用电子邮件通知,请点击电子邮件通知切换开关。启用此选项后,转移作业管理员会在转移作业运行失败时收到电子邮件通知。
- 如需为此转移作业启用 Pub/Sub 转移作业运行通知,请点击 Pub/Sub 通知切换开关。您可以选择主题名称,也可以点击创建主题来创建一个主题。
点击保存。
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.myDomain:Salesforce 我的网域。例如,如果您的网域网址为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 转移的价格信息,请参阅 Data Transfer Service 价格。
排查转移作业设置问题
如果您在设置数据转移作业时遇到问题,请参阅 Salesforce 转移问题。
后续步骤
- 如需大致了解 BigQuery Data Transfer Service,请参阅 BigQuery Data Transfer Service 简介。
- 如需了解如何使用转移作业,包括获取有关转移作业配置的信息、列出转移作业配置以及查看转移作业的运行历史记录,请参阅处理转移作业。
- 了解如何通过跨云操作加载数据。