likes
comments
collection
share

数据抽取工具 kettle转换

作者站长头像
站长
· 阅读数 35

转换控件

转换控件是转换里面的第四个分类,转换控件也是转换中的第三大控件,用来转换数据。转换是ETL里面的T(Transform),主要做数据转换,数据清洗的工作。ETL整个过程中,Transform的工作量最大,耗费的时间也比较久,大概可以占到整个ETL的三分之二。

由于Kettle中自带的转换控件比较多,本文只挑出开发中经常使用的几个转换控件来进行讲解,详情如下图。

数据抽取工具 kettle转换

Concat fields

转换控件Concat fields,顾名思义,就是将多个字段连接起来形成一个新的字段

数据抽取工具 kettle转换

本章节任务:将staff表的firstname和lastname拼接起来,形成name字段,然后再将数据插入到新表emp中

提示:如果涉及到中文乱码问题,请参考资料:Mysql中文乱码问题

数据抽取工具 kettle转换

值映射

值映射就是把字段的一个值映射成其他的值。在数据质量规范上使用非常多,比如很多系统对应性别sex字段的定义不同。所以我们需要利用此控件,将同一个字段的不同的值,映射转换成我们需要的值。

1. 选择映射的字段

2. 还可以自定义映射完以后的新字段名

3. 可以设置不匹配时的默认值

设置映射的值

数据抽取工具 kettle转换 本章节任务:将staff表的sex字段,映射成男or女,然后再插入到emp表中。

数据抽取工具 kettle转换

增加常量&增加序列

增加常量就是在本身的数据流里面添加一列数据,该列的数据都是相同的值。

增加序列是给数据流添加一个序列字段,可以自定义该序列字段的递增步长。

数据抽取工具 kettle转换

数据抽取工具 kettle转换

本章节任务:给表staff的数据加一列固定值slary和一个递增的number序列,在控制台预览下数据即可,不用输出。

数据抽取工具 kettle转换

字段选择

字段选择是从数据流中选择字段、改变名称、修改数据类型。

数据抽取工具 kettle转换

数据抽取工具 kettle转换

数据抽取工具 kettle转换 本章节任务:在上一章节的转换之后,添加字段选择控件,移除掉firstname字段,并且将lastname重命名为name,将slary重命名为money,然后再次预览数据,查看数据的变化

数据抽取工具 kettle转换

计算器

计算器是一个函数集合创建新的字段,还可以设置字段是否移除临时字段)。我们可以通过计算器里面的多个计算函数对已有字段进行计算,得出新字段。

数据抽取工具 kettle转换

数据抽取工具 kettle转换 本章节任务:在上一节的任务基础之上,添加计算器控件对money和number字段进行相乘,得出新字段acount,然后预览数据。

数据抽取工具 kettle转换

数据抽取工具 kettle转换

字符串剪切&替换&操作

转换控件中有三个关于字符串的控件,分别是剪切字符串,字符串操作,字符串替换。

剪切字符串是指定输入流字段裁剪的位置剪切出新的字段。

数据抽取工具 kettle转换 字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段。

数据抽取工具 kettle转换

字符串操作是去除字符串两端的空格和大小写切换,并生成新的字段。

数据抽取工具 kettle转换 本章节任务:在上一节任务之后,添加剪切字符串,字符串替换,字符串操作三个控件,利用这三个控件分别对sex字段进行剪切,替换,操作(去空格,转大小写)

数据抽取工具 kettle转换

数据抽取工具 kettle转换

排序记录&去除重复记录

去除重复记录是去除数据流里面相同的数据行。但是此控件使用之前要求必须先对数据进行排序,对数据排序用的控件是排序记录,排序记录控件可以按照指定字段的升序或者降序对数据流进行排序。因此排序记录+去除重复记录控件常常配合组队使用。

数据抽取工具 kettle转换

数据抽取工具 kettle转换 本章节任务:利用excel输入控件读取input目录下的06_去除重复记录.xlsx,然后对里面重复的数据进行按照id排序并去重

数据抽取工具 kettle转换

唯一行(哈希值)

