Salesforce 批量来源

本页面介绍如何使用 Cloud Data Fusion 将数据从 Salesforce sObject 加载到 Google Cloud。Salesforce Batch Source 插件会从 Salesforce 读取 sObject。sObject 是您计划从中提取数据的 Salesforce 表。 sObject 的一些示例包括商机、联系人、账号、潜在客户和自定义对象。

Salesforce Batch Source 插件支持使用 Salesforce 对象查询语言 (SOQL) 查询读取数据,并支持增量或范围日期过滤条件。

准备工作

配置插件

  1. 前往 Cloud Data Fusion 网页界面,然后点击 Studio
  2. 检查是否已选择数据流水线 - 批量(而非实时)。
  3. 来源菜单中,点击 Salesforce。Salesforce 节点随即会显示在流水线中。如果您在 Studio 页面上看不到 Salesforce 来源,请从 Cloud Data Fusion Hub 部署 Salesforce 插件
  4. 如需配置来源,请前往 Salesforce 节点,然后点击属性
  5. 输入以下属性。如需查看完整列表,请参阅属性

    1. 为 Salesforce 节点输入标签,例如 Salesforce tables
    2. 为沿袭的 Salesforce 来源输入参考名称,例如 Salesforce tables
    3. 输入连接详细信息。您可以设置新的临时连接,也可以设置现有的可重复使用的连接。

      新增关联项

      如需向 Salesforce 添加一次性连接,请按以下步骤操作:

      1. 保持使用连接处于关闭状态。
      2. 连接部分中,在以下字段中输入 Salesforce 账号的以下信息:

        • 用户名
        • 密码
        • 安全令牌
        • 使用方密钥
        • 使用方密钥

        如需从 Salesforce 获取凭据,请参阅从 Salesforce 获取属性

      可重复使用的连接

      如需重复使用现有连接,请按以下步骤操作:

      1. 开启使用连接
      2. 点击浏览连接
      3. 点击连接名称。

      4. 可选:如果不存在连接,并且您想创建新的可重复使用的连接,请点击添加连接,然后参阅新连接标签页中的步骤。

    4. 输入 SObject 名称以加载对象中的所有列。

    5. 可选:如果您选择 sObject 名称,则可以使用以下字段过滤数据:

      • Last modified after(上次修改日期晚于):仅包含上次修改日期晚于指定时间的记录。
      • Last modified before(上次修改日期早于):仅包含上次修改时间早于指定时间的记录。
      • 时长:仅包含在指定大小的时间窗口内最后修改的记录。
      • 偏移量:仅包含“上次修改日期”早于流水线的逻辑开始时间减去指定偏移量的记录。
    6. 可选:对于受支持的 sObject,如需提高流水线的性能,请启用 Enable PK chunking。如需了解详情,请参阅通过 PK 分块提高性能

    7. 可选:您可以输入 SOQL 查询(例如 SELECT LastName from Contact),而不是指定 sObject 名称。如需了解详情,请参阅针对 Salesforce 源的 SOQL 查询

    8. 如需测试连接,请点击获取架构。Cloud Data Fusion 连接到 Salesforce 并拉取所列表的架构(从技术上讲,是一个 sObject)。

属性

属性 已启用宏 必需属性 说明
参考名称 用于唯一标识此来源以执行沿袭、注释元数据等任务。
使用连接 使用现有连接。如果使用连接,则无需提供凭据。
浏览连接 要使用的连接的名称。
用户名 Salesforce 用户名。
密码 Salesforce 密码。
安全令牌 Salesforce 安全令牌。如果密码不包含安全令牌,Cloud Data Fusion 会在向 Salesforce 进行身份验证之前附加该令牌。
使用方密钥 应用使用方密钥。也称为 OAuth 客户端 ID。如需获取使用方密钥,请创建 Salesforce 关联的应用
使用方密钥 应用使用方密钥。此参数也称为 OAuth 客户端密钥。如需获取客户端密钥,请创建 Salesforce 关联的应用
登录网址 Salesforce OAuth2 登录网址。
默认值为 https://login.salesforce.com/services/oauth2/token
连接超时 等待连接初始化的最长时间(以毫秒为单位),超过此时间即超时。
默认值为 30000 毫秒。
代理网址 代理网址,包含协议、地址和端口。
SOQL 用于将数据提取到来源中的 SOQL 查询。
示例:
  • SELECT Id, Name, BillingCity FROM Account
  • SELECT Id FROM Contact WHERE Name LIKE 'A%' AND MailingCity = 'California'
SObject 名称 要读取的 Salesforce 对象名称。如果提供了值,连接器会从 Salesforce 获取相应对象的所有字段并生成 SOQL 查询,例如 select FIELD_1, FIELD_2 from ${sObjectName}。如果提供了 SOQL 查询,则忽略该参数。
此外,还有一些 sObject 不受 Salesforce Bulk API 支持。使用不受支持的对象创建作业会导致以下错误:Entity is not supported by the Bulk API。这些对象也不受 Einstein Analytics 支持,后者使用 Bulk API 查询数据。
不使用 Bulk API 的情况:当查询长度将查询发送到 Salesforce 以接收批处理信息数组时,在一种情况下不使用 Bulk API。如果查询在限制范围内,则执行原始查询。否则,它会切换到宽对象逻辑。 例如,它会生成一个 ID 查询,该查询仅检索稍后将用于通过 SOAP API 检索数据的 ID 的批次信息。
上次修改日期晚于 过滤数据,仅包含系统字段 LastModifiedDate 大于或等于指定日期的记录。使用 Salesforce 日期格式(请参阅示例)。如果未提供任何值,则不应用任何下限日期。
上次修改时间早于 过滤数据,仅包含系统字段 LastModifiedDate 小于指定日期的记录。使用 Salesforce 日期格式(请参阅示例)。通过 Last modified after 属性指定此值,可让您读取在某个时间范围内修改的数据。如果未提供值,则不会应用上限日期。
时长 过滤数据,以仅读取在指定大小的时间范围内最后修改的记录。例如,如果时长为 6 hours,并且流水线在上午 9 点运行,则它会读取上次更新时间为凌晨 3 点(含)到上午 9 点(不含)的数据。 使用数字和以下时间单位指定时长:
  • seconds
  • minutes
  • hours
  • days
  • months
  • years
