Kettle使用_27 行转列与列转行方法汇总
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Kettle使用_27 行转列与列转行方法汇总,希望能够帮助大家进步!!!
需求:通过kettle实现行列转换与列转行。
解决方法:主要通过排序记录、行专列、列转行、行扁平化组件解决。
Previous work:
这里的数据是学生成绩数据和员工数据,详细数据见文末的补充部分。
场景一(科目名和分数分别算一列):
Step1:新建转换
Step2:拖个文本文件输入,该组件位于转换的输入分类下。其中Student.txt的内容见下:
配置文件:
配置内容:
配置字段(这里的group对应原始数据里的name、score对应Result):
Step3:拖个排序记录组件,该组件位于转换的转换分类下,通过SHIFT连接文本文件输入与该组件并配置。
Step4:拖个列转行(实际是行转列),该组件位于转换的转换分类下。通过SHIFT连接排序组件与当前组件,并配置行转列组件。
配置如下:
Step5:拖个文本文件输出,该组件位于转换的输出分类下。SHIFT连接行转列组件与当前组件,并配置该组件见下:
配置文件:
配置字段:
Step6:保存运行验证转换。结果见下:
场景二(科目名和分数合并到新列里)之方法一(关键值利用group字段):
这里主要在Step4有区别,配置见下:
Step5文件输出时:
执行结果:
场景二(科目名和分数合并到新列里)之方法二(关键值直接手动填写,分组字段为name即上文的group字段):
这里主要在Step4有区别,配置见下:
执行结果:
场景二(科目名和分数合并到新列里) 之方法三(通过行扁平化),配置见下:
执行结果:
场景二(合并列)之方法四(通过聚合函数),数据和配置见下:
行转列(聚合函数方式配置):
执行结果;
场景三,列转行:
这里拖个列转行组件(该组件位于转换的转换分类下),并配置见下:
原始数据:
执行结果:
完整流程示意:
补充部分
详细数据见下:
多行的数据见下:
Name key Subject Result
张冠 0 语文 73
张冠 1 数学 83
张冠 2 物理 93
张冠 3 英语 63
李戴 0 语文 74
李戴 1 数学 84
李戴 2 物理 94
李戴 3 英语 61
叶公 0 语文 59
叶公 1 数学 32
叶公 2 物理 90
叶公 3 英语 45
多列的数据见下:
Name Studentid chinese math physics english
张冠 1 73 83 93 63
李戴 2 74 84 94 61
叶公 3 59 32 90 45
员工数据
department year month staff src
市场部 2019 1 100 1
市场部 2019 1 200 2
市场部 2019 2 200 1
市场部 2019 3 400 1
市场部 2019 3 500 2
市场部 2019 3 600 3
技术部 2019 1 120 1
技术部 2019 1 240 2
技术部 2019 2 150 3
技术部 2019 2 120 1
技术部 2019 2 240 2
技术部 2019 3 300 1
产品部 2019 3 100 1
产品部 2019 3 200 2
今天文章到此就结束了,感谢您的阅读,Java架构师必看祝您升职加薪,年年好运。