我们说kettle是个ETL工具,如果把前面讲的输入控件看成是E,把输出控件看成是L,那么数据转换控件就是T的能力。
数据转换控件就是将抽提的数据按照目标要求进行的合并、分拆、映射、计算、行列转换以及扁平化等清洗转换工作。
一、几种常见的转换控件1、增加常量控件
这个控件容易理解,如果需要将不同的数据进行空间和时间的标识,这需要增加一列进行区分,比如来自不同省份填写的数据,就要加上一个常量省份字段。
2、增加序列控件
经常在excel中可以看见序号列,既可以作为顺序进行计数,也可以作为唯一主键,这个控件给数据增加序号,完成简单的主键。
3、Concat fields控件
如果需要将数据中的多个字段进行合并,就可以使用这个控件。比如可以将三级级联选择的省市县三个字段合并为一个字段。
4、值映射控件
应用设计中不少数据字段都设置为字典映射值,这样的好处是既可以提高查询速度(字符串映射为数字),另外可以不需要修改历史数据,修改字典值就可以数据的修改。如果需要在入库前将文字信息转化为字典值后入库,就可以将数据库中的字典映射关系使用值映射控件完成。
5、字段选择控件
这个控件可以实现字段选择,名称修改,类型转换。
6、计算器控件
计算器控件实际上就是一个函数集合,如果需要对字符串、数字、时间等类型的数据进行算数运算和特殊运算处理,比如日期的加减,就可以使用这个控件。
7、字符串剪切、替换、操作控件
这三个控件主要是针对字符串,实现字符串中的截取、替换、以及去空格、大小写转化等常规操作。
8、去除重复记录和排序控件
字面上就能理解,清洗数据就是去重,按照规则进行排序。
9、唯一行 (哈希值)控件
这个控件非常有用,当我们数据缺少主键时,可以由确定唯一行的多个字段生成哈希值作为数据的主键。
10、拆分字段控件
将一个字段按照指定字符进行拆分成过个字段,比如两个手机号用逗号分开,我们可以拆分为,手机号1,手机号2。
11、列拆分为多行控件
和拆分字段控件不同的是这个控件是按照字段中的多个值拆分成多条记录,其它字段信息为相同的行。
12、行转列控件
根据某个分组字段进行行转列,比如按照省份的数据,转化为每个省名称为一列的数据。
13、列转行控件
是行转列的逆运算控件。
14、行扁平化控件
是列拆分为多行控件的逆运算,可以将分组相同的多条数据中的一个字段数据进行拆分成多个列字段。
掌握这些控件基本能够搞定90%以上的转化任务。
二、excel处理演示1、需求
我们有如下这样的表格,然后按照省份进行数量统计,并将这个省的所有人员合并到一起作为一个字段,转化后的格式为第二张图。
转换图如下:
首先通过excel输入控件获得要转换的数据,然后排序后去重,根据省份分组,分组后按照数量再次排序并生成目标文件输出为excel格式。
排序和去重控件都很好配置,无非是设置字段,但对于分组需要说明一下:
使用聚合类型为“使用,连接同组字符串”的聚合方法,很轻松的实现多个字段的合并。
最终完成的后的excel如图,完全按照我们的转换目标:
如果希望字段姓名中的名字之间用空格,也可以使用字符串替换控件进行替换。另外,也可以使用excel输出控件的设置模板,对数据进行格式设置来美化。
三、关于转换控件的几点说明1、转换控件在数据量较少的情况下很方便的实现很多转换任务,但如果数据量较大时进行的排序和转化会受到java处理性能的影响,建议数据量较大时一定考虑转换控件的性能,可以在获取源数据之前完成去重和排序的操作。
2、我们可以轻松结合转换控件完成既定目标的数据处理,这对于对excel公式不熟,不了解vba的人来说,又多了一种处理手段。通过清晰的逻辑和控件的拖拽完成一个转换任务,后续可以重复调用这个转换任务,完成同类任务工作。
3、有了这些控件只能完成单一模式的转化任务,下个专题我们会介绍流程控件,有了流程控件的配合使用,就可以完成excel的拆分,合并以及复杂的逻辑任务。
其它文档阅读
kettle专题1:一款免费的ETL工具
kettle专题2:数据库操作
kettle专题3:数据从哪里来
kettle专题4:数据的目的地