Kettle 常用的转换组件都在这里

关注【郑大钱呀】【】【】【】,我们一起交流,一起学习,写作不易,还请大家多多关注。

前言

本期我们主要学习Kettle中的转换组件,主要包括:Concat fields组件、值映射组件、增加常量组件、增加序列组件、字段选择组件、计算器组件、剪切字符串组件、字符串替换组件、字符串操作组件、去除重复记录与排序记录组件、拆分字段组件、列拆分多行组件、列转行组件、行转列组件、行扁平化组件

Concat fields组件

该组件的作用很简单,类似于编程语言中的拼接字符串,就是把多个字段的值拼接成一个新的字符串,比如:

firstname = 'Maical'
lastname = 'Chen'
concat_str = firstname + lastname

下面看一个具体案例操作,我们有一张user表,数据如下:


此时我们想把这三个字段拼接到一起,并写

入到一个text文件中,首先我们拖拽相关组件,并建立连接,如下图:


由于表输入和文本文件输出,我们之前的文章讲过了就不在叙述了,我们重点讲解一下Concat fields组件,双击该组件,进入配置界面,如下图:

配置完成后,点击启动,最后我们看一下结果:

值映射组件

由于数据分析的时候,数据的来源是非常多,但是不同的数据源,可能对于同一含义字段的定义是不同的,比如A系统中性别的定义为:0 男,1 女,B系统中定义为:man 男 ,woman 女,我们为了数据仓库的数据能够规范,所以会将其统一标准,此时就需要使用到值映射组件,示例如下,我们现在有一张表如下:

我们现在想要将表中的性别列,0转换成男,1转换成女,并输出到文本,具体操作如下,还是先拖拽组件,建立连接,如下图:

我们双击值映射组件,配置组件,如下图:

最后我们启动执行一下,看一下结果,如下图:

增加常量组件

该组件的作用,主要是用来,为当前的数据再增加一列,里面的内容是固定的,比如现在有一张用户表,如下图:


由于他们都是大聪明公司的员工,所以需要为他们增加一个公司的字段,并输出到一个文本中,具体操作如下,先拖拽组件,建立连接,如下:


双击增加常量控件,进入配置页面,如下图:

最后我们启动执行一下,看一下结果,如下图:

增加序列组件

增加序列组件与增加常量组件,都是用来增加字段信息的,但是区别的是增加序列的值是可变的增加常量组件值是不可变的,下面我们先感受一下,有一张表,如下:

我们想把信息添加上序号,并输出到文本中,具体操作如下,老规矩,拖组件,建连接,如下图:

双击增加序列组件,进入配置页面,如下图:


最后我们启动执行一下,看一下结果,如下图:

字段选择组件

字段选择组件,可以从数据中筛选字段也可以改变字段的名称和数据类型,我们看个不太聪明的示例,纯属为了演示,我们有一张表,数据如下:


我们先按照老规矩,先拖拽控件,建连接,如下图:

下面我们双击字段选择组件,进行配置,当前表里有四个字段,我们现在不需要remark字段,只需要三个字段怎么配置呢,如下:


然后我们觉得sex字段我们也不想要,这个时候我们不在选择和修改里删,我们在删除里去掉,如下图:

然后我们又觉得id这个字段名字,太平淡,不洋气,我们想把它改成index,并把数据类型改成整型,如下图:

最后我们启动执行一下,看一下结果,如下图:

计算器组件

计算器组件主要是用来做计算的,比如加减乘除、四舍五入等等,里面支持的运算很多,如下表:

