版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Kettle使用基础
1.什么是ETL
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、
转置(transform),加载(load)至目的端的过程。通俗点讲就是一大堆数据,经过ETL工
具处理之后,转换成你需要的。
2.ETL主流的工具有哪些
•OWB(OracleWarehouseBuilder)
•ODI(OracleDataIntegrator)
•InformaticPowerCenter(Informatica公司)
•RepositoryExplorer
•AICIoudETL
•Kettle
3.Kettle简要介绍
•Kettle是•款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运
行,绿色无需安装,数据抽取高效稳定。
•Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,
然后以一种指定的格式流出。
•Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化
的用户环境来描述你想做什么,而不是你想怎么做。
•Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基
础转换,job则完成整个工作流的控制。
•Kettle家族目前包括4个产品:SpoonPan、CHEF、Kitcheno
1.Spoon:一个图形用户界面,用来运行transformation(转换)和job(任务),其
^transformation是用Pan工具来运行,任务是用Kitchen来运行°
2.Pan:一个数据转换引擎,主要用来执行数据源读取,操作和写入数据等等功能。
3.Kitchen:一个运行任务(利用XML或数据资源库描述)的工具。
•SPOON允许你通过图形界面来设计ETL转换过程(Transformation)。
•我们主要介绍的就是kettle中spoon这款产品应用。
4.Kettle常见用途及特点
Kettle是一款非常灵活的产品,可以帮用户做很多事,包括:
>不同数据库或应用之间的数据迁移。
>可以充分利用云、齐群、并行处理向数据库中插入大数据集。
>复杂的数据清洗。
>支持Hadoop(非关系型数据库)功能,包括hadoop工作计划和执行,简单hadoop
mapreduce设计。
Kettle作为一款开源产品,有其本身的特点,包括:
>安全简单,只需要配置jdk环境,然后将下载的文件解压即可
>纯java实现,可以跨平台应用
>数据处理效率非常高,平均可以到达4000条/秒以上。
>使用简单,提供界面组件的形式,用户只需要拖动页面上面的组件,根据自己的思
路进行组合即可。因此对于了解计算机而非开发人员,也可以使用此工具进行数据
处理。
>支持插件,用户可以自己扩充功能。
>企业数据集成服务,提供包括job和转换的历史版本管理以及安全的集成、计划及
内容管理。
>基于流的引擎架构为我们处理大数据量提供了可能性。
5.Kettle的安装
•要运行kettle工具必须安装Sun公司的JAVA运行环境,kettle4.2.0需要运行java1.6
或者更高版本,Kettle的卜.载可以到http:〃/取得最新版本°kettle
不需要安装,安装好java环境后,在操作系统环境变量path中配置jre路径,把kettle
工具压缩包解压后可直接使用。
•要注意的是如果您的系统是64位,那么对应的jdk版本也要是64位,否则将无法
运行kettle。而kettle本身已经做到windows与linux、32位与64位兼容。
6.运行Spoon
•找到解压后的这个目录pdi-ce-4.4.0-stable\data-integration
•下面是在不同的平台上运行Spoon所支持的脚本:Spoon.bat:在windows平台运行
SpoonoSpoon.sh:在Linux、AppleOSX、Solaris平台运行Spcon。
7.资源库介绍
•资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在
资源库中。资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形
式分组管理的,用户可以自定义文件夹名称。资源库有两种形式:
•一、Kettledatabaserepository,即保存在各种常见的数据库资源库类型,用户通过
用户名/密码来访问资源库中的资源,默认的用户名/密码是admin/adminguest/guest
•二、Kettlefilerepository,保存在服务器硬盘文件夹内的资源库类型,此类型的资源
库无需用户进行登录,直接进行操作。
8.创建资源库
•在此我以文件资源库为例,给大家介绍一下如何创建文件资源库。在上图中点击创
建文件资源的栏目。在basedirectory对应的栏目。
•点击确定,再点击。k将进入到spoon的主界面,他是一个图形化的操作界面,用起
来非常的简单。主界面如下图:
•Spoon(jftWXWJ
文件MWBT・・l,停於
”口Z・XM・O・QP■■・<*1—r»twX“・
9.转换和任务介绍
•一、转换转换其实就是一个数据清洗的过程,在转换过程中包含的主要元素有:
1.输入(excel、文本、数据库、xmkcvs等输入)
2.输出(excel、文本、数据库、xmkcvs等输入)
3.转换(字符处理、添加字段、值映射、字段拆分、字段选择等)
•二、任务就是类似与。rade中的job,我们只要将任务关联到转换,然后设置任务
的执行情况,这样spoon就可以进行自动化处理了。
10.转换
10.1.输入
输入
木
CSVfile
痴
入
型cub
尸
DataGrid
凹
Emailmessagesinput
会
1Excel输入
Fixedfileinput
$
Generaterandomcreditcard
兮
Generaterandomvalue
GetdatafromXML
堂
GetFileNames
GetFilesRowsCount
毡
Getrepositorynames
稔
-GetSubFoldernames
Gettablenames
JGoogleAnalytics
QGZIPCSVInput
QHL7Input
IJsonInput
TDAPTnpn♦
喧
LDIFInput
1Loadfilecontentinmemory
金
2MicrosoftAccessInput
3MondrianInput
4OLAPInput
PropertyInput
里
RSSInput
:S3CSV输入
於
SalesforceInput
6SAPInput
SASInput
次
XBase输入
琮
XMLInputStream6tAX)
乂
2YamiInput
寸木卡性蛤入
如上图,kettle可以支持很多方式的输入,但这里主要讲解一下几个常用的输入,其它
输入大同小异。
>文本输入
1)■文本文件输入将比图标拖到右边空白处,双击此图标将弹出下面这个界面,
按下面四个步骤进行配置,即可将文本文件输入。
[aw/
A表输入
表输入是指以其它数据库为数据源,再对这叱数据源的数据进行清洗.将变表输入
拖入到右边空白处,对于表输入可以分为下面几个步骤:
1)查看是否将输入表的数据驱动包放到
pdi-ce-4.4.0-stable\data-integration\libext\JDBC这个目录下面,如果没有,则需要下
载对应数据库的驱动包到此目录下面。
>Excel输入
Excel导入,是以excel作为数据源,通过kettle数据处理后,导出到其它存储格式中。
将&Excel输入拖入到右边空白处,并双击,得到的结果如下图:
因Excel*人
Addslutt(t)[17京*excel文|
文伸,工作取内gt*快处理人心肉衣耽麦头f'SL
…I
s»\长反去除空格类as格式苜而符号小数分蛆
虹所铀士中教职工花名册20kliStringng*
Stringnone
—“SFtErinBenone
3、
[喉9)I[取清(C)]
10.2.输出
输出就是源输入的目的地,最后我们可以将数据输出到文件、数据库表、json格式输出
等等。支持的输出有:
日。输出
AutomaticDocumentationOutput
/Cube输出
@Jsonoutput
期LDAPOutput
#MicrosoftAccessOutput
MicrosoftExcelOutput
用JMicrosoftExcelWriter
CPentahoReportingOutput
步PropertiesOutput
S)RSSOutput
包SalesforceDelete
私SalesforceInsert
&SalesforceUpdate
&SalesforceUpsert
SQLFileOutput
Synchronizeaftermerge
况XM删*
除
插
入
o/更新
文
本
文
更
…c新
表
输
L.出
由于输出与输入具有相似性,所以在这里就不介绍具体的用法了。
10.3.连接
连接主要的用法,将不同的数据源的数据进行合并,可以大大的降低异构系统的差异性,
给我们数据清洗带来极大的方便。
>Merge
连接字段#连接字段
1
“第一个步骤”选择导入的“输入表”或“输入文件”
“第二个步骤”选择导入的“输入表”或“输入文件”
“连接类型”是内连接外连接做连接有连接。
安得连接字段]I获得连接字段
[确定Q)]|取消©]
“获得连接字段”是根据什么字段进行连接,结果和数据库的连接结果一样,(如果结
果多了,可能是连接的字段那边有几个样的行是相同的)
>SortedMerge(储存合并)
把两个表一样的列,合并到一起(一样的列他自己就接到后边了,不用去设置,他根据你
的字段名自己去找),输出时候可以输出多出来的字段,一个表的字段与
另一个表的字段内容接到一起时候,输出列的没有同名的话,输出null;
reFere;name;code;method
22;22
23;23
44
55;55
66;66
77;77
88;88
99;99
1();1010;10
50;1;1;1
原图1;
reFere;name;code;method
2222
2323
4444
5555
6666
7777
8888
9999
10;1010;10
50;1;1;1
原图2;
b*eFere;nanecode;method
02:020202
02;030203
02;020202
02;030203
04;040404
04;040404
05;050565
05;050505
06;060606
06;060606
07;070707
07;070707
08;080808
08;080808
09;090909
09;090909
10;101010
10;101010
50;010101
结果:50;010101
文本文件输入2
Fi<14»
Asctndinc
reftrt
Fieldname”哪个字段排序。
文本输出设置
文本文件侯出口回向
步骤名标—a
文件内容物
,名林类型格式长度质度货市小数分坦TrimTypeSull
1r«f«r«Integer20不去披空格
2n«*«Integer20本去拉空格
3codeInteger20木去接空格
4nethodInteger20本去拉空格
>合并记录
这个和上边的基本一样,但是效率没上边的高,不同点是,这个合并时候进行比较,会多
出来个字段,并判断数据是否有变更
refere;name;code;method
2222
2323
4444
5555
6666
7777
8888
9999
1("1010;10
(旧的)原图1:50;1;1;1
refere;name;code;method
2222
2323
4444
5555
6666
7777
8888
9999
1(J;101O;10
50;1;1;1
(新的)原图2:70;1;1;1
refere;namecode;method;FlagField
02;02;0202;identical
02;63;0203;identical
04;04;0404;identical
05;05;0505;identical
06;06;0606identical
07;07;07071identical
08;08;0808;identical
09;09;0909;identical|
10;10;101O;identical
50;01;0101identical
70;01;0101;new
结果:
文本文件输入2
■公并行
EME2
关键字段和数据字段试了几个效果一样,有待在深入研究。
>记录关联(笛卡尔输出)
reFere;name;code;method
22;22
23;23
44;,4
55;55
66;66
77;77
88;88
99;99
1();1010;10
原图1:
reFere;name;code;nethod
2;2;2;2
2:3:2:3
4;4;4;4
5;5;5;5
6;6;6;6
7;7;7;7
8;8;8;8
9;9;9;9
10;10;10;10
50;1;1;1
原图2:
reFere;namecode;method
50;01;0101
50;01;0101
50;01;0101
50;01;0101
50;01;0101
50;01;0101
SO;01;0101
50;01;0101
50;01;0101
50;01;0101
50;01;0101
结果:
文本文件输入2
■joinrows□0®
步骤名称
曲目录avaiotnpdir%%
Il刷文件前嫌
确定9)]|取洎©|
“Mainsteptoreadfrom,,这个我测试,选择文件大小小点的文件速度快些。
条件:”可■以加一些输出的条件。
10.4.转换
1•.r-1j.z4USplitfieldtorows\
io.4.i.splitfieldtorows(:-..)(这个的功能就是把一列【必
须是string型的】按标点或字符拆分开,拆分成的生成新的列)原图
id;name
1;sunchao,sishen,moshou
2;sunchaosishen,moshou
|v
结果
|id;name;split_name
1;sunchao,sishen.moshou;sunchao
1;sunchao,sishen,moshou;sishen
1;sunchao,sishen,moshou;moshou
2;sunchao,sishen,moshou;sunchao
2;sunchao,sishen.moshou;sishen
2;sunchao,sishen,moshou;moshou
Includerownuminoutput?|~|Kiwnwnfieldname|Splitnamesplitname♦
ResetRownumateachinputrow?[
"Fieldtosplit”选择要的拆分字段
delimiter"定界符一按什么去拆分这个字段
"newfieldname”拆分出来的字段的名字
10.4.2.去掉重复记录(》去除重复记录)
文件3)
(id;name
11
22
33
44
原图4
“增加计数器到输出”调勾的话时就增加计数器,把字段的重自:的数量输出出来
“计算器字段”给字数器起名
#字段名称忽略大小写
1nameN
“字段名称”选择要去重复的字段,这个输出的原理是选择了就把这•列重复的都去掉,在
这行的别的列不重复的也去掉,增加计数器的话,在后边在多出来一列,显示
去掉的行数的几个
10.4.3.增加常量(口!增加常量)(就是增加一列,列的值是自己给定的,
行数是按别的列的最大行数给出的)
|id;name
1;1
2;2
3:3
原图
idname;test
11;a
22;a
33;a
结果
步骤名称增加常量
*▲名称类型格式长度精确当・・・10进制的祖值
1testString1a
“名称”增加常量的字段名
“类型”得到的结果的类型
“值”增加的常量是什么
10.4.4.增加序列(帝增加序列)(就是加个序列1一一n)
id;name
1;1
2;2
3:3
原图
name;ualuename
1
22
33
步骤名称隔
值的名称valuenaine
使用数据库来生成序列
使用DB来获取sequence?口
数据库连接—|
模式名称
Sequeuee名称S.Qw
使用转换计数器来生成序列
计数器名称可选)
起始值
增长根据
最大值
这个没什么说的我用的都是“使用转换计数器来生成序列”基本都不行调
10.4.5.字段选择
22
3:3
原图"
IDNAME
11
22
33
4
结果
步骤名称
选择和修改、一移除元数据
字段
获取选择的字段
|列映射
包含未指定的列,按名称排序□
“选择和修改”选择你要改名的字段。
“改名成”修改成你想要的名称
这个只能输出你选择了的字段,如果不写name的话出的时候就只能得到id的字段
10.4.6.拆分字段
id;name
1;sunchao/sishen/moshou
原图2;sunchao/sishen/moshou
|id;1;2;4;5
1;sunchao;sishen;noshou;
2;sunchao;sishen;noshou;
结果
步舞名麻:国宾。i
需要折分的字段*9.
分隔符/
TG_________________________________
*新的字段ID移除IS类型长度格式分娼D.CI.UCurr.n<y缺省期蚯格类型
Strine不去撞空格
String木去技68
Striae不去楂空格
Strine不去拉空柘
“需要拆分的字段"你要分的字段
“分隔符”按什么去拆分
«新的手段ID移除ID?类21长精度格分DecimalCuN4去除空格类型
HI..........H”…蟹哂........................................................不去腔格…
22NString不去拍空格
34XString不去掉空格
45NString不去撞空格
“新的字段”你拆分出来的字段给其起个名,拆分出来几个字段就起几个名,(注意:
类型一定要填写,要不会报错)
10.4.7.排序记录(给记录按升序降序排列的)
id;name
1;sunchao/sishen/moshou
2;sunchao/sishen/moshou
原图
id;name
2;sunchao/sishen/moshou
结果1;sunchao/sishen/moshou
步骤名称陶曜R______________________________________________________________
排序目录|阳i。、tmpdirOi1♦[浏览®…
临时文件前频|out
排序缓存大小(内存里存放的记录数)150000伶
未使用内存限值⑹|25HopinfectionUtn:!传
压缩临时文件?金口+沈考?支磐需出4
仅仅传递非重复的记录?(仅仅校验关键字)口Status:Enabled
字段:
字段名称升序大小写敏感
id否否
“仅仅传递非重复的记录”就是去掉这个字段的重复的记录,(只要是这个字段的重复记
录就去掉,同行的不是重
复的也去掉)
字段名称升序大小写破期
id否否
“字段名称”你要排序的字段
“升序”就是你要排序的方式
10.4.8.换转列
groupString
keyInteger
unit_nameString
unitid
下边的列
0USCars1100
1USTrucks1200
2USBoats1300
3USConstruction1400
4USAero1500
5USSpace1600
6USMedical1700
8EMEA0EMEACars2105
9EMEA1EMEATrucks2205
10EMEA2EMEABoats2305
11EMEA3EMEAConstruction2405
12EMEA4EMEAAero2505
13EMEA5EMEASpace2605
14EMEA6EMEAMedical2705
15Asi&0AsiaCars3101
16Asia1AsiaTrucks3201
17Asia2AsiaBoats3301
18Asia3AsiaConstruction3401
19Asia4AsiaAero3501
20Asia5AsiaSpace3601
原图21Asia6AsiaMedical3701
group;Haiel;Kaiel;H)ne2;Haar3;相触;NaneS;H谢;UnitIH;UnitlM;Unit叱Unit匾;UnitWh;UnitiOS;毗M
fisia;AsuCars;AsiaTricks;AsiaBoats;AsiaConstructioi;AsiaHero;isiaSpace;AsiaHedical;BDN101;00113211;BOO;8993W;BOI的II;MSfiUI;HQ聊QI
ElfA;EIUCars;EtfAMs;EKHBoats州AConstructioi;EKAAero:EHEASpace;ENEiMedical;BNC1K;SIN22K;0805;蜩根;腻哪;Q愀也ms
US;U$Urs;USTncts;DSBoats;IISConstructin;U$Hero;l$Space;IKMini;NB11H;㈣2加;姗㈣NtlUt;㈣酒帆1删0881700
步骤名痂F;>wd,non»』iKil
关粳字段ky
构成分蛆的字段:
分蛆字段[与取字段|
1group
目标手段
目存字段Value美援字值类型格式化长度精度c[圆a-诲字段]
Sti
-nr
1ManeOansSui3So
-nr35
2ManelsStio
-nr3S
3Stio
35尧
-nr
4Hane3ftnStio
nr尧
5NonM-AnsSo
ntri
6Nso5-^Sto
nri357
7N,”下-dIno
idte7
8VnitIDOInte70
dG
9VnitIDlItc70
10VnitlDS,-dI0
idnte7
11VnitUGiIt0
-dAe7
12VnitID4iIt0
_dne7
13Un久IDSInt40
1
14UxutlDS.0
“关键字”一般为主见,唯一的。
“分组字段”按什么分组
“目标字段”输出的结果的字段名
wvaluefieldname**把哪列进行转列
“关键字”根据什么去分的(可能是另一个有规律的列去划分的,“目标字段”就包含
这个列的值)
“类型”定义一个输出类型
10.4.9.计算器
p.d;name;code;number
11;12;13;1U
21;22;23;24
31;32;33;34
原图41必力
id;name;code;number;sun
11;12;13;14;36.0
21;22;23;24;66.0
31;32;33;34;96.0
结果41;42;43:44;126.0
字段:
#新字段计篁字段A字段B字段C值类型长度精确度移除
1sunA+B+CidnamecodeNumber否
“新字段”计算后的输出的字段名
“计算”里边写好的算法,选择就行了
“字段a/字段b/字段c”你要操作的字段
“移除”是的话就是删除你计算出来的字段,否的话就能输出。
10.4.10.值映射(当你要对一列进行整理:比如month字段1到12月,你要看每
月属于哪个季度就可以用这个,然后会在表里边多出来1列是你要的)
id1namel;code1;month
1111
2222
3333
4444
5555
6666
7777
8888
9999
1(010;10
11111;11
12;1212;12
原图
id1;name1;code1;month;Q
01;01;0101;1
02;02;0202;1
03;03;0303;1
04;04;0404;2
05;05;0505;2
06;06;0606;2
07;07;0707;3
08;08;0808;3
09;09;0909;3
10;10;1010;4
11;11;1111;4
12;12;1212;4
结果
a
文本文件输出
录/:
oI碓m11。/g~I3I
“使用字段名”就是month
“目标字段名”映射出来的新的字段的名
“源值”就是month要被映射的字段,
“目标值”就是映射出来的值(例子:只要是前边的值是的就映射成1)
10.4.11.numberrange(数字的范围)比较一个字段的数字的范围,在这个范
围的话就在一个新的列,打印出来你定好的结果,如果不在打印出来unkonw,
找不到的打印出来的自己也可以定义是什么。
口d
namel;code1;month
1:
2
3
4
5
6:6:66
7:7:77
8
9
10;1010;10
11;1111;11
12;1212;12
原图
id1;name1;code1;nonth;range
01;0101;01;<、于5
02;0202;92;/、于5
03;0303;03;/、于5
04;0404;04;/、于5
0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度互联网企业派遣员工网络安全合同3篇
- 2025年全新公对公借款合同模板下载及服务支持10篇
- 二零二五年度体育馆租赁合同附体育赛事推广及赞助招商服务
- 2025版智能工厂生产线改造施工合同4篇
- 二零二五年度新能源产品销售代理合作合同范本3篇
- Bobath技术闫秀丽讲解
- 2025年度个人艺术品租赁借款合同范本及租赁期限约定
- 2025年室内墙面批白工程售后服务合同
- 二零二五年度户外广告照明外接电源供应合同
- 2025年度个人房屋抵押贷款担保及养老保障服务合同
- 道路沥青工程施工方案
- 2025年度正规离婚协议书电子版下载服务
- 《田口方法的导入》课件
- 内陆养殖与水产品市场营销策略考核试卷
- 电力电缆工程施工组织设计
- 医生给病人免责协议书(2篇)
- 票据业务居间合同模板
- 高中物理选择性必修2教材习题答案
- 应急预案评分标准表
- “网络安全课件:高校教师网络安全与信息化素养培训”
- 锂离子电池健康评估及剩余使用寿命预测方法研究
评论
0/150
提交评论