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

文章目录

  • 前言
  • Concat fields组件
  • 值映射组件
  • 增加常量组件
  • 增加序列组件
  • 字段选择组件
  • 计算器组件
  • 剪切字符串组件
  • 字符串替换组件
  • 字符串操作组件
  • 去除重复记录与排序记录组件
  • 唯一行(哈希值)组件
  • 拆分字段组件
  • 列拆分多行组件
  • 列转行组件
  • 行转列组件
  • 行扁平化组件
  • 结尾

前言

本期我们主要学习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 + B A加B。 A and B
A - B A减B。 A and B
A * B A乘B。 A and B
A / B A除B。 A and B
A * A A的平方。 A
SQRT( A ) A的平方根。 A
100 * A / B A在B中的百分比。 A and B
A - ( A * B / 100 ) 减去A的B%。 A and B
A + ( A * B / 100 ) 将B%添加到A。 A and B
A + B *C A加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_distance A and B
Metaphone of A (Phonetics) 计算单词A的变音位(语音学),用于将单词按照英文发音进行索引。详见:http : //en.wikipedia.org/wiki/Metaphone A
Double metaphone of A 计算A的双重音位:http : //en.wikipedia.org/wiki/Double_Metaphone A
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 + C A加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_distance A and B
NeedlemanWunsch distance between String A and String B 计算字符串之间的NeedlemanWunsch距离:http : //en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm A 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_distance A 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

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


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

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


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

剪切字符串组件

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

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


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

字符串替换组件

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

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

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


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

字符串操作组件

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

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

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


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

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

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


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

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

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


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

唯一行(哈希值)组件

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

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


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

拆分字段组件

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

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


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

列拆分多行组件

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

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


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


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

列转行组件

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

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

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

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

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

行转列组件

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

通过行转列,转换成这样

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

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


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

行扁平化组件

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


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


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

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

结尾

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

Kettle 常用的转换组件都在这里相关推荐

  1. 地图分幅组件的实现(一) ——图号和经纬度转换组件

    地图分幅组件的实现(一) --图号和经纬度转换组件 分类: GIS制图2011-04-08 10:39 334人阅读 评论(0) 收藏 举报 当前的制图一般有两种分幅方式,经纬分幅和矩形分幅.国内制图 ...

  2. AcWing 2984. 线段 / POJ3304(计算几何、常用技巧转换)

    常用技巧转换,寻找一个直线旋转 我们发现如果可以找到一个直线与所有的线段都相交,那么我们做一个垂直这个直线的垂线,所有的线段的投影一定都交于这个直线与垂线的垂足处,我们可以很轻松地画图验证这一定理. ...

  3. Kettle使用_29 转换里使用参数

    Kettle使用_29 转换里使用参数 需求:通过Kettle对转换进行参数传递 解决方法:通过环境变量.命名参数.获取系统信息.获取变量等组件对转换进行传值. Previous work: 这里通过 ...

  4. Kettle使用_28 转换之数值范围与字符串操作

    Kettle使用_28 转换之数值范围与字符串操作 需求:通过Kettle将score字段进行去重.数值范围转换,对字段进行字符串操作(去除空格.改成大写.字符串替换) 解决方法:通过去除重复记录.数 ...

  5. Kettle使用_18 分组组件计算百分位数

    Kettle使用_18 分组组件计算百分位数 需求: 通过Kettle的组件对emp的sal字段计算百分之25.50.75.90数. 解决方法:结合表输入.排序记录.分组组件解决,这里主要是通过应用分 ...

  6. android 单位转换工具,Android单位转换----常用单位转换工具类

    前言 有一定开发经验的小伙伴肯定会发现这样一个问题,当我们用xml来写布局的时候,通常用的是dp.sp.(相信大家都知道为什么这样用).当我们用Java代码来创建View控件时,会发现方法接收的参数都 ...

  7. 常用文件格式转换大全: PDF转Word,WORD转PDF转换器,DOCX转DOC转换

    为什么80%的码农都做不了架构师?>>>    常用文件格式转换大全: Diywz - PDF转Word,WORD转PDF转换器,DOCX转DOC转换器  常用的文件格式互转工具,实 ...

  8. 微信小程序常用视图容器组件

    微信小程序常用视图容器组件 1.组件概述 2.常用的试图容器组件 2.1 view 2.1.1 案例 2.2 scroll-view 2.2.1 案例 2.3 swiper 2.3.1 案例 1.组件 ...

  9. ETL(八):路由器(rounter)转换组件的使用

    1.需求 2.路由器转换组件的功能 3.ETL开发流程 1)定义源表 2)定义三个目标表:edw_emp_deptno_10.edw_emp_deptno_20.edw_emp_deptno_30 ① ...

最新文章

  1. Js面试题(一)--js实现数组去重怎么实现?
  2. 基于double-check模式尝试将消息放到batch中
  3. python小知识点
  4. Python基础入门必学内容:判断语句与循环语句
  5. linux增加php进程数,linux - 调整php-fpm进程数之后,为什么负载飙升的厉害
  6. 微软官方的SqlHelper
  7. 网络工程:3.1 RIP(Routing Information Protocol)协议
  8. js在类的方法中访问自己的属性
  9. python中编写类的各种技巧和方法_每日一道python面试题 - Python的实例,类和静态方法揭秘...
  10. BGP过滤器原理和实验(华为设备)
  11. MFC 获取窗口句柄
  12. 安装西门子博图一直重启_博图软件常见错误解决方法
  13. SolidWorks宏工具介绍——初识宏工具
  14. Spring Boot 实现定时任务
  15. 新媒体运营怎么推广?
  16. 与、或、异或、按位取反
  17. Lytro光场相机上手视频
  18. 系统无法安装字体,复制到FONTS无效(出现提示:字体对系统无效)
  19. 05 DIY流星观测站——相机简介
  20. iOS开发之获取运营商和WIFI

热门文章

  1. python对excel筛选提取文本中数字_Python,从Excel列中提取数字并作为outpu写入
  2. 人工智能--自然演绎推理
  3. Python爬虫实战案例:取喜马拉雅音频数据详解
  4. 使用VisualStudio读写NI FPGA板卡实例(基于FPGA Interface C API Generator)
  5. DIY 一个 JSON解析器。
  6. Android 发送短信
  7. Frps部署报错:cannot stat ‘frp_0.44.0_linux_amd64/frps‘: No such file or directory
  8. 关键字深度剖析,集齐所有关键字可召唤神龙?【三】
  9. yolov5检测限定长宽比检测范围的目标
  10. Peekaboo——项目系统设计与数据库设计