Kettle Spoon.docx
《Kettle Spoon.docx》由会员分享,可在线阅读,更多相关《Kettle Spoon.docx(17页珍藏版)》请在冰豆网上搜索。
KettleSpoon
Kettle简要说明文档
一.Spoon
1.登陆方式
1.1以创建Repository的方式登陆,会把生成的transformation保存到数据库上,在Sybase数据库环境上有存在很多bug,不推荐以该种方式登陆。
1.2以不创建资源库(NoRepository)的方式登陆,会把生成的transformation保存到相应的文件,即以文件方式管理。
以下都是在不创建资源库下的说明!
以Sybase作为数据库!
2.创建连接
例如
3.基本功能
3.1以文本文件作为数据源,以表的方式保存(文本文件中内容为中文时,相应存入到表中的记录为乱码,存入到文件中时不存在中文乱码问题)
双击Textfileinput先选择要作为数据源的文本文件,再点击Add,点面板中Content,去掉Header复选框,点面板中Fields,点Getfields为文本文件设置列,如图1,双击Tableoutput,选择Connection,输入Targettable,点SQL以生成sql语句,再Execute,如图2
图1
图2
3.2以文本文件作为数据源,以文件的方式保存
设置数据源操作与3.1类似,双击Textfileoutput以设置文本文件输出格式,可以点面板中Content列来设置,可去除Separator,Enclosure中内容来维持与源文本文件格式一致,如图3
图3
3.3以Excel文件作为数据源,以表的方式保存(当excel文件中有内容为中文时,相应存入到表中的记录内容为乱码)
双击ExcelInput选择要作为数据源的excel文件并将它Add,点面板中Sheets----Getsheetname(s)…,将相应的sheet加入,如图4;点面板中Fields----Getfieldsfromheaderrow…以得到相应表中的字段,如图5
图4
图5
3.4分别以2个表中的数据作为数据源,并且过滤掉重复的记录,再以表的方式保存(2个作为数据源的表中的字段必须一致)
双击Uniquerows,点击Get以得到上一Step得到的字段,可以对字段进行筛选,如图6
图6
3.5以表的数据作为数据源,根据条件过滤掉记录,再以表的方式保存
双击Filterrows,可以双击选择相应字段,双击可以为字段赋值,双击”+”可以连接下一个条件
图7
3.6以表的数据作为数据源,根据条件过滤掉字段,再以表的方式保存
双击Selectvalues,点击Getfieldstoselect一得到上一个Step中的所有字段并且筛选字段,如图8
图8
3.7以表的数据作为数据源,根据条件将数据存入到目标表
当条件全部相等只作更新,否则将往表中插入数据,如图9
图9
只做更新。
3.8以表的数据作为数据源,对表中字段进行计算后,数据再存入到目标表
双击Calculator进入设置面板,点击Calculation可进入条件表达式界面,如图10
图10
3.9以表的数据作为数据源,对表中字段先进行排序,再分组,数据再存入到目标表(推荐分组前先排序)
双击Sortrows----GetFields并且筛选出排序字段,如图11,双击Groupby,再点击GetFields以筛选出分组字段,点击Getloogupfields以筛选出所要查找的字段,如图12
图11
图12
3.10比如说有这样一个要求,有2个表A,B,A表中有字段a,b,B表中有字段a,c,d,我要得到C表,C表字段是e,f,e字段来源于A表的a,f字段来源于B表的c+d
图13
3.11获取系统信息问题
图14
如图可以将获取的系统信息值赋给变量,该变量可以传向下一个step,在下一个step的sql语句里可以使用该变量,但是预览step的时候出现异常(报空指向错),原因不明
3.12javascriptvalue问题
图15
如图15,使用javascriptvalue可以实现复杂的字段运算,图中a,b分别是来源于上一step的2个字段,upper()方法将字段的值全部转化为大写,转化后可以插入到目标表,如果说有一字段c,该字段是日期类型,c.dat2str(yyyyMMdd),便把c的值转化成”yyyyMMdd”格式的值,可以供下一step使用
3.13调用存储过程问题
(1)如果无输入输出参数
方法一:
可以使用如下图标
“调用DB存储过程”原本是需要一个输入step来作为存储过程的上一个step,否则无法执行,现在已经通过修改源代码实现可直接调用存储过程,存储过程名称原本是[数据库库名称].[存储过程名称]改成[用户角色名].[存储过程名称],如图16
图16
方法二:
可以使用如下图标
需要在图17中写执行存储过程的语句
图17
(2)如果有输入输出参数且输入输出参数的值不来自于上一个step
如第一种情况的方法二
(3)如果有输入输出参数,且输入输出参数的值来自于上一个step,比如来自与系统信息,如下方法
双击”获取系统信息”,将要使用的信息值取一个name,如图18,再双击”SetVariables”,将上一step获得的信息值赋给变量,Variablescopetype是设置变量范围的,如图19,双击”执行SQL脚本”,点击获取字段(此步为必须),然后在SQL窗口中写SQL语句,在语句中使用到上一step变量的时候一律用’?
’代替,顺序和获取系统信息中时的一致,比如此例中va这个变量对应第一个问号,vb这个变量对应第二个问号,顺序关系至关重要!
且必须选择”执行每一行”
图18
图19
图20
3.14int型和varchar型相互转换问题
现已通过修改be.ibridge.kettle.core.database下的Database.java实现相互转换问题,以后可以实现更多类型转换问题
4.注意
4.1程序有时候会突然强制退出,所以要做到随时保存transformation
二.Chef
1.基本功能
1.1定时执行作业
图21
如图21,如果设置定时,请选择”重复”,间隔时间可以按分钟,按天,按周,按月,双击abcm_proc.ktr(abcm_proc.ktr是一个transformation),在文件名处点浏览选择由spoon生成的transformation文件,如图22
图22