功能描述必须填
-空(不做处理,返回值为NULL)A
Set field to constant A创建一个具有恒定值的字段。A
Create a copy of field A创建具有给定字段值的字段的副本。A
A + BA加B。A and B
A - BA减B。A and B
A * BA乘B。A and B
A / BA除B。A and B
A * AA的平方。A
SQRT( A )A的平方根。A
100 * A / BA在B中的百分比。A and B
A - ( A * B / 100 )减去A的B%。A and B
A + ( A * B / 100 )将B%添加到A。A and B
A + B *CA加B乘以C。A, B and C
SQRT( A* A + B* B )计算(A平方+B平方)的平方根.A and B
ROUND( A )返回最接近参数的Integer。通过将结果加1/2,取下限,并将结果转换为int类型,将结果舍入为整数。换句话说,结果等于表达式的值:floor(a + 0.5)。如果需要舍入方法“将一半舍入为偶数”,请使用以下方法ROUND(A,B),不带小数位(B = 0)。A
ROUND( A, B )将A舍入到最接近的偶数,并用B小数表示。使用的舍入方法为“半舍入到偶数舍入”,也称为无偏舍入,收敛舍入舍入,统计学家舍入,荷兰舍入,高斯舍入,奇偶舍入,银行家舍入或零舍入舍入,并广泛用于簿记中。这是IEEE 754计算函数和运算符中使用的默认舍入模式。在德国,它通常被称为“ Mathematisches Runden”。A and B
STDROUND( A )将A舍入到最接近的整数。使用的舍入方法是“从零开始舍入一半”,也称为标准或通用舍入。在德国,它被称为“kaufmännischeRundung”(在DIN 1333中定义)。A
STDROUND( A, B )与STDROUND(A)中使用的舍入方法相同,但十进制为B。A and B
CEIL( A )上限函数将数字映射到后面的最小整数。A
FLOOR( A )底函数将数字映射到最大的先前整数。A
NVL( A, B )如果A不为NULL,则返回A,否则返回B。请注意,有时您的变量将不是null而是空字符串。A and B
Date A + B days在日期字段A中添加B天。A and B
Year of date A计算日期字段A的年份。A
Month of date A计算日期字段A的月份。A
Day of year of date A计算日期A在一年中的某天(1-365)。A
Day of month of date A计算日期A在一个月中的某天(1-31)。A
Day of week of date A计算星期几(1-7)。A
Week of year of date A计算一年中的星期(1-54)。A
ISO8601 Week of year of date A计算一年中的星期ISO8601样式(1-53)。A
ISO8601 Year of date A计算年份ISO8601样式。A
Byte to hex encode of string A将字符串中的字节编码为十六进制表示形式。A
Hex encode of string A以自己的十六进制表示形式编码字符串。A
Char to hex encode of string A将字符串中的字符编码为十六进制表示形式。A
Hex decode of string A从其十六进制表示形式解码字符串(当A为奇数长度时,添加前导0)。A
Checksum of a file A using CRC-32使用CRC-32计算文件的校验和。A
Checksum of a file A using Adler-32使用Adler-32计算文件的校验和。A
Checksum of a file A using MD5使用MD5计算文件的校验和。A
Checksum of a file A using SHA-1使用SHA-1计算文件的校验和。A
Levenshtein Distance (Source A and Target B)计算Levenshtein距离:http://en.wikipedia.org/wiki/Levenshtein_distanceA and B
Metaphone of A (Phonetics)计算单词A的变音位(语音学),用于将单词按照英文发音进行索引。详见:http : //en.wikipedia.org/wiki/MetaphoneA
Double metaphone of A计算A的双重音位:http : //en.wikipedia.org/wiki/Double_MetaphoneA
Absolute value ABS(A)计算A的绝对值。A
Remove time from a date A删除A的时间值。A
Date A - Date B (in days)计算A日期字段和B日期字段之间的天数差异。A and B
A + B + CA加B加C。A, B, and C
First letter of each word of a string A in capital转换字符串中每个单词的第一个字母。A
UpperCase of a string A将字符串转换为大写。A
LowerCase of a string A将字符串转换为小写。A
Mask XML content from string A转义XML内容;用&value替换字符。A
Protect (CDATA) XML content from string A指示XML字符串是常规字符数据,而不是非字符数据或具有更特定的受限结构的字符数据。给定的字符串将包含在<![CDATA [String]]>中。A
Remove CR from a string A从字符串中删除回车符。A
Remove LF from a string A从字符串中删除换行符。A
Remove CRLF from a string A从字符串中删除回车符/换行符。A
Remove TAB from a string A从字符串中删除制表符。A
Return only digits from string A仅输出仅输出字符串中的数字(0-9)。A
Remove digits from string A从字符串中删除所有数字(0-9)。A
Return the length of a string A返回字符串的长度。A
Load file content in binary将给定文件的内容(在字段A中)加载为二进制数据类型(例如图片)。A
Add time B to date A将时间添加到日期,将日期和时间作为一个值返回。A and B
Quarter of date A返回日期的四分之一(1到4)。A
variable substitution in string A将变量替换为字符串。A
Unescape XML content从字符串取消转义XML内容。A
Escape HTML content在字符串中转义HTML。A
Unescape HTML content在字符串中取消转义HTML。A
Escape SQL content转义字符串中的字符以适合传递给SQL查询。A
Date A - Date B (working days)计算日期字段A和日期字段B之间的差异(仅工作日为星期一至星期五)。A and B
Date A + B Months在日期字段A中添加B个月。A
Check if an XML file A is well formed验证XML文件输入。A
Check if an XML string A is well formed验证XML字符串输入。A
Get encoding of file A猜测给定文件的最佳编码(UTF-8)。A
Dameraulevenshtein distance between String A and String B计算字符串之间的Dameraulevenshtein距离:http : //en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distanceA and B
NeedlemanWunsch distance between String A and String B计算字符串之间的NeedlemanWunsch距离:http : //en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithmA and B
Jaro similitude between String A and String B返回两个字符串之间的Jaro相似系数。A and B
JaroWinkler similitude between String A and String B返回两个字符串之间的Jaro相似系数:http : //en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distanceA and B
SoundEx of String A将字符串编码为Soundex值。A
RefinedSoundEx of String A检索给定字符串对象的RefinedSoundEx代码。注意:Metaphone,Double Metaphone, Soundex和RefinedSoundEx:这些算法都是利用单词的发音来做匹配,也称为语音算法。这些语音算法的缺点是以英语为基础,所以基本不能用于法语,西班牙语,荷兰语等其他语种。A
Date A + B Hours在日期字段A中添加B小时A and B
Date A + B Minutes在日期字段A中添加B分钟A and B
Date A - Date B (milliseconds)从日期字段A减去B毫秒A and B
Date A - Date B (seconds)从日期字段A减去B秒A and B
Date A - Date B (minutes)从日期字段A减去B分钟A and B
Date A - Date B (hours)从日期字段A中减去B小时A and B
Hour of Day of Date A提取给定日期的小时部分A
Minute of Hour of Date A提取给定日期的分钟部分A
Second of Hour of Date A提取给定日期的秒部分A

