Talend 从Excel导入Saleforce数据(二) TMAP是精髓
TMap LookUp 经过测试的结果:
------------------------------------------
LookUp最好从CSV读数据,这样是最快了(20万记录1s).从SalesForce读数据是最慢的.(每条记录2s, 如果要跟SalesForce打交道,最好用V-P-N, 速度和稳定性都好10倍)
CSV文件是定时从Salesforce导出,20万记录可能要半个小时.(大陆访问SF实在是慢,2017年后有改善)
所以要根据你导入文件的行数,来决定是否从CSV还是SalesForce读数据来LookUp,
比如你只有100条记录,从SalesForce读数据只要200s,比重新导一次CSV还是合算的.
超过1000条记录,还是重新导一次CSV吧.
-------------------------------------------
Talend的Processing Component里的TMap, 我是觉得是最常用的组件.
因为你导入的数据,总要和系统现有的数据做对比,是新增还是修改,然后还得做一下数据变换,再导入到系统.
TMap默认有一个主连接(Main Input),一个LookUp连接(也可以改成多个LookUp), 默认一个Output连接(可以改成多个Output).


默认的Join Model是Left Outer Join, 指的是主连接 Left Join LookUp连接.
以这个例子就是ftp left outer join contact. 也就是说ftp的数据假如在contact里找不到,也会在output连接输出. 类似于SQL的左连接.
这个例子连接条件就是ftp的数据和contact的数据的手机号码相同的,视为同一笔数据
--------------------------------------------------------------------------------------------
我们用TMap,通常要把Main Input的数据在LookUp连接里查找,分成2个output, 一个是已存在的数据(通常需要更新), 另外一个是不存在的数据(通常需要新增).
我们有2种方法来做,
//第1种是官方文档推荐的用Inner Join
Inner Join, 通常要2个output, 也就是一个output的capture lookup inner join reject为true, 一个output的capture lookup inner join reject为false,
false的output就是在Main Input和Lookup 都存在的记录. 也就是系统已经存在的记录了.
true的output就是在Lookup 不存在的记录. 也就是要新增的记录了.

----------------------------------------------------------------------------
//第2种是Left Outer Join 加过滤条件
Left outer Join, 2个output, 也能做到上面capture lookup inner join reject的效果.
2个output的property都保持默认的, 都加上contact的Id字段, 然后加过滤器contact.Id==null 和contact.Id!=null


或者1个output 加过滤器contact.Id!=null, 另一个output的property设定Catch output reject=true. 是一样的效果


Talend 从Excel导入Saleforce数据(二) TMAP是精髓的更多相关文章
- Talend 从Excel导入Saleforce数据(一) 直接从salesforce lookup 性能的噩梦
速度的瓶颈是在查询Sales force是否有该电话号码的联系人资料. TMap属性的 lookup Model, 如果用Load Once, 则会把SaleForce的contact全部load下来 ...
- [办公自动化] 再读《让EXCEL飞》(从excel导入access数据时,union联合查询,数据源中没有包含可见的表格)
一年多以前就买了@Mrexcel的<让excel飞>这本书.整体思路是利用access结合excel,大幅度提高数据分析效率. 最近又拿出来看了看.第十五章,比高级筛选更“高级”,P241 ...
- Java Excel 导入导出(二)
本文主要叙述定制导入模板——利用XML解析技术,确定模板样式. 1.确定模板列 2.定义标题(合并单元格) 3.定义列名 4.定义数据区域单元格样式 引入jar包: 一.预期格式类型 二.XML模板格 ...
- 工作日志,Excel导入树结构数据
目录 1. 前言 2. 需求分析 2.1 需求难点 2.2 解决难点 2.3 表格设计 3. 功能实现 3.1 一个分枝 3.2 一个分枝多个树叶 3.3 多个分枝多个树叶 4. 代码事例 4.1 目 ...
- PHP 清除 Excel 导入的数据空格
处理excel中的数据时,遇到了页面中显示为空格,审查元素时却显示为换行,使用replace函数也不管用,反正就是不知道是什么东西,看起来像空格 中文空格这里面有好几种:没有简单的解决问题的方式,比如 ...
- excel导入mysql数据
excel加载mysql数据 1.第一步,选择从mysql导入数据 2.单击会出现弹框: 3.可能有的同学的,这里缺少插件,例如: 4.去下载 这个 插件安装即可.https://dev.mysql. ...
- 将Excel导入到数据中
常用的方式的有两种: 1. 通过 Microsoft.Jet.OLEDB.4.0 或 Microsoft.ACE.OLEDB.12.0 Microsoft.ACE.OLEDB.12.0 需要安装 A ...
- JeeSite中Excel导入导出
在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...
- java利用jxl实现Excel导入功能
本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...
随机推荐
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) E. Cards Sorting 树状数组
E. Cards Sorting time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 《深入理解JVM虚拟机》读书笔记
前言:<深入理解JVM虚拟机>是JAVA的经典著作之一,因为内容更偏向底层,所以之前一直没有好好的阅读过.最近因为刚好有空,又有了新目标.所以打算和<构架师的12项修炼>一起看 ...
- dbm.error: need 'c' or 'n' flag to open new db
#coding=utf-8 import shelve with shelve.open("shelve.ini","w") as f: f["k1& ...
- Java+selenium 爬Boss直聘中职位信息,薪资水平和职位描述
需要下载合适的selenium webdirver jar包和对应浏览器的驱动jar包 import org.openqa.selenium.By; import org.openqa.selen ...
- Java java.lang.SecurityException: Prohibited package name
java.lang.SecurityException: Prohibited package name 提示java错误: Exception in thread "main" ...
- OpenModelica 在特定目录下生成仿真结果文件
OMEdit的仿真结果文件存放在:C:\Users\***\AppData\Local\Temp\OpenModelica\OMEdit 可以在仿真时设置仿真结果文件名,可使用用绝对路径或相对路径 使 ...
- 力扣(LeetCode)70. 爬楼梯
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...
- 分散的配置文件VS集中的注册表
假设有这样一个工程,是这样设计的: 1整个软件.服务被切分为 由若干独立的多道程序(多个进程/微服务): 2 这些多道程序只是“机制mechanism”,而“策略strategy”写在各自用到的配置文 ...
- MySQL根据when-else条件批量更新
#类型 0:默认 1:黑(0302) 2:白(0110) SELECT * FROM t_power_plat WHERE plat_type=1; UPDATE t_power_plat SET p ...
- Python 百分比计算
遇到计算百分比的情况,查了一下,有两种方式 具体实现方式见下面代码 # 方式1 格式化为float ,然后 处理成%格式, 需要对分子/分母 * 100如下, percentList.append(' ...