可以指定多个单位,但每个单位只能使用一次。例如,2 days, 1 hours, 30 minutes。如果已为上次修改时间晚于上次修改时间早于指定值,则系统会忽略相应时长。
偏移值 过滤数据,以便仅读取系统字段 LastModifiedDate 小于流水线逻辑开始时间减去指定偏移量的记录。例如,如果时长为 6 hours,偏移量为 1 hours,并且流水线在上午 9 点运行,则系统会读取上次修改时间介于凌晨 2 点(含)和上午 8 点(不含)之间的数据。
使用数字和以下时间单位指定时长:
  • seconds
  • minutes
  • hours
  • days
  • months
  • years
可以指定多个单位,但每个单位只能使用一次。例如,2 days, 1 hours, 30 minutes。如果已为上次修改时间晚于上次修改时间早于指定值,则系统会忽略偏移量。
SOQL 操作类型 指定要在表格上运行的查询操作。如果选择查询,则仅返回当前记录。选择 queryAll 会返回所有当前记录和已删除的记录。
默认操作为 query
启用 PK 分块 主键 (PK) 分块会根据所查询记录的记录 ID 或主键将针对大型表的查询拆分为多个部分或块。
Salesforce 建议您在查询包含超过 1, 000 万条记录的表时,或在批量查询不断超时时,启用 PK 分块。 如需了解详情,请参阅 PK 分块。PK 分块仅适用于不包含 SELECT 子句或 WHERE 以外的其他条件的查询。 分块功能适用于自定义对象以及支持标准对象的任何共享表和历史记录表。
块大小 指定块的大小。最大值为 250,000。默认大小为 100,000。
SObject 父级名称 Salesforce 对象的父级。用于为历史记录表或共享对象启用分块。

Salesforce 日期格式示例

格式语法 示例
YYYY-MM-DDThh:mm:ss+hh:mm 1999-01-01T23:01:01+01:00
YYYY-MM-DDThh:mm:ss-hh:mm 1999-01-01T23:01:01-08:00
YYYY-MM-DDThh:mm:ssZ 1999-01-01T23:01:01Z

数据类型映射

下表列出了 Salesforce 数据类型及其对应的 CDAP 类型。

Salesforce 数据类型 CDAP 架构数据类型
_bool boolean
_int int
_long long
_doublecurrencypercentgeolocation(纬度)、geolocation(经度) double
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
json string
complexvalue string

使用场景

以下是 Salesforce 批处理来源的一些使用情形:

升级到 Salesforce 插件版本 1.7.0 的前提条件

Salesforce 插件版本 1.7.0 适用于 Cloud Data Fusion 6.8.0 及更高版本。此版本将 Salesforce Bulk API V1 版本从 62.0 升级到了 64.0。

Salesforce 已在 API 版本 64.0 中弃用某些字段。升级到 Salesforce 插件版本 1.7.0 可能会导致使用这些字段的流水线失败。为确保流水线继续正常运行,请手动更新流水线架构,以加载新架构或移除已弃用的字段。

Salesforce API 版本 64.0 中的已弃用字段

Salesforce 已在 API 版本 64.0 中弃用以下字段:

对象名称 字段名称
MobSecurityCertPinConfig EffectiveDate
个人资料 权限 AllowObjectDetectionTraining
权限 AllowObjectDetection
PermissionSet 权限 AllowObjectDetectionTraining
权限 AllowObjectDetection
PermissionSetLicense MaximumPermissionsAllowObjectDetectionTraining
MaximumPermissionsAllowObjectDetection
UserPermissionAccess 权限 AllowObjectDetectionTraining
权限 AllowObjectDetection
MutingPermissionSet 权限 AllowObjectDetectionTraining
权限 AllowObjectDetection
网域 OptionsHstsHeaders
用户 UserPreferencesHideInvoicesRedirectConfirmation
UserPreferencesHideStatementsRedirectConfirmation
UserChangeEvent UserPreferencesHideInvoicesRedirectConfirmation
UserPreferencesHideStatementsRedirectConfirmation

更新流水线架构

如果您的流水线使用任何已弃用的字段,请通过加载新架构或移除已弃用的字段来更新流水线架构:

  1. 前往 Cloud Data Fusion 网页界面,然后点击列表

  2. 如需查看已部署的流水线,请点击已部署标签页。

  3. 对于要更新的流水线,依次点击 > 修改

  4. Studio 视图中,将指针悬停在 Salesforce 源插件上,然后点击属性

    系统会打开 Salesforce 插件的配置窗口。

  5. 如需加载新架构,请按照以下步骤操作:

    1. 输出架构标签页中,依次点击 > 清除,然后点击验证。这会从 Salesforce 加载最新架构。

    2. 架构加载完毕后,在输出架构标签页中,依次点击 > 传播

      这会自动更新流水线中所有后续插件的架构,可能会覆盖 Wrangler 等插件中的手动架构更改。

  6. 如需手动移除已弃用的字段,请按以下步骤操作:

    1. 输出架构标签页中,针对每个已弃用的字段,点击 。这会从所有后续阶段中移除相应字段。

最佳做法

如需详细了解如何提高 Salesforce 批处理来源的性能,请参阅最佳实践

后续步骤