KETTLE进阶开发(胡春阳)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
KETTLE进阶开发
V0.1
成果状态申报人及审核人日期
申报胡春阳2009年4月13日初审于洋2009-4-29
终审程宏斌2009-5-12
知识成果简要信息表
一、概要
Kettle是一款国外开源的ETL工具,纯java编写,绿色无需安装,数据抽取高效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
本文在假设已经掌握了对Kettle的安装及简单功能使用的基础上,进行深入研究。否则,请参考知识库中的Kettle简单实例文档。在本文中,首先通过一个基于Oracle 数据库的ETL实例,包含两个Transformation(相对于Informatica的Mapping)和一个Job(相当于Informatica的Work Flow),使读者对Kettle进行ETL有一个较为深刻的认识。接着对Transformation与Job的组件进行功能阐述。最后是本人在使用中对Kettle的一些想法。
二、实例讲解
1.Kettle工具启动
通过双击Kettle程序文件夹下的spoon.bat文件,启动Kettle工具,出现下图:
若创建并选择资源库(相当于Informatica中的Repository),通过Kettle
开发出的程序将存在知识库中,若选择没有资源库,则开发出的程序将以文件的形式固化在磁盘中。
2.实例说明
实例1为一个Oracle数据库表到文本文件的Transformation过程,实例2为一个文本文件到Oracle数据库表的Transformation过程,实例3为一个Job过程,将上两个transformation一起在同一个job里面调用执行。
3.实例1
从交易信息表(TRADE),帐户信息表(ACCOUNT_M),客户信息表(CUST)中抽取交易相关的所有信息,通过交易表查询帐户表的信息,通过帐户表的信息查询客户表的信息,并判断客户类型是否为VIP客户分别进行处理,输出到文本文件中。
4.创建Transformations、Jobs
点击页面左上角的创建一个新的transformation,点击保存到本地路径,例如保存到D:\KettleProject\test下,保存文件名为testTrans,kettle默认transformation文件保存后后缀名为ktr。
点击页面左上角的创建一个新的job,点击保存到本地路径,例如保存到D:\KettleProject\test下,保存文件名为testJob,kettle默认job 文件保存后后缀名为kjb。
也可以通过双击左侧Main Tree下的Transformations、Jobs节点来完成。
5.创建数据库链接
在testTrans标签页下,点击左边的【Main Tree】,双击【DB连接】,进行数据库连接配置。出现下图:
点击【test】,测试配置是否成功。
6.Transformation-数据源设计
在testTrans标签页下,点击左侧的【Core Objects】,点击【Input】,选中【表输入】,拖动到主窗口释放鼠标。
双击【表输入】图标,数据库连接选择刚刚创建好的LocalOra数据库连接,在主窗口写入对应的查询语句Select*from trade
7.Transformation-Lookup组件使用
点击左侧的【Lookup】,选中【数据库查询】,拖动到主窗口释放鼠标。建立其与表输入环节的链接。
双击【数据库查询】图标,步骤名称写入ACCOUNT_M表查询,数据库连接选择刚刚创建好的LocalOra数据库连接,查询的表写入ACCOUNT_M,查询所需的关键字中,表字段写入ACCTNO,比较操作符写入“=”,字段1写入ACCTNO。
在查询表返回的值里面写入CUSTNO,确定完成。
同上,再创建一个数据库查询,命名为客户信息表查询,查询的表写入CUST,查询所需的关键字写入CUSTNO=CUSTNO,查询表返回的值写入CUSTNAME,CUSTADDRESS,CUSTTYPE,确定完成。完成后,如下图:
8.Transformation-Filter组件与脚本组件的结合使用
点击左侧的【Scripting】,选中两个【Modified Java Script Value】,拖动到主窗口释放鼠标。分别双击打开,重命名为“对VIP用户修改”和“对Normal用户修改”。同时,分别创建【过滤记录】和【对VIP用户修改】、【对Normal用户修改】的连接。
点击左侧的【Transform】,选中【过滤记录】,拖动到主窗口释放鼠标。
双击【过滤记录】打开,第一个
双击【对VIP用户修改】,在里面写入javascript脚本语句:
//在数据流中创建一个新的数据字段
var custTypeCN='对VIP用户进行修改';
//修改已有数据字段中的值
var custName='English:';
custName+=CUSTNAME.getString();
CUSTNAME.setValue(custName);
双击【对Normal用户修改】,在里面写入javascript脚本语句:
var custTypeCN='对普通用户进行修改';
注意:这块出现了Kettle中相对Informatica较为实用方便的一个组件,脚本组件,其中可以通过书写JS脚本对数据进行处理,大大改善了在Informatica中只能死套公式的局面。
9.Transformation-常量组件的使用
点击左侧的【Transform】,选中两个【增加常量】,拖动到主窗口释放鼠标。分别双击打开,重命名为“增加对VIP常量”和“增加对Noraml常量”。
分别建立【对VIP用户修改】和【对Normal用户修改】与【增加对VIP常量】和【增加对Noraml常量】的连接。