这里我们演示一个简单的示例,我们现在有一张商品表


此时我们想算出每种商品进货的总金额(数量*价格),并输出到文本中,具体操作如下,先拖拽控件,建连接,如下图:

双击计算器组件,进入配置页面,如下图:


最后我们启动执行一下,看一下结果,如下图:

剪切字符串组件

剪切字符串,就是将一个字符串中的一部分单独拿出来,比如我们想要获取姓名,就可以使用该操作,示例如下,我们老规矩,先拖拽控件,建链接,如下图:

双击剪切字符串组件进行配置,如下图:


最后我们启动执行一下,看一下结果,如下图:

字符串替换组件

字符串替换,就是替换字符串中的内容,比如我们有一张用户表,信息如下:

我们想要将姓名中的呀,都去掉,操作如下,老规矩,先拖拽控件,建链接,如下图:

双击字符串替换组件进行配置,如下图:


最后我们启动执行一下,看一下结果,如下图:

字符串操作组件

字符串操作组件,主要为两类操作即:去除空格,和大小写,假如我们有一张用户表,信息如下:

有的名字左右有空格,大小写也规范,此时我们想把他们统一了,具体操作如下,老规矩,先拖拽控件,建链接,如下图:

双击字符串操作组件进行配置,如下图:


最后我们启动执行一下,看一下结果,如下图:

