Kettle用多个列拆分来处理数据

在导入客户数据时,遇上了一个问题

原始数据如下:

机组编码用户岗位
JY01罗启先、杭朝文机长、车间副主任
JY02张后伟机长
JY03张开林、王松机长、副手

其中用户和岗位是一一对应的,希望转换后得到以下内容

机组编码用户岗位
JY01罗启先机长
JY01杭朝文车间副主任
JY02张后伟机长
JY03张开林机长
JY03王松副手

用kettle里的列拆分为多行组件是可以把数据拆成多行的,但现在是有两列需要拆成多行,再重新拼接,所以考虑先单独做拆分,再用记录集连接控件进行连接,但发现这么直接拆分后再连接的后果,就是会多出许多数据,比如变成

机组编码用户岗位
JY01罗启先机长
JY01罗启先车间副主任
JY01杭朝文机长
JY01杭朝文车间副主任
...  

因此,考虑引入序列组件,就是先分拆成以下两个表格

机组编码用户序号
JY01罗启先1
JY01杭朝文2
JY02张后伟3
机组编码岗位序号
JY01机长1
JY01车间副主任2
JY02机长3

这样在连接时候,用机组编码+序号的方式就可以正常拼接出数据了

最终的kettle流程图如下:

其中自定义常量数据如下:

列拆分的属性

增加序列属性

注意,由于kettle里的序列是全局的,在这里计数器名称必须起一个值,而另一个序列的计数器名称起另一个值,否则序列号在第一个处理完后,第二个序列号的起始序列号就不是从1开始了

 

记录值合并属性如下:

最终的输出结果,如果用输出文本,则是这种格式

至此搞定

不知道还有没有其它的好方法,希望有更好的意见

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值