Kettle使用配置及常用组件介绍

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对非堆区分配的内存的最大上限	

数据库连接配置

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

命名参数参数说明
useCompressiontrue在传输时开启数据压缩 ,提高传输效率
rewriteBatchedStatementstrue让数据库重排Insert语句,合并多条插入语句成为一条,提交插入效率
useServerPrepStmtsfalse让数据库重排Insert语句,合并多条插入语句成为一条,提交插入效率

转换

Concat fields

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbBuYXfy-1665626747097)(E:\DocFile\note-document\Image\image-20220904165919890.png)]

值映射

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

在这里插入图片描述

增加常量

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

增加序列

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

字段选择

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

在这里插入图片描述

计算器

可以计算数值

字符串操作

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

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

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

排序&去重

去重之前需要先进行排序

唯一行

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

拆分字段

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

列拆分为多行

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

在这里插入图片描述

行扁平化

列拆分为多行的逆向操作

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

在这里插入图片描述

列转行

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

在这里插入图片描述

在这里插入图片描述

行转列

列转行逆向操作

应用

替换NULL值

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

写日志

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

流程

Switch/case

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

在这里插入图片描述

过滤记录

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

空操作

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

在这里插入图片描述

终止

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

查询控件

数据库查询

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

流查询

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

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

使用方法如下:

在这里插入图片描述

连接控件

合并记录

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

1、identical 新旧数据一致

2、changed 数据发生了改变

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

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

需要先对数据进行排序

在这里插入图片描述

记录集连接

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

统计控件

分组

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

在这里插入图片描述

映射控件控件

映射

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

脚本控件

执行sql脚本

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

Java代码

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

在这里插入图片描述

代码如下:

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

作业

作业项之间连接状态:

在这里插入图片描述

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

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

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


👍 欢迎前往博客主页查看更多内容

👍 如果觉得不错,期待您的点赞、收藏、评论、关注

👍 ​ 如有错误欢迎指正!

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值