kettle 行转列 与 列转行

横表与竖表

横表
竖表

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

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

行转列

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

整体转换

  • 两个对象

表输入

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

行转列

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

列转行

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

表输入

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

列转行

  • 关键字段:即关键字段subject,列转行的核心字段,此字段会进行聚合操作,聚合结果作为之后横表的新字段名
  • 分组字段:关键字段的数据(chinese, math, english)有重复,它的重复是有规律的,即每增加一个学生(studentID),其数据一般就会重复一次,其中决定它重复的字段studentID就是分组字段。此项可以为空,如果为空,那么转换前有多少行数据,转换后就有多少个字段(差不多)。
  • 目标字段:关键字段的数据去重后(chinese, math, english)变成字段名,给这些字段名起个别名,一般与关键字值一致即可
  • 数据字段:在竖表中,有一个与关键字段一一对应的数据字段,它的字段名填在这,本例中为grade
  • 关键字值:关键字段的数据去重后(chinese, math, english)即为关键字值
  • 聚合:列转行核心是对关键字段的聚合操作,除关键字段与分组字段之外,其他字段的聚合方式在这里选择,比如本例选择的最大值,id和name就会在聚合后取最大的一个值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.数据库 1.创建数据库create database [if not exists] db_name [cha...
    PASSssss阅读 3,826评论 0 0
  • 一、sql语句 ~~sql语句书写顺序: select from where groupby having ord...
    devstrongzhao阅读 6,382评论 1 2
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    EndEvent阅读 6,067评论 2 3
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    fly5阅读 3,025评论 0 0
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    未央_m阅读 2,286评论 0 0

友情链接更多精彩内容