1. 什么Kettle?
Kettle是一个开源的ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)项目,项目名很有意思,水壶。按项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。Kettle包括三大块: Spoon——转换/工作(transform/job)设计工具 (GUI方式) Kitchen——工作(job)执行器 (命令行方式) Span——转换(trasform)执行器 (命令行方式)
Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高 效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
2. Kettle简单例子 2.1 下载及安装Kettle
下载地址:http://sourceforge.net/projects/pentaho/files
现在最新的版本是3.6,为了统一版本,建议下载3.2,即下载这个文件pdi-ce-3.2.0-stable.zip。 解压下载下来的文件,把它放在D:\\下面。在D:\\data-integration文件夹里,我们就可以看到Kettle的启动文件Kettle.exe或Spoon.bat。
2.2 启动Kettle
点击D:\\data-integration\\下面的Kettle.exe或Spoon.bat,过一会儿,就会出现Kettle的欢迎界面:
稍等几秒,就会出现Kettle的主界面:
2.3 创建transformation过程
a.配置数据环境
在做这个例子之前,我们需要先配置一下数据源,这个例子中,我们用到了三个数据库,分别是:Oracle、MySql、SQLServer,以及一个文本文件。而且都放置在不同的主机上。
Oralce:ip地址为192.168.1.103,Oracle的实例名为scgtoa,创建语句为: create table userInfo(
id int primary key,
name varchar2(20) unique, age int not null, address varchar2(20) );
insert into userInfo values(1,'aaa',22,'成都市二环路'); insert into userInfo values(2,'东方红',25,'中国北京'); insert into userInfo values(3,'123',19,'广州白云区'); MySql:ip地址为192.168.1.107,数据库名为test2,创建语句为: create database test2;
use test2;
create table login( id int primary key,
realname varchar(20) unique, username varchar(20) unique, password varchar(20) not null, active int default 0 );
insert into login values(1,'aaa','admin','admin',0); insert into login values(2,'东方红','test','test',1); insert into login values(3,'123','xxx123','123456',1); SQLServer:本机,ip为192.168.1.115,创建语句为: create database test3;
use test3;
create table student(
sid varchar(20) primary key, sname varchar(20) unique, teacher varchar(20) not null, );
insert into student values('078','aaa','李老师'); insert into student values('152','东方红','Mr Wu'); insert into student values('034','123','徐老师');
文本文件:名为dbtest.log,位于192.168.1.103\\zhang\\上,即跟Oracle同一个主机。
数据仓库:位于192.168.1.107上,跟MySql一台主机,而且数据库也是MySql,也就是说,MySql上有2个数据库,test2和test4。创建语句为: create database test4;
use test4;
create table inforTotal( id int primary key,
name varchar(20) unique, age int not null, address varchar(20),
username varchar(20) unique, password varchar(20) not null, active int default 0, sid varchar(20) unique,
teacher varchar(20) not null, cat varchar(20), dog varchar(20) );
b.Spoon界面
在主界面,选择没有资源库,进入工作空间。
c.创建transformation文件 1.新建transformation文件
双击左边转换将创建一个新的transformation(也可以通过菜单里面的文件-新建-转换方式新建文件),点击
另存为,保存到本地路径,例如保存到D:/etltest
下,保存文件名为EtltestTrans,kettle默认transformation,文件保存后后缀名为ktr。
2.创建数据库连接
在transformation页面下,点击左边的【主对象树】,双击【DB连接】,进行 数据库连接配置。
在Connection Name下面的数据库里输入连接的名字,如oracle 在Settings里的Host Name里输入主机名,如102.169.1.103 在Settings里的Database Name里输入数据库名,如scgtoa 在 Settings里的User Name里输入数据库用户名,如bbs 在Settings里的Password里输入数据库密码,如bbs
然后点击”Test”按钮测试连接是否成功,如果成功后,点击OK按钮。
同样地,我们创建MySql和SQLServer的连接,如:
最后我们看到这样的界面:
d.抽取、转换、装载过程 1.表输入
在EtltestTrans页面下,点击左侧的【核心对象】,点击【输入】,选中【表输入】,拖动到主窗口释放鼠标。
双击工作区中【表输入】图标,数据库连接选择刚刚创建好的连接名为Oracle的数据库连接,在主窗口写入对应的查询语句: SELECT ID , NAME , AGE
, ADDRESS
FROM USERINFO ORDER BY NAME
步骤名称写为:oracle - userInfo表输入
可以通过预览,查看这个步骤输出的数据。
同样地,我们建立一个MySql的表输入组件:查询语句为 SELECT id
, realname , username , password , active FROM login
ORDER BY realname
步骤名称为:mysql - login表输入
2.表连接查询
在EtltestTrans页面下,点击左侧的【核心对象】,点击【连接】,选中【Merge Join】,拖动到主窗口释放鼠标。如图:
然后,点击表输入,按住shift键,再拖动鼠标到Merge Join,这时就实现了在两个组建之间的连线。如图:
双击工作区中的Merge Join,在出现的窗口里: 步骤名称命名为:表连接查询
第一个步骤选择:oracle - userInfo表输入 第二个步骤选择:mysql - login表输入 连接类型选择:FULL OUTER
在连接字段里,第一个步骤写:NAME,第二个步骤写:realname
3.表连接查询与表输入再次连接查询 SQLServer表输入,如图:
4.远程文本文件输入
在EtltestTrans页面下,点击左侧的【核心对象】,点击【输入】,选中【文本文件输入】,拖动到主窗口释放鼠标。 双击这个图标,进入编辑窗口:
输入步骤名称:远程文本文件输入
在选中的文件里的文件/目录下面输入,文件所在的路径,注:这个路径可以通过本机的网上邻居访问。 5.第三次表连接查询
再次拖入一个表连接查询图标,将上次的查询结果与远程文本文件相连,再进行一次表连接查询。
6.插入/更新
在EtltestTrans页面下,点击左侧的【核心对象】,点击【输出】,选中【插入/更新】,拖动到主窗口释放鼠标。将它与第三次表连接查询进行连线。 双击”插入/更新”图标,进入编辑窗口。
数据库连接选择数据仓库的数据库,目标表选择对应的infortaotal表,在查询关键字里,表字段写name(表示仓库表里的字段),流里的字段1里写入NAME(即上一个步骤输入的内容里的NAME)。比较符用”=”号。点击Edit mapping按钮,将表字段,与流利的字段进行对应,即流里字段里的值输入到表里的哪个字段里去。
e.执行transformation
这样,我们的transformation就创建完成了,这时,我们可以点击运行,测试创建的transformation是否成功。
点击
这个按钮,就会执行ETL过程,这时我们可以查看数据仓库的表,如果
有数据,并符合我们的要求,那么说明我们的transformation成功了。
2.4 创建job过程
Job就是把一个或多个transformation按照一定的顺序组合起来,形成一个流程。 a.创建job文件
通过菜单里的“文件-新建-作业”就可以创建一个job文件,点击D:\\etltest\\jobtest.kjb。
另存为
b.job流程
1.拖入图标并连线
在EtlscriptJob页面,点击【核心对象】,点击【通用】,选中【START】拖动到主窗口释放鼠标,再选中一个【Transformation】,拖动到主窗口释放鼠标, 建立【START】与【Transformation】之间的连接。
2.编辑”开始”流程
双击”START”图标,就进入编辑窗口。
我们可以选择这个job是否是重复的,如果是重复的,需要选择重复的类型,在根据类型判断是否需要编辑时间间隔。 3. 编辑transformation流程
双击”transformation”图标,就进入编辑窗口。
其中,我们要输入job名称:如jobOK,点击转换文件名后面的
按钮,浏览我
们我们要转换的文件,并选中。其他的选项可以根据实际需要再进行配置。 点击确定按钮,退出编辑窗口。 c.运行job
这时一个简单的job流程就建立好了,这时我们点击job了。如图:
按钮,就可以运行这个
d.什么时候用Job
这个job跟上面的转换其实是完成了同样的工作,只不过job可以把多个
transformation放在一起组成一个流程,什么时候用job或transformation,是根据需要来定的,比如只有一个transformation时,就可以直接用transformation,但如果这个转换需要定时,那么就必须用job了。多个transformation需要组成一个流程时也必须用job。
2.5 命令行运行ktr和kjb
在上面的过程中,我们都是在IDE工具中,直接点击按钮进行运行文件的,但在实际中,我们需要脱离IDE,进行单独的运行,这时就必须用到命令行来运行文件了。
1.cmd方式运行
1.ktr的运行:运行transformation文件是通过Pan.bat来运行的。 打开cmd命令行窗口,转到Pan.bat所在的目录,如d:\\data-integration,然后执行文件的命令为:pan /file D:\\etltest\\EtltestTrans.ktr 2.kjb的运行:运行job文件是通过kitchen.bat来运行的。 打开cmd命令行窗口,转到Pan.bat所在的目录,如d:\\data-integration,然后执行文件的命令为:kitchen /file D:\\etltest\\jobOK.kjb 2.bat文件运行
如果觉得通过打开命令行输入麻烦,我们可以把它写在一个批处理文件中。如: d:
cd D:\\data-integration
pan /file D:\\etltest\\EtltestTrans.ktr
把这些内容保存在pan.bat里,通过双击panKtr.bat就可以执行ktr文件了。 同样地,我们把下面的内容: d:
cd D:\\data-integration
kitchen /file D:\\etltest\\jobOK.kjb
保存在kitchenKjb.bat里,双击它,也可以执行kjb文件。
目录
Kettle中元素介绍 .......................................................................................................................... 28
变量......................................................................................................................................... 30 转换......................................................................................................................................... 31
转换连接颜色 ................................................................................................................. 32 步骤(右键属性) ................................................................................................................. 32 文本文件输入 ......................................................................................................................... 33 表输入..................................................................................................................................... 34 获取系统信息 ......................................................................................................................... 34 生成记录 ................................................................................................................................. 36 Cube输入 ............................................................................................................................... 36 Xbase输入 .............................................................................................................................. 36 Excel输入 ............................................................................................................................... 36 XML输入 ................................................................................................................................ 37 获取文件名 ............................................................................................................................. 37 获取文件行数 ......................................................................................................................... 37 文本文件输出 ......................................................................................................................... 37 表输出..................................................................................................................................... 38 插入/更新 ............................................................................................................................... 38 更新(可以用插入/更新替代) ................................................................................................. 38 删除......................................................................................................................................... 38 序列化到文件(以前是Cube output) ..................................................................................... 39 XML输出 ................................................................................................................................ 39 Excel输出 ............................................................................................................................... 39 Access输出 ............................................................................................................................. 39 数据库查询(Database lookup) ............................................................................................... 39 流查询..................................................................................................................................... 40 调用数据库存储过程 ............................................................................................................. 40 HTTP客户端 ........................................................................................................................... 40 字段选择 ................................................................................................................................. 41 过滤记录 ................................................................................................................................. 41 排序记录 ................................................................................................................................. 41 添加序列 ................................................................................................................................. 41 空操作(什么也不做) .............................................................................................................. 42 行转列(Row Normaliser) ........................................................................................................ 42 拆分字段 ................................................................................................................................. 44 去除重复记录 ......................................................................................................................... 44 分组(Statistics) ........................................................................................................................ 44 设置为空值(Null if) ........................................................................................................... 44 计算器..................................................................................................................................... 44 增加XML(Add XML) ............................................................................................................... 45 增加常量 ................................................................................................................................. 45 行转列(Row Denormaliser) .................................................................................................... 45
行扁平化 ................................................................................................................................. 46 值映射..................................................................................................................................... 46 被冻结的步骤(Blocking Step) ................................................................................................. 47 记录关联(笛卡尔输出) ..................................................................................................... 47 数据库连接 ............................................................................................................................. 47 合并记录 ................................................................................................................................. 48 排序合并(Sorted Merge) ........................................................................................................ 48 Merge Join(合并连接) ....................................................................................................... 49 Java Script值(Modified Java Script Value) .............................................................................. 49 执行SQL语句 ........................................................................................................................ 50 Execute row SQL script ............................................................................................................ 51 维度更新/查询 ....................................................................................................................... 52 联合更新查询 ......................................................................................................................... 52 映射(子转换) ..................................................................................................................... 53 从结果获取记录 ..................................................................................................................... 54 复制记录到结果(字符串) ................................................................................................. 54 Set Variables(设置变量) ......................................................................................................... 54 Get Variables(获取变量) ......................................................................................................... 55 Get files from result(从以前的结果获取文件) ...................................................................... 55 Set files in result ...................................................................................................................... 55 Injector(记录注射器) .............................................................................................................. 56 Socket reader(套接字读入器) ................................................................................................ 56 套接字输写器(Socket writer) ................................................................................................. 57 聚合记录 ................................................................................................................................. 57 流XML输入(属sax解析,和Get data from xml功能相同) ............................................... 57 Abort(中止) ............................................................................................................................. 58 Oracle Bulk Loader(Oracle 批量装载) ................................................................................... 58 任务设置(Job Settings)未找到 ......................................................................................... 60 任务条目(Job Entries)未找到 ........................................................................................... 60 Start ......................................................................................................................................... 60 附录1 : ............................................................................................................................. 63 JS函数 .................................................................................................................................... 63
资源库:转换和job的保存地点
1、kettle 有两种方式连接资源库,一种是纯数据库式,所有的转换全部都保存在一个数据库中;另外一种连接方式是使用文本文件,也就是xml 文件,在做完任何转换之后,我们都可以把转换或者Job 变成xml 文件输出。
Kettle中元素介绍
===========================
Transformation======================
输入:
1、Access Input 2、Cube Input 3、Excel 输入
4、Generate random value 5、Get File Names
6、Get Files Rows Count 7、Get SubFolder names 8、Get data from XML 9、Mondrian Input
10、 Propperty Input 11、 XBase输入 12、 文本文件输入 13、 表输入
14、 获取系统信息 15、 CSV file input 输出:
1、Access Output 2、Cube输出
3、Excel Output 4、Property Output 5、SQL File Output 6、XML输出 7、删除
8、文本文件输出 (CSV文件输出,将分隔符改为“,”) 9、表输出
转换:
1、增加常量 用来给查询增加常量列 2、增加序列 用来给查询增加序列列 3、字段选择 用来选择输出字段
4、拆分字段 将某字段按照某个分隔符分割为多个字段 5、排序记录 按照某些字段对记录进行排序 6、Number range 不同范围输出不同的值 7、Add a checksum md5加密等
8、Replace in string 替换字段值为其他值
9、去除重复记录 使用之前所有记录必须已有序 10、值映射
11、Unique rows(HashSet) 12、计算器 对字段值进行+、-、*、/、平方、开放、四舍五入等数学计算以及时间计算。
Flow:
1、过滤记录 2、Switch/Case 查询:
1、数据库查询(多表关联时使用,无关联时只使用表输入即可)
连接
1、记录关联(笛卡尔输出) 将多个表记录关联起来(笛卡尔积,不是表连
接)
脚本
1、Modified Java Script Value
名词解释:
1、hops:节点连接,一个连接连接两个步骤。除了指定执行顺序,也可以指定下一
个任务将会被执行的条件。
2、
常用的工具
1、SQL Editor :数据库连接—右键Sql Editor 2、Explore :数据库连接—右键explore 3、搜索元数据 :CTRL + F 4、设置环境变量:ctrl+alt+j
变量
1. 环境变量:使用环境变量唯一的问题是:不能动态的使用变量
2. Kettle变量:因为环境变量的范围非常广泛,所以我们引入Kettle 变量,它们对于设
置变量的任务来说是局部的
3. 内部变量:
3.1 永远被定义(全局变量)
变量名称 Internal.Kettle.Build.Date 示例值 2007/05/22 18:01:39 Internal.Kettle.Build.Version Internal.Kettle.Version
3.2 转换中被定义
变量名称 Internal.Transformation.Filename.Name Internal.Transformation.Repository Internal.Transformation.Name 2045 3.0.2 示例值 Denormaliser-2 / Denormaliser-2 series of key-value paris.sample series of Internal.Transformation.Filename.Directory D:\\Kettle\\Samples key-value paris.ktr
3.3 Job中被定义
变量名称 Internal.Job.Filename.Directory Internal.Job.Filename.Name Internal.Job.Name Internal.Job.Repository.Directory Nested job.kjb Nested job test case / 示例值 /home/matt/jobs 变量的使用:
1、 unix下:${variable} 2、 %%java.io.tmpdir%%
Job和转换的区别与联系:
1、 转换用来完成数据的转换。 2、 Job完成整个工作流的控制。
转换
1. 转换设置:Ctrl+t
a) 状态:“产品”|“草案” b) 版本:转换的版本
c) 目录:转换在资源库中存储的位置
d) 日志数据库连接:使用此链接写到日志表 e) 日志表:指定日志表的名称
f) Update 日志步骤:将当前步骤更新行的编号写入日志表。Update:在数据库
更新
g) 读取日志步骤:将当前步骤读取行的编号写入日志表。Read含义:从源步骤
读取
h) Input日志步骤:将当前步骤输入行的编号写入日志表。Input含义:从文件或
i) j)
者数据库输入
Write日志步骤:将当前步骤写入行的编号写入日志表。Write含义:写入到目标步骤
Output日志步骤:将当前步骤输出行的编号写入日志表。Output含义:输出到文件或者数据库。
转换连接颜色
外观 Green Red Yellow Magenta Gray Black Blue Orange(Dot line) Red(Bold Dot line) 以上数据与实际有冲突,可选择性参考。 含义 分发行 复制行 给步骤提供信息,分发行 给步骤提供信息,复制行 不可用 命名目标步骤 侯选连接,使用鼠标中间按钮+拖拉 一直没有使用的,因为没有数据经过 运输在源步骤中出错的行 步骤(右键属性)
1、 改变开始复制数量:有时候多次运行相同的步骤是非常有用的。例如,执行一个数据库
查询三次或者三次以上,这是因为数据库连接通常有一个反应时间,改变步骤运行的次数,可以有效的减少反应时间,提高效率。
相当于
2、 复制、删除、分离步骤:步骤的复制、删除和分离
3、 步骤的分发、复制:复制数据意思是说从“A”过来的所有行都被复制到3 个目标步骤。
这就意味着最后一个步骤从“A”获取了所有行的三个副本。事实上,由于每个步骤用不同的线程来运行,到达最后一个步骤的行的顺序可能 和“A”的顺序不一样。 4、 定义错误处理:代替一个转换因为某一个步骤发生错误的时候被中断,你可以引起错误
的这些行,进入到一个不同的步骤。不是所有步骤都有此功能,Js脚本步骤有此功能 5、 显示输入/输出字段 6、 编辑步骤/编辑步骤描述
文本文件输入
1、 没有空行:不往下一步骤发送空行
2、 输出包括文件名:输出包含文件名字段 3、 输出包含行数:输出字段包含行号
4、 格式:可以是DOS、 Unix或混合模式。UNIX行终止可以是回车、DOS是回车或换行。
混合模式则不验证。
5、 编码方式:默认编码方式。Unicode编码方式有Utf-8,utf-16 6、 记录数量限制:设置读取记录的行数,0表示所有的。 7、 解析日期时是否严格要求:启用时1月32将变为2月1号 8、 错误处理标签:当错误发生时,错误处理标签可以允许你指定这个步骤将重新做些什么。 9、 忽略错误 10、 跳过错误行:如果不跳过错误行,解析错误字段将是空的。 11、 错误计数字段:在输出流中增加一个字段,这个字段将包含错误发生的行数。 12、 错误字段字段名:输出流增加字段,该字段包含错误发生的字段名称。 13、 错误文本字段:输出流增加字段,该字段包含解析错误发生字段的描述。 14、 警告文件目录:当警告发生时,文件将被放进该目录,文件名为:文件名。<日期时
间>.<错误文件扩展> 15、 错误文件目录:当错误发生时,文件将被放进该目录,文件名为:文件名.<日期时
间>.<错误文件扩展> 16、 失败行数文件目录:当解析发生错误,行号将被放进该目录,文件名将是:文件名.<
日期时间>.<错误行扩展> 17、 过滤标签:可以用来指定文件文件中要过滤的行。 18、 过滤字符串:搜索字符串,将符合条件的行从输出中去掉。 19、 过滤器位置:0:起始位置。不填(<0):表示搜索整个字符。 20、 停止在过滤器:如果想在文本文件遇到过滤字符时停止处理,就指定“Y”。
表输入
1、 从步骤插入数据:指定我们期待读取数据的步骤名称,这些信息能被插入到sql语句。
例如:sql:select * from t where date between ? and ? ?:的数据来自其他步骤
获取系统信息
1、系统日期(可变):系统时间,每次访问都在改变。
2、系统日期(固定):系统时间,有转换开始来决定。即转换开始时间
3、开始日期范围(转换):根据etl日志表的信息,确定日期范围的开始。
4、结束日期范围(转换):根据etl日志表的信息,确定日期范围的结束。
5、开始日期范围(作业):根据etl日志表的信息,确定日期范围的开始
6、结束日期范围(作业):根据etl日志表的信息,确定日期范围的结束。 7、昨天00:00:00:昨天的开始 8、昨天23:59:59:昨天的结束 9、今天00:00:00:今天的开始 10、今天23:59:59:今天的结束
11、上个月第一天的00:00:00:上个月的开始
12、上个月最后一天的23:59:59:上个月结束
13、本月的第一天00:00:00:这个月的开始 14、本月的最后一天23:59:59:这个月的结束 15、步骤拷贝:复制步骤 16、转换名称:转换的名称
17、转换的文件名:转换的文件名(仅针对XML) 18、最后修改转换的用户 19、转换的最后修改日期
20、转换ID:日志表中的批处理ID值 22、主机名:返回服务器的主机名 23、IP地址:返回服务器的IP地址
24、命令行参数1:命令行的第一个参数。 25、Kettle版本:返回Kettle的版本。
26:Kettle编译版本:返回Kettle核心库的编译版本 27:Kettle编译日起:Kettle核心库的编译日期 28:Current process identifier(PID):
生成记录
1、 限制:记录数的条数 2、 名称、值
Cube输入
从二进制Kettle Cube文件中读取数据行
Xbase输入
使用这一步可以读取大多数被称为Xbase family派生的DBF文件 1、 最常用的是FoxPro
Excel输入
1、 工作表名称
2、 起始行:开始读取的行。 3、 起始列:开始读取的列。
4、 头部:检查工作表是否指定了一个头部行。 5、 非空记录:检查是否不需要空行输出。 6、 停在空记录:当遇空行时停止读取。
7、 文件名称字段:步骤输出指定一个包含文件名的字段。
8、 工作表名称字段:步骤输出指定一个包含工作表名称的字段。 9、 行号列:指定输出行号列字段名称。
XML输入
1、 Loop XPath:选择/Rows/Row 2、 Namespace aware:
3、 Ignore comments:忽略注释
4、 Validate XML:验证XML ,一般不验证 5、 Ignore empty file:忽略空文件
6、 Include filename in output:输出步骤包含文件名字段 7、 Rownum in output:输出包含行号字段。
获取文件名
1、 Get:All files、Only folders、Only files
2、 输出字段包含:filename、short_filename、path、type(file/folder)、exists(Y/N)、ishidden、
isreadable、iswriteable、lastmodifiedtime、size、extension(扩展名)、uri、rooturi
获取文件行数
1、Rows Separator type:Carriage Return
文本文件输出
1、 Run this as a command instead:把结果输出到命令行或者脚本
2、 文件名里包含步骤数:如果你在多个拷贝中运行步骤,拷贝的数量将包含到文件名中。 3、 Include partition nr in filename:文件名中包含数据分区数量 4、 文件名包含日期 5、 文件名包含时间 6、 追加 7、 分隔符
8、 封闭符:封闭字段的一对字符,可选 9、 强制在字段周围加上封闭符 10、 头部:如果享有一个头部行,选中 11、 尾部:如果享有一个尾部行,选中 12、 格式:DOS文件的分隔符可以是回车或换行符 13、 编码:指定编码,如果空白就是用系统缺省的编码 14、 Compression(压缩):指定压缩的类型(zip,gzip) 15、 Right pad fields:在字段最后添加空格或者删除字符,直到长度达到指定 16、 Fast data dump(no formatting):当处理大量数据到一个文本文件时,提高性能.(不
包含任何格式化信息) 17、 分拆每一行:如果n比0大,用n行拆分文本文件,分割成多个部分。 18、 Add Ending line of file:指定输出文本的额结束行。
表输出
1、 Target Schema:目标模式。要写数据的表的Schema的名称。允许表明中包含“。”对数
据源来说是很重要的
2、 目标表:要写数据的表名。
3、 提交记录数量:在数据表中用事物插入行。如果n比0大,每n行提交一次连接。否则
不使用事务,速度会慢一些。
4、 裁剪表:在第一行数据插入之前裁剪表。
5、 忽略插入错误:使Kettle忽略比如违反主键约束之类的插入错误,最多20个警告将被
日志记录。在批量插入的时候这个功能不可用。 6、 使用批量插入:这个选项速度快,默认被选上。
7、 表分区数据:使用这个选项可以在多个表之间拆分数据。例如把数据放到表s1、s2、s3
中来代替之间插入数据到表s中。 例如:create or replace view sales as Select * from sales_200501 Union all Select * from sales_200502
8、 表名定义在一个字段里:使用此选项可以拆分数据到一个或者多个表里,目标表名可以
用你指定的字段来定义。例如如果你想存储客户性别数据,这些数据可能会存储到表M和表F里面。这个选项可以阻止这些字段插入到相应的表里。
9、 返回一个自动产生的关键字:往表中插入行时,是否产生一个关键字。 10、 自动产生关键字的字段名称:指定包含关键字的输出字段的字段名称。
插入/更新
1、 target schema:要写入数据的表的schema名称。允许表名包含”.”是很重要的。 2、 commit size:提交之前要改变的行数(插入/更新)。
3、 不执行任何更新:如果被选择,则不执行任何更新,只允许插入。
4、 用来查询的关键字:可以指定字段值或者比较符。可以用以下比较符:>、>=、=、<>、
<、<=、between、like、is null、is not null
5、 用来查询的关键字:输入用来指定记录的关键字。 6、 更新字段:指定想要插入/更新的字段。
更新(可以用插入/更新替代)
更新只能用来更新,不能用来插入数据。
删除
执行删除操作。
注意:在输出中,插入/更新、删除、更新对应的是数据库的增、删、改。
序列化到文件(以前是Cube output)
这个步骤存储数据到一个二进制文件。这个步骤有个优势就是回读的时候,文本文件的内容不需要解析。这是因为元数据也同时存储在cube文件中。 用输出的Cube文件,用cube输入读入文件练习下。
XML输出
1、 文件名中包含步骤号码:如果你在多个拷贝中运行一个步骤,在文件扩展名的前面,将
包含拷贝的号码。
2、 分割每一个行:每个xml文件中包含的记录数。0表示不分割。 3、 正在编码:在XML文件头部指定。 4、 字段选项卡
5、 元素名称:xml文件使用的元素的名称,不指定,则元素名称和字段名相同。 6、 10进制:小数点可以是”.”或者”,” 7、 分组:分组符可以是”,”或者”.”
8、 空:表示当字段值为空时,则用此字段值代替。
Excel输出
利用这个步骤,可以写入数据到一个或者多个文件中。 1、 文件名和扩展名:可以使用变量。 2、 头部、尾部:给文件添加头部和尾部。
3、 Split every…rows:分割数据到几个输出文件中。 4、 Use template:使用模板
5、 追加excel模板:是否将Excel输出添加到指定的Excel模板中。
Access输出
1、 数据库名:注意要写入扩展名,否则输出的文件名不包含扩展名”.mdb” 2、 创建数据库:选中则创建数据库。 3、 Target table:表名。
4、 Create table:选中则创建数据表。
5、 Commit size:定义输出数据时的提交尺寸。
数据库查询(Database lookup)
这个步骤允许你在数据库表中查找值(多个表之间需要进行连接查询时用到left join)。 1、 使用缓存:使用缓存,这意味着在某种查询值的条件下,每次数据库都能返回同样的结
果。
流查询
1、 源步骤:数据来源的步骤名称。
2、 查询值所需要的关键字:允许你来指定用来查询值的字段名称。值总是用“等于”比较
符来搜素。
3、 接收的字段:你可以指定用来接收字段的名称,或者在值没有找到的情况下的缺省值,
或者你不喜欢旧的字段名称的情况下的新字段名称。 4、 Preserve Memory(保留内存):排序的时候对数据行进行编码以保护内存。
5、 Key and value are exactly one integer field:排序的时候对数据行进行编码以保护内存。 6、 Use sorted list:是否用一个排序列表来存储值,它提供更好的内存使用。
7、 获取字段:自动获取源步骤的可用字段的名称,你可以删除你不想查询的字段。 8、 获取查询字段:自动获取输出流中的可用字段名称。你可以删除你不想返回的字段。
调用数据库存储过程
这个步骤允许运行一个数据库存储过程,获取返回结果。 1、 存储过程名称:调用的存储过程或者函数名称。 2、 自动提交:在运行存储过程的时候自动提交。
3、 结果名称:调用存储过程或者函数返回结果的名称。 4、 结果类型:返回结果的类型。
5、 参数:存储过程或者函数需要的参数列表。
5.1.名称:字段的名称
5.2.方向:可以是in,out,inout、
5.3.类型:使用输出参数,以便Kettle知道返回了什么。 注意:如果是函数的话,通过结果名称返回值;如果是存储过程的话,通过参数列表返回值。
HTTP客户端
http客户端根据一个附带条件的基准URL,来调用一个简单的调用。例如:http:// 1、 URL:基准url字符串 2、 结果字段名称:存储结果的字段名称。 3、 参数:用名称——值键值对来定义通过url传递的参数。 字段选择 这个步骤常常用来: 1、 选择字段 2、重命名字段 3、指定字段长度或者精度 以下是三个不同标签的功能: 1、 选择和修改:指定输出流中字段的精确顺序和名称。 2、 删除:指定必须从输出流中删除的字段。 3、 元数据:修改数据字段的名称、类型、长度和精度。 选项: 1、 字段名称:选择或者修改的字段名称。 2、 改名:如果不想改名就留空白。 3、 长度、精度:输入数字指定长度、精度(-1:代表没有长度、精度指定) 过滤记录 这个步骤允许你根据条件和比较符来过滤记录。一旦这个步骤连接到先前的步骤中,单机“ 1、 发送“true”数据给步骤:指定条件返回true 的数据将发送到此步骤。 2、 发送“false”数据给步骤:指定条件返回false 的数据将发送到此步骤。 排序记录 这个步骤利用你指定的字段排序行,无论他们是按照升序还是降序。 备注:当行数超过5000行的时候,Kettle使用临时文件来排序行。 1、 排序目录:临时文件存储的目录。如果缺省则为标准的系统临时文件夹。 2、 内存里存放的记录数:存储在内存中的行越多,排序的速度就越快。 3、 临时文件前缀:选择一个好记的前缀,以便在临时目录中容易寻找。 4、 压缩临时文件:当需要完成排序的时候,这个选项将压索临时文件。 添加序列 一个序列是在某个起始值和增量的基础上,经常改变的整数值。你可以使用数据库的序列,也可以使用Kettle决定的序列。 备注:Kettle序列在同一个转换中是唯一使用的。每一次转换运行的时候,序列的值又会重新循环一次(从开始值开始)。 1、 使用数据库获取序列 连接名称:选择数据库序列存在的连接名称。 序列名称:数据库序列名称。 2、 使用计数器计算序列 计数器名称、增量、最大值 空操作(什么也不做) 此步骤什么也不做。 作用:在你想测试什么的时候充当一个占位符,例如有一个转换,你至少需要两个彼此连接的步骤。如果你想测试文本文件输入步骤,你可以将它连接到一个D步骤,例如以下示例: 很不幸的是,流查询步骤仅仅能从一个流中查询信息,如果你需要做转换如下: 行转列(Row Normaliser) 这个步骤转动表,标准化数据格式。 例如你想更新一个实际的物理表,这种形式的数据是更容易掌握的。 1、 关键字段:不转的字段 2、 构成分组的字段:标准化的字段名称(例如Product A,Product C) 3、 目标字段:你可以制定一个或者多个新值将要转入的字段(例如sales) 拆分字段 拆分的字段类型必须是String。 1、 分隔符:分割字段的符号。 2、 字段:拆分形成的字段列表。 去除重复记录 该步骤从流中移除重复的记录。 1、 增加计数器到输出:如果你想知道多少重复行被去掉,就选择此选项。 分组(Statistics) 在进行分组的时候,只能使用分组字段和聚合函数。 注意:分组之前,必须先按照分组字段排好序,否则将会出现错误。 1、 分组字段:指定要分组的字段。 2、 聚合:指定需要聚合的字段。 3、 包含所有的行:如果选择这个,输出终究包含所有的行,不仅仅是聚合。 4、 临时文件目录:临时文件存储的目录。 5、 临时文件前缀:指定临时文件文件名的前缀。 6、 添加行号,每一个分组重启:如果你想给每一个组添加行号,选此项。 设置为空值(Null if) 如果某个字符串的值等于指定的值,设置那个值为空。 计算器 可以进行数值,日期等格式数据的简单计算。计算器的重要优势是,计算速度比js快几倍。 常用计算 功能 A+(-、*、/) B A*A… 100*A/B SQRT(A*A+B*B) ROUND(A[,B]) Date A + B days Year of date A 加减乘除 A2,、开方 A和B的百分比 求斜边长 四舍五入 日期 Date A + B days 年 A和B A 描述 数学 A和B A A和B A和B A或A和B 需要字段 Month of date A Day of year of date Day of month of date A 月 日(一年中的第几天) 日(一月中的第几天) 增加XML(Add XML) 这个步骤允许你将在XML中的行字段内容编码,XML以字符串字段的形式添加到行中。 1、 编码:使用的编码,在XML文件头中指定。 2、 输出值:包含XML的新字段名称。 3、 根XML元素:生成的XML根元素的名称。 增加常量 这个步骤很简单,主要是添加常量到流中。它的使用也很容易:用字符串形式指定名称,类型和值。利用选择的数据类型指定转换格式。 行转列(Row Denormaliser) 这个步骤允许你通过查询键值对来反向规格化数据。也可以立即转换数据类型。 行扁平化 这个步骤允许你扁平化预备的数据。 示例: 上面的示例,步骤设置如下: 值映射 这个步骤简单的映射字符串,从一个值映射到另一个值。 被冻结的步骤(Blocking Step) 这是一个非常简单的步骤。它冻结所有的输出,直到从上一步骤来的最后一行数据到达, 最后一行数据将发送到下一步。你可以使用这个步骤触发常用插件、存储过程和Java Script 等等。 记录关联(笛卡尔输出) 这个步骤允许你组合步骤中所有的行。 1、 临时目录:如果你想更多的行,指定系统存储临时文件的目录。 2、 最大缓存大小:系统从临时文件读取数据的缓存大小。 3、 读取的主要步骤:指定读取最多数据的步骤名称。 4、 条件:你可以指定复杂的条件来限制输出行数。 数据库连接 这个步骤允许你使用先前的步骤的数据,运行一个数据库查询。 能够指定查询参数: 在sql查询中用“?”,运行查询时使用数据网格中的数据。 1、 Number of rows to return :0代表所有行,其他数字限制行的输出。 2、 外连接?:选中,则总会返回一个结果,就算查询脚本没有结果。 3、 获取字段:获取来自上一个步骤的数据。 合并记录 这个步骤允许你比较两个行流。如果你想在两个不同时间比较数据,这是非常有用的。它常被用于数据仓库源系统没有包含最后更新日期的情况。两个行流被合并,一个是引用流(旧数据),一个比较流(新数据)。每次都是行的最后版本通过下一个步骤。行有以下标记: 1、 “identical”:关键字在两个流中都存在,并且值相同。 2、 “changed”:关键字在两个流中都存在,但是一个或者更多的值不同 3、 “new”:引用流中没有找到关键字。 4、 “deleted”:比较流中没有找到关键字。 比较流中的数据进入下一步骤,除非在“删除”的情况。 排序合并(Sorted Merge) 这个步骤合并来自多个输入步骤的数据行,并且这些行用指定的关键字排序。包括以下选项: 1、 字段:指定排序的关键字段。 Merge Join(合并连接) 这个步骤将来自两个不同步骤输入的数据执行一个高效的合并。合并选项包括Inner、left outer、right outer、full outer。 备注:这个步骤将输入的行按指定的字段存储。连接时连接字段必须有序。 Java Script值(Modified Java Script Value) 这个步骤允许你用JavaScript语言做复杂的运算,改进的js效率更高,更易用。 1、 插入字段:插入字段及字段的值。 2、 测试脚本:测试脚本的语法。 3、 获取变量:获取最新的变量并且插入到“字段”网格中 4、 js函数见附录1。 改进的js针对可用的脚本、函数、输入字段和输出字段,提供一个树菜单浏览。 1、 Transformation Script:展示你在步骤中创建的脚本列表。 2、 Transformation Constants(转换常量):一个包含 SKIP_TRANSFORMATION,ERROR_TRANSFORMATION,CONTINUE_TRANSFORMATION等静态常量的列表。 3、 Transformation Functions:包含多种String,Numeric,Date,Logic以及特殊函数,你可 以在创建脚本的时候使用它。 4、 Input fields:步骤输入字段列表。双击或者拖拉可以将字段插入到你的脚本中。 5、 Output fields:步骤输出的字段。 执行SQL语句 这个步骤中你可以执行sql脚本(执行增删改脚本DDL等),或者在转换初始化的时候执行,或者在步骤的每一个输入行执行。 1、 执行每一行:读取上一步骤传来的每一行时都执行一次sql脚本。 2、 参数:用来给sql中的“?”赋值。 3、 包含插入状态的字段:该字段值为执行sql语句插入的行数。 4、 包含更新状态的字段:该字段值为执行sql语句更新的行数。 5、 包含删除状态的字段:该字段值为执行sql语句删除的行数。 6、 包含读状态的字段:该字段值为执行sql语句读数据的行数。 注意:该步骤主要用来对数据进行增、删、改,执行对数据的查询操作,使用“表输入”步骤(可以执行任何查询语句,包含连接、分组、排序等)。 例子: Execute row SQL script 上一个步骤某字段中存储有sql语句,从该字段获取sql语句执行。 维度更新/查询 联合更新查询 这个步骤允许你在一个junk-dimesion 表里存储信息。 映射(子转换) 如果你希望某个转换多次运行,你可以将重复的部分添加到一个映射中。映射是这样一个转换: 1、 指定输入如何从映射输入中到达。 2、 指定输入字段如何转换:字段被添加或者删除。 从结果获取记录 这个步骤返回在一个任务中先前步骤生成的行。你可以进入选择先前步骤生成的元数据字段。 复制记录到结果(字符串) 这个步骤允许你在一个任务中将行数据(内存中的)传递到下一个步骤。 Set Variables(设置变量) 这个步骤允许你在一个任务中或者虚拟机中设置变量。他仅仅可以用一行数据来设置变量值。 下面是可以用的范围设定: 1、 Valid in the virtual machine:整个虚拟机将知道这个变量,转换仅仅可以在单机模式下运行。 2、 Valid in the parent job:变量仅仅在父任务中可用。 3、 Valid in the grand-parent job:变量仅仅在祖父任务中合法。 4、 Valid in the root job:变量仅仅在根任务中合法。 Get Variables(获取变量) 这个步骤允许你获取一个变量,它可以返回行或者附加值到输入行。 备注:你需要指定完整的变量格式${varibale}或者%%variable%% Get files from result(从以前的结果获取文件) 1、 每次在转换、任务、文件细节、任务条目、步骤等处理、使用或者创建一个文件时,文 件被捕获并且附加到结果中。你可以使用这个步骤访问那些信息。 2、 下面是输出的字段。 字段名 Type filename Path Parentorigin Origin Comment timestamp 类型 String String String String String String Date Somefile.txt C:\\Foo\\Bar\\somefile.txt Process files transformation Text File Input Read by text file input 2006-06023 12:34:56 示例 Normal,Log,Error,Error-line 等 Set files in result 在某种情况下,我们可以操纵输出结果中的文件列表。例如mail任务条目可以使用文件列表来关联邮件,可能你不需要发送所有的文件,你可以在此步骤中指定你想要发送的邮件。 Injector(记录注射器) 注射器主要针对一下人使用:想利用Kettle API和Java来注射记录到转换中。 下面是如何使用它: 1、 你可以使用RowProducer对象来访问一个Trans对象。 2、 你可以参考在包中的使用案例:be.ibridge.kettle.test.rowproducer 3、 使用以下代码 Trans trans = new Trans(…TransMeta); Trans.prepareException(args); RowProducer rp = trans.addRowProducer(String stepName,int stepCopy) 然后你可以在转换中启动线程,在转换运行的时候注射行。 Trans.startThreads(); … rp.putRow(Row SomeRowYouHaveToInject); … Socket reader(套接字读入器) 套接字读入器是通过TCP/IP协议将数据从一个服务器向另一个服务器传输。 套接字输写器(Socket writer) 套接字输写器是通过TCP/IP协议将数据从一个服务器向另一个服务器传输。 聚合记录 这个步骤允许你在所有行的基础上快速的集合行。下面是可用的聚集类型: SUM/AVERAGE/COUNT/MIN/MAX/FIRST(字段的第一个值)/LAST(字段的最后一个值) 字段:聚合类型的字段。 备注:分组步骤也能实现相同的功能,还可以进行分组聚合,此步骤不可以,不推荐使用。 流XML输入(属sax解析,和Get data from xml功能相同) 这个步骤主要提供值的解析,他信赖与SAX解析器,在大文件解析上能够提供更好的性能。它与XML输入非常相似,仅仅在内容和字段制表符上略有不同。 1、 Include filename in:输出中将包含文件名字段。 2、 Rownum in output:输出包含行号 3、 Location(see also):指定xml文件中重复的元素经由的路径。以下的元素列被用来指定元 素及其位置:A:指定一个属性;Ep:指定位置定义的元素;Ea:指定属性定义的元素。例如Ea=Object/class:car,表示属性class的值为car的Object元素。 4、 重复:如果你想重复上一行中的值就是用此选项。 5、 Precision(精度) 6、 Position:Ep=proTypeId2/n ,其中n表示proTypeId2元素处于第n列。A=class/1:class 属性位于第一个位置。 Abort(中止) 这个步骤允许你在观察输入的时候中止步骤。它的主要用途是错误处理,在一定数量行流过错误的连接时中止转换。 1、 失败阙值:中止转换开始行数。如果设置为0,在第一行的时候,步骤将被中止。 2、 失败消息:中止的时候放入日志文件的消息,如果没有输入就使用缺省消息。 3、 总是记录行数:中止步骤总是记录处理的行数。 Oracle Bulk Loader(Oracle 批量装载) 这个步骤允许你大批量加载数据到Oracle数据库,它将用一个正确的装载格式,然后调用Oracle的SQL*Loader数据加载工具加载到指定的表中。 1、 Target schema:写入数据的表的schema名称,表名中可以包含“.” 2、 Sqllder(loader) path:sql*Loader数据加载工具的全路径。 3、 Loader method(装载方式):Automatic load 和manual load。如果是自动加载,步骤将 在用指定的参数收到所有的输入后运行Sqlldr工具。如果是手动加载,将生成一个可以作为后门使用的控制和数据文件。 4、 Loader action(加载动作):Append、Insert、Replace、Truncate,这些会映射到sqlldr的 动作来执行。 5、 Maximum errors:发生错误的最大行数,这时sqlldr将被中断。与sqlldr的“ERROR”属 性来通信。 6、 Commit:提交的行数,与sqlldr的“ROWS”属性通信。 7、 Bind(绑定) Size:与sqlldr的“BINDSIZE”属性通信。 8、 Read Size:与sqlldr的“READSIZE”属性通信。 9、 Control file:sqlldr控制文件的名称。 10、 Data file:数据将被写入的数据文件的名称。 11、 Log file:日志文件的名称,可选。 12、 Bad file:坏文件的名称,可选。 13、 Discard(废) file:废文件的名称,可选。 14、 Encoding:数据指定的编码格式。 15、 Direct path(直接路径):直接路径加载的开关,与sqlldr的“DIRECT=TRUE”通信。 16、 Erase cfg/dat files after(使用后删除cfg/dat文件):加载后是否删除控制文件和数 据文件的开关。 17、 Table field:Oracle表中加载的表字段。 18、 Stream field:输入行中带来的字段。 =================================== Job=================================== 任务设置(Job Settings)未找到 任务条目(Job Entries)未找到 Start Start是任务执行的入口,首先必须是任务可以执行。只有无条件的任务条目可以从Start入口连接。Start图标也包含基本的进度安排功能,如果你编辑此条目,你可以得到以下屏幕: Dummy(假程序/沉默) 在一个任务中使用Dummy条目讲什么也不做,这可以是一个任务更清晰战士,或者在执行循环中使用。 Success 如果任务得上一个条目错误数量为0,则返回true,否则返回false Transformation(转换) 你可以用一个转换任务条目执行一个先前定义的转换。 1、 Job名称:任务条目的名称,在单个任务中,必须唯一。在执行结果处任务/任务条目处 显示。 2、 转换名称:需要运行的转换的名称。转换可以没有名称,但不能没有转换文件名。 3、 资源库路径:指定资源库目录。 4、 转换文件名:如果你不是使用资源库工作,就指定转换运行的XML文件名。 5、 指定日志文件:检查是否为转换指定一个单独的日志文件。 6、 日志文件名、日志文件扩展名、日志文件包含日期?、日志文件包含时间?日志级别 7、 复制以前结果单参数:上一次的转换结果复制到参数中 8、 执行每一个输入行:即每个输入行都执行一次。 9、 在执行前清除结果行列表:在转换运行之前,检查确保列表或者结果行已经被清除。 10、 执行前清除结果文件列表:在转换运行之前,检查确保列表或者结果文件已经被清 除。 Job 你可以使用job条目来运行一个先前定义的任务。 1、 作业项名称:job条目名称。 2、 作业名称:需要运行的任务的名称。 3、 资源库目录:指定资源库目录。 4、 作业文件名:如果你不是使用资源库工作,就指定转换运行的XML文件名。 5、 指定日志文件、追加日志文件、日志文件名、扩展名、包含日期、包含时间、日志级别 6、 将上一结果作为参数:将上一条目结果作为参数。 7、 对每个输入行执行一次:对每个输入行都执行一次 Shell 你可以使用Shell任务条目在任务运行的主机上执行一段Shell脚本。 备注:Shell脚本能在控制台窗口输出文本,输出将转换到Kettle日志系统,这不会影响Shell脚本的运行。 1、 作业项名称: 2、 Insert Script:插入脚本。 3、 脚本文件名:要运行的Shell脚本文件名。 4、 指定日志文件:检查是否为Shell脚本指定一个单独的日志文件。 Mail(Port:25) 你可以使用Mail任务条目来发送E-mail。 1、 邮件作业名称 2、 目的地址(Destination Address): 3、 抄送(CC=Carbon Copy): 4、 暗送(BCc=Blind CarbonCopy): 5、 SMTP 服务器、端口号 6、 用户验证(Use authentication)、用户名、密码 7、 联系人、联系电话 8、 带附件:是否带有附件。 9、 压缩成统一文件格式:是否需要压缩所有选择的文件到归档文件中。 10、 压缩文件名称:指定压缩后文件名称。 SQL 执行SQL语句。 FTP 你可以使用FTP任务条目从FTP服务器上获取一个或者多个文件。 常用协议端口号:HTTP(TCP):80;SMTP:25;FTP:21; TCP/IP协议:接口层、网络层(IP)、传输层(TCP、UDP)、应用层(HTTP) 1、 FTP服务器名称/IP地址: 2、 Server Port:21 3、 用户名、密码 4、 代理服务器:代理服务器IP 5、 代理服务器端口:代理服务器端口号 6、 代理服务器用户名、密码 7、 二进制模式:如果文件需要使用二进制模式,选中此项。 8、 超时:FTP服务器超时时间。 9、 使用活动的FTP连接:使用主动的FTP,以代替被动模式(默认)。 10、 控制编码:ftp控制指令的编码。 11、 远程目录:从服务器获取文件的远程目录。 12、 通配符(正则表达式):如果想选择多个文件,指定一个正则表达式。 13、 获取后删除文件:从ftp服务器获取文件后,删除原文件。 14、 目标目录:本机存放文件的目录。 15、 不覆盖文件:如果指定目标目录文件名已经存在则跳过文件。 备注:如果文件包含某些字符(spaces e.g.[例如]) Table Exists 你可以使用Table exists任务条目检验数据库中是否存在某个表。任务条目返回的结果只有成功失败。 File exists 你可以使用File exists任务条目检验在Kettle运行的服务器上是否存在某个文件。 1、 变量:使用变量作为文件名。 Javascript 你可以使用该任务条目来计算一个布尔型的变量,这个变量可以在决定下一个步骤是否将被执行时使用。用户可以使用一下变量: 1、 Errors:先前的任务条目的错误数。 2、 Lines_input:从数据库或者文件读取的行数。 3、 Lines_output:输出的行数。 4、 Lines_updated:数据库表更新的行数。 5、 Lines_read:从先前转换步骤读取的行数。 6、 Lines_written:往下一个步骤写入的行数。 7、 Files_retrieved(取回):从FTP找到的文件数。 8、 Exit_status:Shell脚本退出的状态。 9、 Nr(integer):任务条目数。每下一个条目就会自动增长。 10、 Is windows:如果Kettle运行在windows平台上就返回true。 11、 Javascript:需要运行的脚本,脚本最后一句的结果必须是布尔型。 SFTP(Secure[可靠的] FTP Port:22) 你可以使用SFTP任务条目通过安全的FTP协议在FTP服务器上获取一个或者多个文件。 附录1 : JS函数 1、 String Functions date2str(var [,var[,var[,var]]]) startsWith(var,var)/endsWith(var,var) indexOf(var,var[,var]) lower(var) upper(var) lpad(var,var,var)/rpad(var,var,var) ltrim(var)/ rtrim(var)/trim(var) num2str(var[,var[,var]]) replace(var,var,var) str2RegExp(var,var) substr(var,var[,var]) 2、 Numeric Functions abs(var) ceil(var)/floor(var) str2num(var[,var]) trunc(var) 3、 Date Functions dateAdd(var,var,var) dateDiff(var,var,var) getNextWorkingDay(var) year(var)/month(var)/week(var)/quarter(var) str2date(var[,var,[var[,var]]]) 4、 Logic Functions isDate(var) isNum(var) isRegExp(var,var) 5、 Special Functions Alert(var) decode(var,var,var) getEnvironmentVar(var) getVariable(var,var) :获取变量,例如:var dayno=getVariable(“dayno”,-1) print(var) /println(var) setVariable(var,var,var) writeToLog(var[,var]) 6、 File Functions copyFile(var,var,var) createFolder(var) deleteFile(var) fileExists(var) getFileExtension(var) getFileSize(var) getLastModifiedTime(var) getParentFoldername(var) getShortFilename(var) isFile(var)/isFolder(var) moveFile(var,var,var) 附录2:常用的转换(Transformation)和作业(Job) ==================Kettle===================== SQL中的一些常用操作在kettle中对应的步骤: 1、 查询:“表输入”,直接输入sql语句进行查询。 2、 插入数据:“插入/更新” 3、 修改:“更新” 4、 删除记录:“删除” 5、 连接:“Merge Join” 6、 分组:“分组” 7、 聚合:“分组” 8、 排序:排序记录 9、 过滤:“过滤记录” Get Variables Set Variables Write to log:输出日志到控制台 Blocking Step(被冻结的步骤) 这是一个非常简单的步骤。它冻结所有的输出,直到从上一步骤来的最后一行数据到达, 最后一行数据将发送到下一步。你可以使用这个步骤触发常用插件、存储过程和Java Script 等等。Kettle中上一个步骤接收到一部分数据后,这些数据就会流向下一个步骤,所以被冻结的步骤用来等待上面所有的操作都完成。 用来等待上面步骤的数据都到达,例如用来等待文件导出完成。 执行SQL语句 load data local infile '/data/tmp/bl_fact_mapping_pid2userid' into table bl_fx_sale.MAPPING_PID2USERID_TMP CHARACTER SET utf8 FIELDS TERMINATED BY '||' ESCAPED BY '\\\\' IGNORE 1 LINES (PID,UserId,MatchDay,MatchCount); drop table if exists bl_fx_sale.MAPPING_USERID2PID_TMP; create table bl_fx_sale.MAPPING_USERID2PID_TMP like bl_fx_sale.MAPPING_USERID2PID; rename table bl_fx_sale.MAPPING_PID2USERID_TMP to bl_fx_sale.MAPPING_PID2USERID; CheckTaskStatus Job Entry:检测任务状态 任务状态的作用是用来标识任务的正确执行与否。 批次号:用来标识任务状态的批次。例如,今天的任务执行成功与否不能依靠昨天的任务标志。 批次号和任务状态,一般必不可少。 TaskStatus Job Entry:设置任务状态 Dummy(沉默)空操作 什么也不做 Success Job参数(Paramters): 在Job设置中,给Job设置参数dayno,值是在执行脚本时传入。 Merge Join(关联记录) 关联记录之前数据必须有序,一般使用该步骤时,也要使用 Abort(失败、终止) 因篇幅问题不能全部显示,请点此查看更多更全内容