Kettle合并记录、全局参数和局部参数、常量传递、转换命名参数
一、Kettle合并记录
合并记录是用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。
标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种。
- identical:旧数据和新数据一样
- changed:数据发生了变化
- new:新数据中有而旧数据中没有的记录
- deleted:旧数据中有而新数据中没有的记录
关键字段:用于定位两个数据源中的同一条记录。
比较字段:对于两个数据源中的同一条记录,指定需要比较的字段。
合并后的数据将包括旧数据来源和新数据来源里的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用一个标示字段,来指定新旧数据的比较结果。
注意:
旧数据和新数据需要事先按照关键字段排序。
旧数据和新数据要有相同的字段名称。
合并记录设置:
studentname用于定位两个数据源中的同一条记录。
旧数据源数据如下:
新数据源数据如下:
新数据去掉了studentname为张飞的数据,增加了studentname为诸葛亮的新数据,修改了studentname为赵云的数据
合并记录后数据情况如下:
过滤记录设置
只保留flagfield为new的数据
过滤后数据如下:
二、全局参数和局部参数
1.全局参数
全局参数定义是通过当前用户下.kettle文件夹中的kettle.properties文件来定义的。
定义方式是采用键=值对方式来定义,如:start_date=20201016
注意:在配置全局变量时需要重启Kettle才会生效。
2.局部参数
局部参数变量是通过"Set Variables"与"Get Variables"方式来设置。
注意:在"Set Variables"时在当前转换当中是不能马上使用,需要在作业中的下一步骤中使用。
3.参数的使用
Kettle中参数使用方法有两种:一种是%%变量名%%,一种是${变量名}。
注意:在SQL中使用变量时需要把“是否替换变量”勾选上,否则无法使变量生效。
三、常量传递
常量传递就是先自定义常量数据,在表输入的SQL语句里面使用?来替换。
注意:?号的替换顺序就是常量定义的顺序。
表输入设置
获取常量:得到数据最早时间
表输入2设置:
根据得到的时间常量参数,拉出大于时间常量参数的数据
四、转换命名参数
转换命名参数就是在转换内部定义的变量,作用范围是在转换内部。
在转换的空白处右键,选择转换设置就可以看见。
转换命名参数设置
获取转换命名参数的值