4.1.3字段清理
环境配置:
安装kettle,mysql,
并将mysql-connector-java-5.1.48-bin.jar文件放到指定路径(data-integration\lib
路径)下,导入myemployees数据库。
安装版本:kettle
Mysql :mysql-connector-java-5.1.48.tar.gz,
目录:
1“拆分字段成多行”步骤
2“拆分字段”步骤和“合并字段”步骤
3“字段选择“步骤
关于字段清理概念
关于字段清理,我们这里简介四个常用步骤:“拆分字段成多行“,”拆分字段“,”合并字段“,”字段选择“。说明如下:
(1)“拆分字段成多行“的说明如下
①将一行的记录拆分成多行记录,新的记录里有一个新的字段,由拆分的子字符来填充
②拆分方式可根据分隔符进行拆分,其中分隔符支持正则表达式
③被拆分的源自段仍保留在新的记录里
(2)“拆分字段“的说明如下
①将指定的输入字段根据分割符拆成多个字段
②被拆分的字段将不复存在
③分隔符不支持正则表达式
(3)“合并字段“的说明如下
①将多个字段用分隔符连接起来输出到一个新的字段
②被合并的字段在新的记录行里被原样保留
(4)“字段选择”的说明如下
①可以对输入流的字段做选择,删除,重命名等操作,还可以根据更改字段数据类型和精度等,这些功能被组织成3个分类:“选择和修改”,“移除”,“元数据”,
②在“选择和修改”选项卡,可以选择要输出的字段,修改字段名和数据类型等
③在“移除”选项卡,选择的字段将在输出里被删除。这里要注意,因为删除字段后字段的顺序在内部发生了变化,这样会减慢运行的速度。
④在“元数据”选项卡,可以重命名输入字段,也可以将其转换为不同的数据类型,还可以更改长度和精度等。
下面来通过示例来进行讲解:
1“拆分字段成多行”步骤
(先看一下结果截图)
新建一个转换,命名为4.1.3.字段清理,同样使用“Data Grid”步骤作为输入,设计一个
其中,“城市”字段包含多个城市名,现在希望按每个城市拆分成多行,这里会用到“split filed to rows”步骤。在这里,我们设置要拆分的字段“field to split”为“城市“,新字段“”New field name “ 设置成“城市New”。这里将分隔板设置成逗号, 假设分隔符同时由中英文分号,中英文逗号,顿号,这时可以将分隔符设成如下正则表达式:[,,;;、](这个步骤的分隔符是支持正则表达式)
2“拆分字段”步骤和“合并字段”步骤
先看结果图(2个,一个拆分字段,一个合并字段)
先来看“拆分字段步骤”,该步骤将一个字段拆分成多个字段,数据行数不会发生变化。
转换依然是4131拆分字段成多行(在一个转换里,只需调整运行与否的蓝色线,灰色表示不运行),新建“Split Fields”步骤,并创建一个“Data Grid”步骤到该步骤的跳
现在开始设置“Split Fields”步骤,同样选择要拆分的字段为“城市”;分隔符设为逗号;
设置4个拆分之后新字段名为:“城市1” “城市2” “城市3” “城市4”(这个步骤的分割符不支持正则表达式)
运行转换
前面介绍了“合并字段”步骤的功能,可以看成“拆分字段”步骤的逆操作,可直接使用“Split Fieds”步骤结果作为“Concat Fields”步骤的输入,只需对“Split Files”步骤新建一个跳(Hop)到“Concat fields”步骤,数据分发方式选择复制(copy)
3“字段选择“步骤
结果图先来看一下把
在转换里 设置元数据,如图
对“Date Grid”步骤输入一组示例数据,如图
现在进行4个操作,
1删除“Age”
2将“Birth”日期格式改成“yyyy-MM-dd
3将”sex“字段名修改成”Gender“,并将”Gender“字段移到”Name“字段后面
4将“salary“字段的数据类型改成浮点型数据并保存两位小数
开始操作
1删除“Age”
2将“Birth”日期格式改成“yyyy-MM-dd
3将”sex“字段名修改成”Gender“,并将”Gender“字段移到”Name“字段后面
4将“salary“字段的数据类型改成浮点型数据并保存两位小数
结果图: