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

时间:2024-03-18 22:49:19

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

原始数据如下:

机组编码 用户 岗位
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用多个列拆分来处理数据

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

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

列拆分的属性

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

增加序列属性

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

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

 

记录值合并属性如下:

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

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

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

至此搞定

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