随笔 - 290  文章 - 10  评论 - 85  2

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

  

 

posted on 2017-03-10 18:36  Gu  阅读(...)  评论(...编辑  收藏