Kettle最常用控件 (v5.30)
2015-08-13 15:33
253 查看
Kettle控件的特点:Kettle的控件分类比较细致,功能相对单一也很具体。使用起来很容易掌握。
Kettle一般处理方法:正式由于Kettle控件的细化特点,所以往往需要组合起来使用。组合使用只是从点的角度看问题,还有就是从线的角度看问题。比如,目标表中的各个列其值可能由其他列的值计算得到,这就涉及到列的计算次序。合理选择计算次序,可以降低计算复杂度和可读性。
修改kettle文件:修改之后要保存才能生效。
2 命名参数:【parameter】用名字取参数值,命令行的时候是 P = value
3 变量:
:把一个字段的值设置成变量,一个变量只能保存一行值!所以将值设置给变量的时候要注意结果集只能有一个元素。设置的变量可以被转换中的其他控件使用,而不必加入其他控件所在的流。
3.1.2 获取变量
:把一个变量的值设置成字段
3.1.3 哪些控件可以使用变量?凡是控件的属性输入最后是
的都可以使用变量。
表输入:
(1)从数据库中读取记录,最终保存一个select语句;
(2)多个转换或者操作同时读取一个表的情况应该尽量避免,否则可能会因为锁操作而影响工作。
(3)从其他ktr文件拷贝而来的表输入,最好重新配置数据库连接。
2.0.1 SQL Server数据库连接配置
2.0.2 MySQL数据库连接配置
2.0.3 如果where条件中使用了变量,则可以使用变量引用方式:
同时勾选:
2.1
Excel输入:从excel文件中读取数据。
注意:
(1)这里最好是xls文件!因为实验了xlsx文件出现了读取不到列名的问题。
(2)先选择【浏览】,再点击【增加】才会使用xls文件!如下图
:将流中的数据写入到数据库指定表中;不会自动创建表
新版本的kettle支持Excel2007及以后颁布,这样导出行数就可以大大超过65535行,下面这个是老版本的Excel输出,建议不要使用
设置一下使用新版本的excel
导出字段的格式设置:
默认情况下,excel输出控件会猜测数据类型,但有时候具体格式需要设置,比如取整:#
比如日期Date类型的格式化输出:yyyy/mm/dd hh:mm:ss
如果使用:y表示年,m表示月,d表示日, h表示时,m表示分,s表示秒,出现的个数表示显示的位数。
按照行数分割文件:
插入更新:比表输出更好用的一个控件,可以指定目标表的指定字段相等的时候更新, 否则直接插入,还可以选择更新的时候更新哪些字段。
如果要实现插入,则需要把相等字段添加到下放的【更新字段】中,这样源表有数据,目标表没有数据的时候就会执行插入。
空操作:
a)通常用于判断分支的一支,还用于操作易于理解
b)用于合并数据,多个来源,自然顺序合并,不能保证顺序。要求多个来源要满足:列数相同、列名相同、列类型相同。
c)用于输出流到多个目的地,这种情况下的默认操作(【分发】轮流输出数据到多个目的地,每个目的地得到的是流的子集)往往不是你想要的,所以要注意,因为你一般会使用【复制】,使用【复制】会使得每个目的地里的内容都是全集。
d)便于开发阶段预览数据
5.1
追加流:以先后顺序将两个流的数据合并。要求多个来源要满足:列数相同、列名相同、列类型相同。
JavaScript代码:
(1)长用来创建JavaScript变量,计算之前流中的数据,保存为新的流,供下游使用,变量自动变成上游数据的新追加列。和【设置变量】控件不同,【设置变量控件】只提供一个唯一的值。
(2)你几乎总是要打开兼容模式,这样可以帮助你写JavaScript代码
(3)JavaScript几乎总是用var定义新的变量,如果要将创建的VAR变量计算并输出到流中,需要手动指定你的这个变量要输出到流:【获取变量】
字符串提取子串:http://blog.csdn.net/calmreason/article/details/48649257
字符串转换为整数:http://www.w3school.com.cn/jsref/jsref_parseInt.asp
字符串替换:http://blog.csdn.net/chenwei160803/article/details/7000225
数字格式化输出为字符串(参考):http://blog.csdn.net/superch0054/article/details/3789458
JavaScript源代码:
如下使用的时候
会生成如下效果:
流查询:提供左连接追加字段的功能,其中右侧被左连接的表通过指定主键与坐标主键相等来连接,另外指定右表中哪些列要被追加到左表
增加常量:给表添加新的常量列,每一行的长量列数据都使用常量填充,记得在表输入之后添加,在表输入之前不可以添加。http://blog.163.com/lfsyhuangaigang@126/blog/static/77436670201403192817833/
分组:提供比SQL更方便快捷的group by功能,尤其是你分组之后,只想对其中一个求和,其他的只取其中一个的时候!
排序记录:对记录按照指定的列进行排序,通常是其他控件必须的前奏,排序可以指定多个列
过滤记录:对一列或者多列同时使用BOOL条件,对条件判断为真的记录指定后续步骤,对条件判断为假的记录指定后续步骤。这个步骤通常和其他步骤结合使用,比如替换指定列为常量。
将字段值设置为常量:可以将制定字段的值设置为固定值,通常是一些状态值的设置。
发送邮件:可以从之前的流中获取流信息,设置好之后就可以发送邮件了。具体实例参考:kettle发送邮件
复制记录到结果:将结果传递到下一个转换中去。这个控件有时候是必不可少的,尤其是多个【转换】或者【作业】搭建一个更大的任务的时候。
14.2
从结果中获取记录:取上一个转换中的数据。
作业和转换:
1 执行每一个输入行
这个选项如果勾选了之后,前面的转换结果有几行这个当前的转换就会执行多少次。
注意:这个设置
主要作用(1)是重命名流里面的字段(2)阻止流中的字段进入下一个流程,如果要进入下一个流程要单独选择
U�’�x���R�Ʌ9�*v�,
�M,�!���y�{��2�
Kettle一般处理方法:正式由于Kettle控件的细化特点,所以往往需要组合起来使用。组合使用只是从点的角度看问题,还有就是从线的角度看问题。比如,目标表中的各个列其值可能由其他列的值计算得到,这就涉及到列的计算次序。合理选择计算次序,可以降低计算复杂度和可读性。
修改kettle文件:修改之后要保存才能生效。
变量与参数:
1 位置参数:【argument】用?的第几次出现表示第几个参数2 命名参数:【parameter】用名字取参数值,命令行的时候是 P = value
3 变量:
设置JVM内存大小
http://itroadmap.sinaapp.com/2014/12/10/kettle5-2-0-java-lang-outofmemoryerror-%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/变量控件
3.1.1设置变量:把一个字段的值设置成变量,一个变量只能保存一行值!所以将值设置给变量的时候要注意结果集只能有一个元素。设置的变量可以被转换中的其他控件使用,而不必加入其他控件所在的流。
3.1.2 获取变量
:把一个变量的值设置成字段
3.1.3 哪些控件可以使用变量?凡是控件的属性输入最后是
的都可以使用变量。
输入
表输入
表输入:
(1)从数据库中读取记录,最终保存一个select语句;
(2)多个转换或者操作同时读取一个表的情况应该尽量避免,否则可能会因为锁操作而影响工作。
(3)从其他ktr文件拷贝而来的表输入,最好重新配置数据库连接。
2.0.1 SQL Server数据库连接配置
2.0.2 MySQL数据库连接配置
2.0.3 如果where条件中使用了变量,则可以使用变量引用方式:
SELECT * FROM ${TABLENAMES}
同时勾选:
2.1
Excel输入:从excel文件中读取数据。
注意:
(1)这里最好是xls文件!因为实验了xlsx文件出现了读取不到列名的问题。
(2)先选择【浏览】,再点击【增加】才会使用xls文件!如下图
输出
表输出
表输出:将流中的数据写入到数据库指定表中;不会自动创建表
Excel输出
新版本的kettle支持Excel2007及以后颁布,这样导出行数就可以大大超过65535行,下面这个是老版本的Excel输出,建议不要使用
设置一下使用新版本的excel
导出字段的格式设置:
默认情况下,excel输出控件会猜测数据类型,但有时候具体格式需要设置,比如取整:#
比如日期Date类型的格式化输出:yyyy/mm/dd hh:mm:ss
如果使用:y表示年,m表示月,d表示日, h表示时,m表示分,s表示秒,出现的个数表示显示的位数。
按照行数分割文件:
4 插入更新
插入更新:比表输出更好用的一个控件,可以指定目标表的指定字段相等的时候更新, 否则直接插入,还可以选择更新的时候更新哪些字段。
如果要实现插入,则需要把相等字段添加到下放的【更新字段】中,这样源表有数据,目标表没有数据的时候就会执行插入。
5空操作
空操作:
a)通常用于判断分支的一支,还用于操作易于理解
b)用于合并数据,多个来源,自然顺序合并,不能保证顺序。要求多个来源要满足:列数相同、列名相同、列类型相同。
c)用于输出流到多个目的地,这种情况下的默认操作(【分发】轮流输出数据到多个目的地,每个目的地得到的是流的子集)往往不是你想要的,所以要注意,因为你一般会使用【复制】,使用【复制】会使得每个目的地里的内容都是全集。
d)便于开发阶段预览数据
5.1
追加流:以先后顺序将两个流的数据合并。要求多个来源要满足:列数相同、列名相同、列类型相同。
6 JavaScript代码
JavaScript代码:
(1)长用来创建JavaScript变量,计算之前流中的数据,保存为新的流,供下游使用,变量自动变成上游数据的新追加列。和【设置变量】控件不同,【设置变量控件】只提供一个唯一的值。
(2)你几乎总是要打开兼容模式,这样可以帮助你写JavaScript代码
(3)JavaScript几乎总是用var定义新的变量,如果要将创建的VAR变量计算并输出到流中,需要手动指定你的这个变量要输出到流:【获取变量】
字符串提取子串:http://blog.csdn.net/calmreason/article/details/48649257
字符串转换为整数:http://www.w3school.com.cn/jsref/jsref_parseInt.asp
字符串替换:http://blog.csdn.net/chenwei160803/article/details/7000225
岗级.setValue(岗级.getString().replace("(专业)","副"));
数字格式化输出为字符串(参考):http://blog.csdn.net/superch0054/article/details/3789458
JavaScript源代码:
//Script here var format = function (number, form) { var forms = form.split('.'); var number = '' + number; var numbers = number.split('.'); var leftnumber = numbers[0].split(''); var exec = function (lastMatch) { if (lastMatch == '0' || lastMatch == '#') { if (leftnumber.length) { return leftnumber.pop(); } else if (lastMatch == '0') { return lastMatch; } else { return ''; } } else { return lastMatch; } } var string = null; string = forms[0].split('').reverse().join('').replace(/./g, exec).split('').reverse().join(''); string = leftnumber.join('') + string; if (forms[1] && forms[1].length) { leftnumber = (numbers[1] && numbers[1].length) ? numbers[1].split('').reverse() : []; string += '.' + forms[1].replace(/./g, exec); } return string.replace("//.$/", ''); }; var no = 'ryxx' + format(MAX_NO_SEC.getInteger(), '000000');
如下使用的时候
会生成如下效果:
7流查询
流查询:提供左连接追加字段的功能,其中右侧被左连接的表通过指定主键与坐标主键相等来连接,另外指定右表中哪些列要被追加到左表
8增加常量
增加常量:给表添加新的常量列,每一行的长量列数据都使用常量填充,记得在表输入之后添加,在表输入之前不可以添加。http://blog.163.com/lfsyhuangaigang@126/blog/static/77436670201403192817833/
9分组
分组:提供比SQL更方便快捷的group by功能,尤其是你分组之后,只想对其中一个求和,其他的只取其中一个的时候!
10排序记录
排序记录:对记录按照指定的列进行排序,通常是其他控件必须的前奏,排序可以指定多个列
11过滤记录
过滤记录:对一列或者多列同时使用BOOL条件,对条件判断为真的记录指定后续步骤,对条件判断为假的记录指定后续步骤。这个步骤通常和其他步骤结合使用,比如替换指定列为常量。
12将字段设为常量
将字段值设置为常量:可以将制定字段的值设置为固定值,通常是一些状态值的设置。
13发送邮件
发送邮件:可以从之前的流中获取流信息,设置好之后就可以发送邮件了。具体实例参考:kettle发送邮件
作业
定时任务的制作
http://blog.csdn.net/calmreason/article/details/49021993复制记录到结果
复制记录到结果:将结果传递到下一个转换中去。这个控件有时候是必不可少的,尤其是多个【转换】或者【作业】搭建一个更大的任务的时候。
14.2
从结果中获取记录:取上一个转换中的数据。
作业和转换:
1 执行每一个输入行
这个选项如果勾选了之后,前面的转换结果有几行这个当前的转换就会执行多少次。
注意:这个设置
转换
字段选择
主要作用(1)是重命名流里面的字段(2)阻止流中的字段进入下一个流程,如果要进入下一个流程要单独选择
主对象树
清空Kettle缓存
清空缓存的好处就是你之前连接了一个【表输出】,但是现在修%2�E6%9s��Xʞ��R�4BA��%2_Q��t�?,z]f��dK-��G����-]2S[yj�����PFh������O�B�q~�e�GpOf�[%��ok��"�mWFo �ś�q9"��16~��[w:��s�����~��B/ A�A�G?F�����G��KB��h!Ş�ɛ��/bq�s�1����k��u3�b})lݏ@�����1T�m1UF�b�f�GL�m���’�”?F?��t.0���z���S{�ɄP5AD��%A�c$l�Gf�ݙ����
U�’�x���R�Ʌ9�*v�,
�M,�!���y�{��2�
$�xd���"��'64�%�*�"��"A5A1%W�Z��%�es�B/ ։s� ��Wo���*h���i�GL1Y�mW� �b�^����t�NI���#��<,�E
相关文章推荐
- kettle中使用js调用java类的方法
- xms/xmx/xss在kette中的调优设置
- kettle中对hive操作时需要知道的东西
- kettle 5.01 连接数据源
- 开源ETL工具--Kettle的简易使用实例
- kettle转换中使用javascript例子整理(1)
- kettle创建数据库资源库,执行SQL语句有两条执行失败
- 使用Java程序调用本地转换盒作业,资源库中的转换和作业(kettle4.2)
- kettle转换中使用javascript例子整理(2)
- Kettle - 生成xml文件
- 解决kettle连接mysql库时缺少驱动的问题
- Kettle 集群(cluster)在多个服务器(windows、linux)上并发执行
- kettle设置远程调试
- 通过java代码来调用kettle的简单实现
- 初学者kettle使用的总结
- ETL工具Pentaho Kettle的transformation和job集成
- kettle学习笔记(一)
- kettle(PDI)解析xml、json等格式数据的方法
- 在kettle里编写javascript代码操作数据
- kettle行转列