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. 是一样的效果