接kettle学习知识总结(一)

【注意事项】

1、  如果kettle 转化过程中,要将一张表中数据转化到另一张不同的数据结构表中,最好在进行“表输入”或者“插入/更新”前加入字段选择插件,通过字段选择中的“列映射”,将A表中同类型字段映射到B表中。

2、如果要在SQL语句中引用系统变量使用${xxx}形式,此外还要将“替换SQL语句中里的变量”复选框勾选上,这样在执行的过程中才能正确替换系统变量。

3、  如果在js脚本中系统自带函数不会使用,可以通过鼠标右键点击“Sample”产看函数实例。

4、在kettle开发过程中,尽量使用相对路径,而不是用绝对路径,并将路径参数设置到系统的变量中,这样即便后期对目录结构造成较大的改动,只会对kettle代码产生较小的影响。

5、如果相对已经设置好的表输出——Database field进行设置,首先要将“Specify database fields”复选框进行选中。才能修改。

6、  表输出中“剪裁表”复选框,作用相对先将表中原有内容全部清除,然后重新添加数据。

7、  如果想将日志输出到kettle日志控制台中,要使用utility中的“write to log”工具。否者将不能打印各个步骤执行过程中的步骤。

8、  对于“插入/更新”插件

如果不填写查询关键字参数,既可以实现插入操作

如果填写查询关键字插件,实现的根据查询条件更新数据(注:必须将“update”属性设置为“Y”)

9、  对于kettle中定时插件,在执行时会一直占用某个shell,只有当执行完成之后kettle的定时器才会退出。所以我们在项目中使用linux 定时插件Crontab。

kettle循环控制方式设置:

Select_Count_IALClaim_TRG 转化内容如下图:将所有的表输入的查询结果复制到结果中。

循环控制器配置,如图:

Deal_IALClaim_fr_IALClaim_TRG 转化步骤,为要循环体中主要循环执行的内容

【基础知识】

Kettle 分为两部分Job(作业) 和Transaction(转换)

  • Job 的执行可以通过kitten 组件
  • Transaction的执行可以通过pan 组件

 

输入组件中是将所有查询后获取到的数据全部转给下一个节点使用,而不是一条数据执行到尾节点后,在从新执行下一条数据。

数据有两种发送形式:

分发:从数据源依次发送到下一个节点

复制:将数据源的所有结果全部发送到下一个节点

【注意事项】

1、  Kettle中时间查询使用的格式为yyyy/MM/dd HH:mm:ss。但是在db2中查询条件中使用的时间格式是yyyy-MM-dd HH:mm:ss,所以在SQL语句中的查询条件必须统一格式为“yyyy-MM-dd HH:mm:ss”。这样才能正确查询。

 

2、  在SQL语句中时间参数必须使用单引号或者双引号括起来,否则SQL语法正确。

 

3、  在生成错误文件时,如果不想每次执行都创建一个文件,需要把“Don not create file at start ”复选框勾上,这样就不会每次执行都生成文件了。

4、  对于在kettle中使用set variables设置的参数,使不能在javaScript中调用的。

 

5、  如果想要让执行改变为并行,使用“Launch next entires in parallel”后边的整个执行过程为并行方式。

改为并向后kettle图形界面显示如下