去除重复记录与排序记录组件

该组件的作用就是去掉重复的记录,排序组件就是对数据进行排序,为什么我们要把它们放在一起讲呢,是因为,去除重复记录之前需要先排序,此时我们有一张用户表,数据如下:


由于没有设置主键,有很多重复的数据,此时我们想要查看有多人,要求去重后,输出到文本文件,具体操作如下,老规矩,先拖拽控件,建链接,如下图:

我们双击排序记录组件,进入配置界面

然后我们双击去除重复记录组件,进入配置界面,如下图:


最后我们启动执行一下,看一下结果,如下图:

唯一行(哈希值)组件

唯一行(哈希值)组件,与去除重复记录组件的作用都是一样的,都是去重行,但是两者实现的原理不一样,唯一行(哈希值)组件的效率要高一些,我们还是以刚才的数据为例,使用唯一行(哈希值)组件进行去重,使用该组件去重时,不需要结合排序组件使用,具体操作如下,老规矩,先拖拽控件,建链接,如下图:

我们双击唯一行(哈希值)组件,进入配置界面,如下图:


最后我们启动执行一下,看一下结果,如下图:

拆分字段组件

所谓拆分字段组件,就是将一个字段的值,拆分成多个字段,比如把姓名拆分,具体操作如下,老规矩,先拖拽控件,建链接,如下图:

我们双击拆分字段组件,进入配置界面,如下图:


最后我们启动执行一下,看一下结果,如下图:

列拆分多行组件

该组件就是把某个字段拆分成多行数据,比如有一个人喜欢很多水果,我们可以把它喜欢的每一种水果拆分成一条数据,比如我们有一张表用户表,数据如下:

每个人喜欢多个水果,我们把每个人喜欢的每一种水果都拆分成一条记录,步骤如下,老规矩,先拖拽控件,建链接,如下图:


我们双击列拆分为多行组件,进入配置界面,如下图:


最后我们启动执行一下,看一下结果,如下图:

列转行组件

列转行组件,就是如果数据一列有相同的值,按照指定的字段,就把多行数据转换为一行数据,原来的列名去掉,将指定的列变成新的列,可能有点绕,举个例子,有一张选课表,记录了各位同学的选课情况,如下图:

上面一共是有八条记录,由于语文、数学、英语、体育,是大家都要填的,此时我们想把这几个行数据,转换成字段,也就是如下图:

这样由于字段的增加,数据行数就减少了,具体我们该如何实现呢,由于在使用列转行组件时需要提前排序才行,所以我们的流程如下图:

这里我们重点讲解列列转行组件,双击该组件,进入配置页面,如下图:

最后我们启动执行一下,看一下结果,如下图:

行转列组件

行转列,与上面的列转行相反,也就是将下面的数据

通过行转列,转换成这样

具体操作如下,流程如下图:

这里我们重点讲解列行转列控件,双击该组件,进入配置页面,如下图:


最后我们启动执行一下,看一下结果,如下图:

行扁平化组件

所谓行扁平化就是把同一组的多行数据,合并称为一行,只有同类数据行记录一致,才能使用,感觉和列转行组件的作用差不多,行扁平化数据也需要排序,否则结果会不准确,我们看下示例,原始数据如下:


我们看下行扁平化的效果,流程图如下:


这里我们重点讲解列行扁平化组件,双击该组件,进入配置页面,如下图:

最后我们启动执行一下,看一下结果,如下图:

结尾

本期的内容就到这里了,如有不足之处还请大家多多指正,欢迎大家留言、关注、转发、收藏,谢谢。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑大钱呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值