Kettle

启动:双击spoon.bat

参数配置

在使用Kettle之前,可以根据自己电脑的配置对kettle进行参数配置,将会极大提高Kettle的执行效率

内存配置

在kettle安装目录下找到启动文件Spoon.bat,右键编辑,在文件中查找PENTAHO_DI_JAVA_OPTIONS

# 默认值
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
# 修改值(根据自己电脑配置修改)
"%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS= "-Xmx4096m" "-XX:MaxPermSize=4096m"
# 参数详解
# "-Xms4096m":配置java虚拟机堆区内存初始内存分配的大小 未配置
# "-Xmx4096m":配置java虚拟机堆区内存可被分配的最大上限
# "-XX:MaxPermSize=4096m":配置java对非堆区分配的内存的最大上限

数据库连接配置

在进行数据读和写操作的时候,可以对数据库连接进行配置,可以让数据库操作效率更高

命名参数


参数说明

useCompression

true

在传输时开启数据压缩 ,提高传输效率

rewriteBatchedStatements

true

让数据库重排Insert语句,合并多条插入语句成为一条,提交插入效率

useServerPrepStmts

false

让数据库重排Insert语句,合并多条插入语句成为一条,提交插入效率

转换

Concat fields

字段拼接,如:将lastName与firtName拼接返回

kettle 使用yarn kettle怎么配置_数据库

值映射

可以将源字段中使用到的枚举值映射为value,如:数据库中性别存储的为1,2输出显示为男,女

kettle 使用yarn kettle怎么配置_jvm_02

增加常量

在输出的结果中增加一列,固定值

增加序列

在输出的时候增加一列自增值,可设置自增步长

字段选择

可以删除不需要的字段或者将字段改名为自己想要的名称

kettle 使用yarn kettle怎么配置_jvm_03

计算器

可以计算数值

字符串操作

字符串剪切,对字符串进行剪切

字符串替换,可以使用正则表达式对字符串进行替换

字符串操作,可以去除字符串左右两边空格,转换大小写等

排序&去重

去重之前需要先进行排序

唯一行

对每一行创建一个哈希值,进行去重,效率更高

拆分字段

把字段按照分隔符拆分成两个或多个字段,需要注意,原字段会消失

列拆分为多行

将指定字段根据分隔符拆分为多行,其他字段复制,示例如下图:

kettle 使用yarn kettle怎么配置_jvm_04

行扁平化

列拆分为多行的逆向操作

前置条件:1、需要先排序;2、第个分组的数据条数要保持一致,如下图,每种数据条数都是3条

kettle 使用yarn kettle怎么配置_kettle 使用yarn_05

列转行

列转行 之前必须按照分组字段进行排序,实现效果:

kettle 使用yarn kettle怎么配置_kettle 使用yarn_06

kettle 使用yarn kettle怎么配置_kettle 使用yarn_07

行转列

列转行逆向操作

应用

替换NULL值

将数据中的Null值替换成其他值

写日志

主要是调试时使用,可以将数据流中每行数据打印到控制台

流程

Switch/case

利用一个字段的数据的不同值,让数据流从一路到多路,示例如下将相同部门的数据输出到相同的excel中,即,将以下一个excel输出到三个excel中

kettle 使用yarn kettle怎么配置_开发语言_08

过滤记录

类似于if/else,可以根据条件将流程分为两步

空操作

什么都不做,一般作为数据流的终点,如上一步过滤记录中不满足条件的流程可以连接到空操作中

kettle 使用yarn kettle怎么配置_java_09

终止

如果数据流到这个控件,那么整个程序会终止并打印报错信息,一般用来校验数据,调试程序

查询控件

数据库查询

类似于mysql中的多表关联查询,使用kettle可以实现跨数据库关联查询

流查询

流查询是将两条数据流中的数据根据字段做等值匹配,流查询在查询前会把数据加载到内存中,只能做等值匹配

相较与数据库查询只能左连接,流查询可以选择以某个连接为主,也就是说可以实现右连接

使用方法如下:

kettle 使用yarn kettle怎么配置_开发语言_10

连接控件

合并记录

比较两个数据流中数据的差异,比较结果有以下几种

1、identical 新旧数据一致

2、changed 数据发生了改变

3、new 旧数据没有, 新数据有

4、deleted 旧数据有,新数据没有

需要先对数据进行排序

kettle 使用yarn kettle怎么配置_java_11

记录集连接

可以对两个步骤中的数据进行左连接,右连接,内连接,外连接等,在使用连接之前需要先对数据进行排序,而且排序字段需要是两个表关联的字段

统计控件

分组

类似于Group By,分组前最好先进行排序,可以对数据进行分组,统计个数,计算平均值等操作

kettle 使用yarn kettle怎么配置_kettle 使用yarn_12

映射控件控件

映射

类似于Java中的方法,在转换中可以调用其他转换,映射输入规范类似于入参,映射输出规范类似于出参

使用映射实现数据库左连接:

kettle 使用yarn kettle怎么配置_开发语言_13


kettle 使用yarn kettle怎么配置_数据库_14


kettle 使用yarn kettle怎么配置_jvm_15

脚本控件

执行sql脚本

选择数据库连接,填写自定义sql,可以根据之前的步骤获取的数据当做参数

Java代码

当一些需求Kettle自带组件不能满足时,可以使用自定义Java代码进行实现,如:当id大于100,则将名称改为100,如下图:

kettle 使用yarn kettle怎么配置_数据库_16

代码如下:

// 获取值
Integer id = Integer.valueOf(get(Fields.In,"id").getString(r));
String name = "";
if(id>100){
    name = "100";
}
// 设置值
get(Fields.Out,"name").setValue(r,name);

作业

作业项之间连接状态:

kettle 使用yarn kettle怎么配置_数据库_17

小锁:无论上一个作业项执行结果如何,下一个任务都会执行

对号:只有上一个作业项结果为真,或者执行成功才会执行下一个任务

错号:只有上一个作业项执行结果为假,或者执行失败的时候,才会执行下一个任务