kettle 行转列 与 列转行

横表与竖表

kettle 行转列 与 列转行_第1张图片
横表
kettle 行转列 与 列转行_第2张图片
竖表

上面两张图是同样数据的两种存储方法,1为横表,2为竖表

容易看出,竖表中的 subject 字段非常重要,这一列的数据去重后为 chinese, math, english ,即横表中的三个字段名,在kettle的行列互转中,这个 subject 字段被称为 Key字段(关键字段)

行转列

将横表转为竖表即为kettle的行转列,其核心为横表的chinese, math, english字段转为了竖表的subject的值,将横表chinese, math, english的数据转为了竖表的grade的值

整体转换

kettle 行转列 与 列转行_第3张图片
  • 两个对象

表输入

kettle 行转列 与 列转行_第4张图片
  • 读取student表,下方视图中可看到当前的数据
  • 行转列操作无需排序

行转列

kettle 行转列 与 列转行_第5张图片
  • Key字段(起个名即可):即Key字段(关键字段)subject,行转列操作后,chinese, math, english三个字段会变成一个新的字段的值,Key字段就是为这个新字段起个名称
  • 字段名称:填写横表需要行转列的字段,在这写的字段会从原来的字段名转变为一列数据,这列数据的列名为上面设置的Key字段名。
  • Key值(不重要,一般与字段名称一致即可):转为列之后更改字段名称
  • Value字段(不重要,起个名即可):行转列的那些字段之前是有很多数据的,给这些数据起个名字,名字都一致即可,多了也没用
  • 另外,kettle的行转列对象有个bug,在对象窗口的左上角写的可能是列转行,无视就好

列转行

将竖表转为横表即为kettle的列转行,其核心为竖表的Key字段(关键字段)的数据聚合后成为横表的字段名,即subject的chinese, math, english,本例中聚合字段为subject, studentID

表输入

  • 读取student表
  • 所有聚合字段必须先排序

列转行

kettle 行转列 与 列转行_第6张图片
  • 关键字段:即关键字段subject,列转行的核心字段,此字段会进行聚合操作,聚合结果作为之后横表的新字段名
  • 分组字段:关键字段的数据(chinese, math, english)有重复,它的重复是有规律的,即每增加一个学生(studentID),其数据一般就会重复一次,其中决定它重复的字段studentID就是分组字段。此项可以为空,如果为空,那么转换前有多少行数据,转换后就有多少个字段(差不多)。
  • 目标字段:关键字段的数据去重后(chinese, math, english)变成字段名,给这些字段名起个别名,一般与关键字值一致即可
  • 数据字段:在竖表中,有一个与关键字段一一对应的数据字段,它的字段名填在这,本例中为grade
  • 关键字值:关键字段的数据去重后(chinese, math, english)即为关键字值
  • 聚合:列转行核心是对关键字段的聚合操作,除关键字段与分组字段之外,其他字段的聚合方式在这里选择,比如本例选择的最大值,id和name就会在聚合后取最大的一个值

你可能感兴趣的:(kettle 行转列 与 列转行)