级别: 初级 Jon Deng, 资深软件工程师,
IBM
Jeff J. Li, 高级软件工程师,
IBM
2008 年 11 月 13 日 本文介绍了 IBM® Information Server® Pack for
Salesforce.com,并描述了这个包的体系结构设计,演示了它的用法,并强调了它相对于其他产品的优点。本文还演示了一些示例任务,指导您实现完整的部署。
简介
Salesforce 是一个领先的随需应变客户关系管理(CRM)系统。它为公司管理客户联系人、跟踪销售订单以及优化销售过程提供了一个完善的托管解决方案。它还允许客户以服务的形式定制他们的软件,从而取得竞争优势。
IBM Information Server 是一个统一、综合的信息集成平台。它可以分析、清洗和转换来自不同数据源的数据,交付一致、准确的业务数据。如果要将 Salesforce CRM 数据与后端企业资源计划(ERP)系统和其他数据分析应用程序中的企业数据进行集成和同步,则 IBM Information Server 是一个理想的解决方案。
本文阐述了最新认证的用于 Information Server 的 IBM Salesforce 解决方案的主要特性。本文还提供一些例子,以演示日常业务集成场景。这些例子提供了详细指南,顾问可以利用它们来解决 Salesforce 数据集成案例。
产品的先决条件及安装
IBM Information Server 包括很多用于数据集成和分析任务的软件产品。这些产品包括 Information Server DataStage®、Information Server QualityStage™、Information Server Information Analyzer、Information Server Federation Server 和其他附带产品。取决于特定的项目需求,用户可以选择安装 IBM Information Server 中的部分产品。
图 1. 设计 Salesforce.com 的 ETL 任务所需的软件产品
图 1 显示了设计 Salesforce.com 的 ETL 任务所需 IBM Information Server 产品的最小集合。
- IBM Information Server DataStage,包括:
-
DataStage Client
-
DataStage Server
-
DataStage Metadata Repository
-
DataStage Domain Server
Information Server DataStage 产品可以分别安装在不同的主机上,也可以安装在同一台主机上。
- Information Server Pack for Salesforce.com(IS Salesforce Pack)
IS Salesforce Pack 是 IBM Information Server 的附带产品。这个包用于通过 Web 服务连接到 Salesforce.com。IS Salesforce Pack 的 GUI 安装在 DataStage Client 上。这个包的运行时部分则安装在 DataStage Server 上。
- Apache Axis
Apache Axis 是一个外部组件,用于管理
IS Salesforce Pack 的传输层。它包含用于 HTTP/HTTPS 协议的库,如图 Figure 1a 所示。
图 1a. 作为外部组件的 Apache Axis
体系结构概述
在设计和执行 Salesforce.com 的 ETL 任务时,图 1 中的每个软件组件都扮演着不同的角色:
- Information Server DataStage Client 和 IS Salesforce Pack GUI 组件提供一个智能的用户界面,使用户可以设计 ETL 任务,导入和导出元数据,以及设置将在 Salesforce.com 上执行的数据操作。
- Information Server DataStage Server 和 IS Salesforce Pack server 组件使用户可以调度和运行 ETL 任务。
- Information Server Domain Server 管理 Information Server 用户帐户和授权。
- Information Server Metadata Repository 是用于存储和共享元数据定义的一个单独的数据库。
Information Server Salesforce Pack 主要包括三个组件:
- Salesforce 元数据浏览器,用于浏览 Salesforce 对象的定义,以及将其从 Salesforce.com 导入到 DataStage。
- Salesforce Load Stage,用于将数据从非 Salesforce 数据源装载到 Salesforce.com。它是一个 Salesforce 认证的装载解决方案。
- Salesforce Extract Stage,用于将数据从 Salesforce.com 提取到非 Salesforce 数据源。它是一个 Salesforce 认证的提取解决方案。Salesforce 装载和提取 stage 都依赖于 Salesforce.com Web 服务 API。
Salesforce 元数据浏览器
这个包有一个智能的元数据浏览器。它既可以浏览 Salesforce 对象,又可以浏览 Salesforce 用户创建的定制对象。它可以将选定的对象定义从 Salesforce 导回到 IBM Information Server,以备将来使用。元数据浏览器只显示适用于用户选择的数据操作的对象和字段。图 2 显示了元数据浏览器用于查询操作的界面。元数据浏览器只显示用户可以对其执行查询操作的 Salesforce 对象。
图 2. 元数据浏览器和终端用户 Salesforce 帐户中的查询表对象
在图 3 中,元数据浏览器显示了允许用户对其更新数据或插入新数据的 Salesforce 对象。
图 3. 元数据浏览器和终端用户 Salesforce 帐户中的 Upsertable 对象
如图 2 和图 3 所示,元数据浏览器根据用户选择的操作显示不同的对象集合,包括定制对象。这个特性使终端用户对操作和对象之间的相互关联一目了然。
元数据浏览器不仅可以显示 Salesforce 对象,还可以显示与那些对象相关的字段属性。它进一步简化了终端用户在 DataStage 任务设计阶段的任务。在图 4 中,通过 UPSERT 操作选择 Opportunity 对象。该对象中只显示适合 UPSERT 操作的字段。
图 4. Upsert 操作对应的 Opportunity 字段
在图 5 中,通过 Query 操作选择同一个 Opportunity 对象。与图 4 相比,这里显示的 Opportunity 对象的字段有所不同。该对象中只有适合 Query 操作的字段是可见的。
图 5. Query 操作对应的 Opportunity 字段
元数据浏览器可以将 Salesforce 对象和字段定义导入到 DataStage 中。首先选择被插入的 Salesforce 对象和它的数据字段,如图 6 所示。然后单击 Import,将选择的 Salesforce 对象定义转换为 DataStage 表定义。创建的表定义如图 7 所示。还可以将表定义保存到 DataStage 存储库中,以备将来使用。
图 6. 导入 Salesforce 元数据
图 7. 将元数据定义保存到 DataStage 中
从 Salesforce 中提取数据
Salesforce Extract Stage 可以根据用户的 Salesforce.com 凭证从 Salesforce.com 中提取数据。提取的数据可以被装载到其他数据源,例如 Oracle®、DB2、SAP® 或纯文本文件。Extract Stage 依赖于 Salesforce.com Web 服务 API 和 Salesforce Object Query Language(SOQL)。
本节将设计一个简单的 ETL 任务,以演示设计步骤和提取功能。图 8 显示了这个示例任务。这个示例任务将 Salesforce Account 对象复制到 Oracle 数据库。可以手动创建 Oracle Account 表,或者由 DataStage Open Database Connectivity(ODBC)连接器在任务运行时自动创建它。
图 8. DataStage 任务有选择地将数据从 Salesforce.com 提取到 Oracle 9g
图 9. Oracle 数据库中的 Account 表
要设置 Salesforce 提取任务,必须先打开 stage GUI,然后选择操作类型。这里定义了 4 种操作类型:Query、QueryAll、Get Deleted Delta 和 Get Updated Delta。图 10 显示了选中 Query 操作时的界面。
图 10. 为提取选择 Query 操作
选择操作之后,可以启动元数据浏览器,选择要进行查询的业务对象,也可以手动输入对象名称和 SOQL 语句。元数据浏览器会自动生成 SOQL 语句作为参考。可以使用生成的 SOQL 语句,或者手动地修改该语句。图 11 和 12 显示了生成的 SOQL 语句。
图 11. 使用元数据浏览器选择对象和字段
图 12. 自动生成的 SOQL 语句
运行数据提取操作
图 13 显示了如何设置 ODBC 连接器,以便将提取的 Salesforce 数据插入到 Oracle 数据库。
图 13. 设置到 Oracle 数据库的连接
图 14 显示了任务运行的结果。
图 14. 调度和运行提取任务
将数据装载到 Salesforce
本节使用一个简单的 ETL 任务来演示将数据装载到 Salesforce.com 中的必要步骤。图 15 显示了这个示例任务。该任务使用一个 ODBC Stage 从一个 Oracle 数据库表中提取客户数据。它将提取的数据传递给 Salesforce Load Stage(Salesforce_Contact),后者将处理后的数据装载到用户的 Salesforce 帐户的 contact 对象中。图 16 显示了 Oracle 数据库表中的示例数据。
图 15. 将数据从 Oracle 数据库装载到 Salesforce contact
图 16. Oracle 数据库表中的示例数据
您需要将 Oracle 数据库中的源映射到 Salesforce contact 对象。这可以在将来自 Oracle 数据库和 Salesforce.com 的所有元数据导入完成之后再做。
要设置 Salesforce Load Stage Salesforce_Contact,请选择 Upsert 操作,如图 17 所示。
图 17. 选择操作
然后,通过元数据浏览器从 Salesforce 对象 contact 中导入字段。图 18 显示了导入后的结果。
图 18. 导入的 Salesforce contact 字段
图 19 显示了如何设置 ODBC 连接器,以便从 Oracle 数据库中提取联系人信息。
图 19. 从 Oracle 中提取数据
在图 20 中,Oracle 数据库中的数据字段被映射到 Salesforce contact 对象中的字段。
图 20. Oracle 数据库与 Salesforce contact 对象之间的映射
在图 20 中,Oracle 数据库中的 REPID 字段被映射到 Salesforce OwnerId 字段。Oracle 中的 REPID 的长度只有 4。而 Salesforce OwnerId 的长度应该为 18。这种映射会产生错误,导致 Salesforce Load Stage 拒绝记录。图 21 表明,所有要装载到 Salesforce 中的记录都被拒绝,并且被发送到拒绝链接。
图 21. 记录被拒绝导致的装载失败
如图 22 所示,拒绝链接的输出文件记录所有被拒绝记录的原因。用户可以根据这个拒绝文件改正错误,然后重新将记录装载到 Salesforce。
图 22. 拒绝的原因
并行装载
通过并行装载到 Salesforce,终端用户可以使用 Internet 上的 Web 服务调用加快装载过程。通常,如果使用顺序装载方式和单个的连接,将 50 万行数据装载到 Salesforce 需要 2 到 4 个小时。在实际的数据仓库中,这样的性能是难以接受的。但是,如果使用内建的 DataStage 并行功能,就可以根据用户的需要设置多个并行装载节点配置文件。然后,在运行时使用适当的配置文件,而不必更改任务中的任何设计。这个过程不仅简化了任务的设计,而且加快了装载过程。Salesforce Pack 可以根据多个节点自动划分数据,并通过多个连接将数据装载到 Salesforce。通常需要两个小时的装载任务现在只需 30 分钟就能完成。这样的性能可以改进客户的数据仓库建设过程,提高他们的生产率。
将 Salesforce 用于数据浓缩(data enrichment)
DataStage 中的 quality stage 可以清洗数据,移除错误的记录。在图 23 中显示的示例任务使用了一个 quality stage,以便在更新记录或将记录插入到 Salesforce 之前移除具有相同外部 ID 的重复记录。
图 23. 移除重复的记录
图 24 定义了列,用作检查重复记录的键。在这里,选择 ExternalID__C。
图 24. 为检查重复记录而定义的键 ExternalID__C
结束语
本文演示了如何使用 IBM Information Server 和 Information Server Salesforce Pack 将 Salesforce.com CRM 与外部数据源集成。文中解释了 Salesforce 数据装载和提取过程,以及 Quality stage 中的数据浓缩特性。
IBM Information Server 为很多 Salesforce 客户面临的两个其他关键问题提供了领先的解决方案:
-
数据质量:用于构建数据仓库的数据常常来自不同的数据源。遗留数据的结构往往没有文档说明,数据质量令人担忧。Information Server Information Analyzer 产品可以对数据进行分析,并确定数据的结构和质量。它帮助您理解数据。Information Server QualityStage 产品可标准化和匹配任何类型的信息,以创建高质量的数据。
-
数据量:对于一个数据仓库环境,常常需要对巨量的数据进行常规性的处理。有时候,数据量的增长会超出预期。这个问题需要用一个可伸缩的 ETL 架构来解决。IBM Information Server 利用管道和分区技术为高数据吞吐量提供支持。IBM Information Server 可以部署在对称多处理(SMP)和大规模并行处理(MPP)计算机系统上,以取得最大的可伸缩性。节点配置的设置是无缝的,可以通过多个配置文件来完成,也可以在生产时完成。根据对这个包的评测,在使用公司的代理防火墙的情况下,在一个多节点配置中,装载 120 万行数据需要一个小时。
致谢
感谢 Milind Tamaska 为我们提供了反馈,并对本文作了审校。
参考资料 学习
获得产品和技术
-
用可直接从 developerWorks 下载的
IBM
试用软件 构建您的下一个开发项目。
讨论
作者简介  | 
|  | Jon Deng 是佛罗里达州 Boca Raton 的 Software Group 的一名资深软件工程师。他在 2005 年 IBM 收购 Ascential 时随 Ascential 加入 IBM。他从事企业应用程序和电信系统方面的工作长达 8 年。目前,他正在参与开发 IBM InfoSphere Information Server 的下一代 salesforce 适配器。他还是一名认证的 SAP BW 专家。 |
 | 
|  | Jeff Li 是佛罗里达州 Boca Raton 的 Software Group 的一名高级软件工程师。他在 2005 年 IBM 收购 Ascential 时随 Ascential 加入 IBM。他从事企业应用程序和电信系统方面的工作长达 15 年。目前,他正在为 IBM InfoSphere Information Server 开发复杂数据集成解决方案。他还是一名认证的项目管理专家。 |
对本文的评价
|