KETTLE进阶开发(胡春阳)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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】,选中【过滤记录】,拖动到主窗口释放鼠标。

双击【过滤记录】打开,第一个里面选择CUSTTYPE,点击,在Enter value里面写入VIP,单击确定。在发送true数据给步骤里,选择【对VIP用户修改】,在发送false数据给步骤里,选择【对Normal用户修改】,确定保存。完成后,如下图:

双击【对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常量】的连接。

相关文档
最新文档