1、Row Normaliser,将一行多列数据转换为多行一列数据。

  

  输入数据流:

      

    

  计算器配置如下:

    

  与计算器相连接的excel输出如下:

    

  Row Normaliser,设置如下,

    

  与Row Normaliser连接的Excel输入如下

    

2、Split field to rows 字段拆分,一个单元拆分成多行

  

  输入流字段:

    

  Split field to rows 设置:

    

  结果展示  

    

3、拆分字段,将一个字段拆分成多个,一个字段拆分成多列

  

  Generate Rows输入流,

    

  拆分字段,设置,一个单元拆分成三列

    

  拆分字段连接的Excel输出如下,一行三列转换成三行一列

    

  Row Nomaliser配置,及Excel输出,

    

    

4、行转列,一列多行转变为多列一行,前面xml部分已经用过。

总结: 行转列:一列多行转变为多列一行,需要分组字段及标识,以xml解析为典型

    Row Normaliser:将一行多列数据转换为多行一列数据。

   Split field to rows 字段拆分,一个单元拆分成多行。

    拆分字段,一个单元拆分成三列

kettle中denormalizer(列转行)的使用

需要列转行的数据分为两种:有主键和无主键,先说无主键的

转以前的内容

转以后的内容

看到了吧,转过来了,好来张整体流程图

开始分析:

第一个图标打开后为

这是第一步里面主要的一步,这里配置好了就可以进行第二步了。

因为没有主键,所以要给城市那一列添加一个相同的主键,这样数据在转成行的时候就可以转到同一行了,如果主键不同,转成行后,每一个主键为一行,这不是我们想要的。

打开列转行的界面为

图中的dummy是我们前一步添加的常量,关键字段选择城市,关键字段值就为城市的value,数据字段为人数的key,所谓目标字段就是在转成行以后你希望看到的名字。

打开结果输出图标

好了,到这里就都配置完了,点执行按钮,你就会看到文中开头的结果了。

有主键的就不说了,那个比无主键的要简单,因为有主键的数据直接转就行,如果不明白可以留言。

转载于:https://www.cnblogs.com/pejsidney/p/8984133.html

kettle——入门操作-行列转换(行转列,字段拆分)相关推荐

  1. SQL查询案例:行列转换[行转列, 使用 CASE WHEN 处理]

    行列装换--使用CASE WHEN 测试表与测试数据 CREATE TABLE TestRowCol ( name   VARCHAR(10), place VARCHAR(10), valuw IN ...

  2. Kettle入门操作处理excel数据

    kettle入门操作一:实现对excel表格转换 实验要求: 用Kettle完成下列实验,结果存储到MySql(或者CSV) 已知excel文件,包含列(姓名,年龄,身份证号码,性别,挂号日期时间,门 ...

  3. kettle——入门操作(行扁平化)

    行扁平化,多行记录只有一个字段不同时,将不同字段转变为列.如下,最后解释一下原理及设计不足之处. 第一种情况,数据特点,flag为a的有两行,flag为b的有三行 行扁平化设置,扁平化后的目标字段,输 ...

  4. python xlwings追加数据_Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法...

    一.关于整行整列数据读写的问题 在<Python学习随笔:使用xlwings读取和操作Excel文件>介绍了一次读写整行和整列的方法,整行数据写入时可以简单将读取的赋值语句交换一下等号左右 ...

  5. oracle拆分字段为多行,一句话实现字段拆分成多行

    把表中某字段根据分隔符拆分成N个字符串后,再用这N个字符串把这一行演变成N行. 用SQL来解决这个问题非常烦琐! SQL里没有提供集合对象,不能提供根据拆分后的字符串集合把一行变成多行的操作.解决这个 ...

  6. C#动态操作DataTable(新增行、列、查询行、列等)

    public void CreateTable()         {             //创建表             DataTable dt = new DataTable();    ...

  7. Kettle入门--作业和转换的使用

    本来想在centos7下部署的,发现因为java版本的问题,无法成功部署,无奈,转到windows平台(后来找到解决方法了,在centos7系统下yum install webkitgtk* -y 就 ...

  8. python openpyxl 操作excel 插入行,列

    import openpyxl wb = openpyxl.load_workbook("D:\村数据\实验.xlsx") ws = wb["Sheet1"] ...

  9. mysql拆分字符串后行转列_mysql行转列(拆分字符串场景)

    一对多没有建立中间表的时候经常会采用分隔符的形式将"多"存储在"一"的一个字段里,这样做的代价是无法向一对多的时候那样直接关联查询,一般采用在程序中分割后分别查 ...

最新文章

  1. 实战之网马解密之shellcode篇
  2. ★如何证明自己不是精神病?
  3. 如果我们能够数字化,那么我们能够give away
  4. 贪心问题JAVA_java背包问题(贪心法)
  5. 「数据库系列一」为什么要用数据库?
  6. 追加 java,收藏 java追加写文件的方法
  7. appium + python 搭建
  8. python显示文件夹图片_如何显示文件夹中的随机图片(Python)
  9. 都道业务提升坑大事儿多,但英特尔云方案却说“简单”
  10. (二)双线性插值python实现
  11. 精选30个优秀的CSS技术和实例
  12. 程序员最艰巨的十大任务
  13. Sublime Text 3中配置编译和运行Java的两个方法
  14. 1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。
  15. 蓝牙模块 HC-06
  16. html5图片在线剪辑,Web端裁剪图片方法
  17. 全球排名前500的网站都是做什么的
  18. php的seeder是什么,Laravel学习笔记之Seeder填充数据小技巧
  19. db2的SQL1005N 在本地数据库目录或系统数据库目录中已经存在数据库别名
  20. mtp android7,Android7.0修改手机型号,mtp名称等

热门文章

  1. 【Linux】一步一步学Linux——VMware虚拟机三种网络模式详解(07)
  2. linux测试怎样看,linux入门篇:如何查看centos版本
  3. java stw_JVM STW里的no vm operation是怎么发生的
  4. java连接linux服务器执行shell命令(框架分析+推荐)
  5. 用友t3服务器文件丢失,服务器系统损坏数据恢复
  6. booloader编写
  7. 5 Git 分支 - 远程分支
  8. C++ std::condition_variable wait() wait_for() 区别
  9. 使用钉钉接收gitlab仓库的推送消息
  10. 将有序数组转为二叉搜索树