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 ...
随机推荐
- Redis 个人理解总结
一.什么是Redis ? Redis(remote dictionnary server)是一个key-value存储系统.Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可 ...
- ajax 怎么重新加载页面
$.ajax({ type:"post", url:url, data:{xxx:xx}, dataType: "json", success : functi ...
- 1.0 poi单元格合合并及写入
最近项目中用到poi生成Excel时,用到了单元格合并,于是参考了http://www.anyrt.com/blog/list/poiexcel.html写的文章,但是其中有些地方不是很清楚,于是自己 ...
- php 中 public private protected的区别
public 子类,外部都可调用. protected 子类可以调用,外部不可以调用. private 子类不可以调用,外部不可以调用. <?php class AA { public func ...
- MySql连接时出现1251 client does no support authentic错误解决方法
使用Navicat Premium软件连接时,报错: 解决方法: 修改配置项:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password B ...
- => js 中箭头函数使用总结
箭头函数感性认识 箭头函数 是在es6 中添加的一种规范 x => x * x 相当于 function(x){return x*x} 箭头函数相当于 匿名函数, 简化了函数的定义. 语言的发展 ...
- 如何看待Arcsoft虹软,推出的人脸认知引擎免费SDK?
虹软公司是一家具有硅谷背景的图像处理公司,除了人脸技术以外,还有多项图像及视频处理技术.他们的双摄像头处理算法和人脸美化算法囊括了包括OPPO VIVO,SUMAMNG一系列手机厂商. 整个人脸识别运 ...
- python实现邮件接口——smtplib模块
1. 思路 使用脚本发送邮件的思路其实和客户端发送邮件一样,过程都是: 登录 —> 写邮件 —> 发送 只不过通过脚本发送时我们需要考虑到整个过程的方方面面.以下为思路导图: 2. Pyt ...
- phpstudy2018配置站点后500错误问题
phpstudy2016没发现这个问题,这是因为新项目要使用laravel,php版本要求7.1,所有换成了2108,但是laravel的项目没问题,原来tp框架的都不能正常访问,最好查看nginx错 ...
- Python 编程快速上手 第十五章 保持时间,计划任务和启动程序
前言 这一章节的主要内容是: 处理时间类型的数据(使用python 的两个模块: time 和 datetime 来处理) 创建多个线程 (使用 threading 模块来创建多个线程) 进行多个进程 ...