唯一行(哈希值)就是删除数据流重复的行。此控件的效果和(排序记录+去除重复记录)的效果是一样的,但是实现的原理不同。排序记录+去除重复记录对比的是每两行之间的数据,而唯一行(哈希值)是给每一行的数据建立哈希值,通过哈希值来比较数据是否重复,因此唯一行(哈希值)去重效率比较高,也更建议大家使用。

数据抽取工具 kettle转换 本章节任务:利用唯一行(哈希值)控件对06_去除重复记录.xlsx去重,并且查看最后输出的数据跟上个任务有何区别

数据抽取工具 kettle转换

拆分字段

拆分字段是把字段按照分隔符拆分成两个或多个字段。需要注意的是,字段拆分以后,原字段就会从数据流中消失。

数据抽取工具 kettle转换

本章节任务:将07_拆分字段.xlsx里面的NBA球星的姓名,拆分成姓跟名。

数据抽取工具 kettle转换

列拆分为多行

列拆分为多行就是把指定字段按指定分隔符进行拆分为多行,然后其他字段直接复制。具体效果如下图:

数据抽取工具 kettle转换

数据抽取工具 kettle转换 1. 选择要拆分的字段

2. 设置合适的分割符

3. 设置分割以后的新字段名

4. 选择是否输出新数据的排列行号,行号是否重置

数据抽取工具 kettle转换 本章节任务:对08_列拆分为多行.xlsx的数据按照hobby字段进行拆分为多行,然后将新数据输出到excel文件中,查看数据。

数据抽取工具 kettle转换

行扁平化

行扁平化就是把同一组的多行数据合并成为一行,可以理解为列拆分为多行的逆向操作。但是需要注意的是行扁平化控件使用有两个条件:

1) 使用之前需要对数据进行排序

2) 每个分组的数据条数要保证一致,否则数据会有错乱

数据抽取工具 kettle转换 1. 选择扁平化的字段

2. 填写目标字段,字段个数跟每个分组的数据一致

本章节任务:将09_行扁平化.xlsx的数据按照hobby字段进行扁平化

数据抽取工具 kettle转换

列转行

列转行,顾名思义多列转一行,就是如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据的过程。具体效果如下图:

数据抽取工具 kettle转换

数据抽取工具 kettle转换 注意:列转行之前数据流必须按照分组字段进行排序,否则数据会错乱!

数据抽取工具 kettle转换 1. 关键字段:从数据内容变成列名的字段

2. 分组字段:列转行,转变以后的分组字段

3. 目标字段:增加的列的列名字段

4. 数据字段:目标字段的数据字段

5. 关键字值:数据字段查询时的关键字,也可以理解为key

6. 类型:要给目标字段设置合适的类型,否则会报错

本章节任务:将input目录下的10_列转行.xlsx的数据进行列转行,熟悉列转行控件的使用

数据抽取工具 kettle转换

行转列

行转列,一行转多列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简单理解为行转列控件是列转行控件的逆向操作。具体如下图:

数据抽取工具 kettle转换

数据抽取工具 kettle转换

数据抽取工具 kettle转换 1. Key字段:行转列,生成的列名字段名

2. 字段名称:原本数据流中的字段名

3. Key值:Key字段的值,这个是自己自定义的,一般都跟前面的字段名称一样

4. Value字段:对应的Key值的数据列的列名

本章节任务:将input目录下的11_行转列.xlsx用excel控件输入,然后行转列,熟悉行转列控件的使用。

数据抽取工具 kettle转换

Mysql中文乱码问题:

将作业或者转换信息存入mysql后,查询是发现是乱码的。这时可以修改mysql的编码。

(1)先关闭mysql服务, sudo service mysql stop

(2)找到mysql的配置文件my.cnf(安装方式不同目录可能不同,我的在/usr/my.cnf),添加如下配置:

character_set_server = utf8

init_connect='SET NAMES utf8'

数据抽取工具 kettle转换

(3)重启mysql服务,查看编码

show variables like '%char%';

数据抽取工具 kettle转换

转载自:https://juejin.cn/post/7137857054428889118
评论
请登录