Kettle 常用的转换组件都在这里
关注【郑大钱呀
】【公】【众】【号】,我们一起交流,一起学习,写作不易,还请大家多多关注。
文章目录
- 前言
- 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 常用的转换组件都在这里相关推荐
- 地图分幅组件的实现(一) ——图号和经纬度转换组件
地图分幅组件的实现(一) --图号和经纬度转换组件 分类: GIS制图2011-04-08 10:39 334人阅读 评论(0) 收藏 举报 当前的制图一般有两种分幅方式,经纬分幅和矩形分幅.国内制图 ...
- AcWing 2984. 线段 / POJ3304(计算几何、常用技巧转换)
常用技巧转换,寻找一个直线旋转 我们发现如果可以找到一个直线与所有的线段都相交,那么我们做一个垂直这个直线的垂线,所有的线段的投影一定都交于这个直线与垂线的垂足处,我们可以很轻松地画图验证这一定理. ...
- Kettle使用_29 转换里使用参数
Kettle使用_29 转换里使用参数 需求:通过Kettle对转换进行参数传递 解决方法:通过环境变量.命名参数.获取系统信息.获取变量等组件对转换进行传值. Previous work: 这里通过 ...
- Kettle使用_28 转换之数值范围与字符串操作
Kettle使用_28 转换之数值范围与字符串操作 需求:通过Kettle将score字段进行去重.数值范围转换,对字段进行字符串操作(去除空格.改成大写.字符串替换) 解决方法:通过去除重复记录.数 ...
- Kettle使用_18 分组组件计算百分位数
Kettle使用_18 分组组件计算百分位数 需求: 通过Kettle的组件对emp的sal字段计算百分之25.50.75.90数. 解决方法:结合表输入.排序记录.分组组件解决,这里主要是通过应用分 ...
- android 单位转换工具,Android单位转换----常用单位转换工具类
前言 有一定开发经验的小伙伴肯定会发现这样一个问题,当我们用xml来写布局的时候,通常用的是dp.sp.(相信大家都知道为什么这样用).当我们用Java代码来创建View控件时,会发现方法接收的参数都 ...
- 常用文件格式转换大全: PDF转Word,WORD转PDF转换器,DOCX转DOC转换
为什么80%的码农都做不了架构师?>>> 常用文件格式转换大全: Diywz - PDF转Word,WORD转PDF转换器,DOCX转DOC转换器 常用的文件格式互转工具,实 ...
- 微信小程序常用视图容器组件
微信小程序常用视图容器组件 1.组件概述 2.常用的试图容器组件 2.1 view 2.1.1 案例 2.2 scroll-view 2.2.1 案例 2.3 swiper 2.3.1 案例 1.组件 ...
- ETL(八):路由器(rounter)转换组件的使用
1.需求 2.路由器转换组件的功能 3.ETL开发流程 1)定义源表 2)定义三个目标表:edw_emp_deptno_10.edw_emp_deptno_20.edw_emp_deptno_30 ① ...
最新文章
- Js面试题(一)--js实现数组去重怎么实现?
- 基于double-check模式尝试将消息放到batch中
- python小知识点
- Python基础入门必学内容:判断语句与循环语句
- linux增加php进程数,linux - 调整php-fpm进程数之后,为什么负载飙升的厉害
- 微软官方的SqlHelper
- 网络工程:3.1 RIP(Routing Information Protocol)协议
- js在类的方法中访问自己的属性
- python中编写类的各种技巧和方法_每日一道python面试题 - Python的实例,类和静态方法揭秘...
- BGP过滤器原理和实验(华为设备)
- MFC 获取窗口句柄
- 安装西门子博图一直重启_博图软件常见错误解决方法
- SolidWorks宏工具介绍——初识宏工具
- Spring Boot 实现定时任务
- 新媒体运营怎么推广?
- 与、或、异或、按位取反
- Lytro光场相机上手视频
- 系统无法安装字体,复制到FONTS无效(出现提示:字体对系统无效)
- 05 DIY流星观测站——相机简介
- iOS开发之获取运营商和WIFI
热门文章
- python对excel筛选提取文本中数字_Python,从Excel列中提取数字并作为outpu写入
- 人工智能--自然演绎推理
- Python爬虫实战案例:取喜马拉雅音频数据详解
- 使用VisualStudio读写NI FPGA板卡实例(基于FPGA Interface C API Generator)
- DIY 一个 JSON解析器。
- Android 发送短信
- Frps部署报错:cannot stat ‘frp_0.44.0_linux_amd64/frps‘: No such file or directory
- 关键字深度剖析,集齐所有关键字可召唤神龙?【三】
- yolov5检测限定长宽比检测范围的目标
- Peekaboo——项目系统设计与数据库设计