Kettle: 合并记录

【合并记录】控件能对两个输入流中的数据进行合并。合并之后的数据会比原始的数据在结构多一个标志字段(默认名为:flagfield,通常【合并记录】之后都会有【字段选择】操作,原因就在此)。使用该转换步骤时要注意,传入合并记录的两个输入数据流的字段名,字段位置等必须完全一致,否则会报错。

为了说明【合并记录】的作用,构建以下两个csv文件(1_a.csv和1_b.csv),其具体内容如下:

  • 1_a.csv

  • 1_b.csv

创建如下转换:

配置【CSV文件输入】(【CSV文件输入2】的配置与此类似,只不过【CSV文件输入】加载文件1_a.csv,而【CSV文件输入2】用来加载1_b.csv),具体配置信息如下:

配置【合并记录】控件,具体配置信息如下:

运行该转换。在Preview Data中可以看到最后形成的数据。具体如下:

对上述【合并记录】控件中的配置信息进行修改,加入“数据字段”,具体如下:

重新运行该转换,得到的结果如下:

比较两次实验结果可以发现:

  • 当旧数据源中有该数据而新数据源中没有该条记录时,flagfield为deleted.
  • 当新数据源中有而旧数据源中没有该条记录时,flagfield为new。
  • 当数据在新旧数据源中都出现时,并且在“数据字段”中指定的字段的值完全相同(比如id为9的记录,在1_a.csv和1_b.csv中完全相同) 则标记identical;
  • 如果数据在两个数据源中都出现,但在“数据字段”中指定的字段的值已经发生了变化(比如id为7和8的记录),则flagfield为changed(在结果1中并没有出现changed,所以只有指定了数据字段时,该flagfield值才会出现)
  • 当数据在新旧数据源中都出现时,无论是否设置数据字段,最后的结果都只保留新数据中的数据,这才是数据源新旧之分的真正含义。

参考资料:

1. https://wiki.pentaho.com/display/EAI/Merge+rows

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值