Kettle用户操作手册1.kettle介绍1.1什么是kettleKettle是“KettleE.T.T.L.Envirnonment”只取首字母的缩写,这意味着它被设计用来帮助你实现你的ETTL需要:抽取、转换、装入和加载数据;它的名字起源正如该项目的主程序员MATT所说:希望把各种数据放到一个壶里然后以一种指定的格式流出。Spoon是一个图形用户界面,它允许你运行转换或者任务。1.2Kettle的安装要运行此工具你必须安装Sun公司的JAVA运行环境1.4或者更高版本,相关资源你可以到网络上搜索JDK进行下载,Kettle的下载可以到取得最新版本。1.3运行SPOON下面是在不同的平台上运行Spoon所支持的脚本:Spoon.bat:在windows平台运行Spoon。Spoon.sh:在Linux、AppleOSX、Solaris平台运行Spoon。1.4资源库一个Kettle资源库可以包含那些转换信息,这意味着为了从数据库资源中加载一个转换就必须连接相应的资源库。在启动SPOON的时候,可以在资源库中定义一个数据库连接,利用启动spoon时弹出的资源库对话框来定义,如图所示:单击加号便可新增;关于资源库的信息存储在文件“reposityries.xml”中,它位于你的缺省home目录的隐藏目录“.kettle”中。如果是windows系统,这个路径就是c:\DocumentsandSettings\username\.kettle。如果你不想每次在Spoon启动的时候都显示这个对话框,你可以在“编辑/选项”菜单下面禁用它。admin用户的缺省密码也是admin。如果你创建了资源库,你可以在“资源库/编辑用户”菜单下面修改缺省密码。1.5定义1.5.1转换主要用来完成数据的转换处理。转换步骤,可以理解为将一个或者多个不同的数据源组装成一条数据流水线。然后最终输出到某一个地方,文件或者数据库等。Step:转换步骤,数据流中的处理步骤,对数据进行处理Hop:节点连接,一个Hop代表两个步骤之间的一个或者多个数据流。一个Hop总是代表着一个步骤的输出流和一个步骤的输入流。1.5.2作业完成整个工作流的控制,执行数据处理任务,由一个或多个任务条目(JobEntries)组成,一个任务条目也可以引用一个转换,也可以执行一些文件处理(比较,删除等),还可以ftp上传,下载文件,发送邮件,执行shell命令等。1.5.3变量(Variables)试用变量的方法可以如下制定:${Variable}(unix)%%Variable%%(windows)1.6基本操作1.6.1拖拽对象按住左键“拖拽”对象到工作区,如下图将表输入拖拽到右侧工作区。1.6.2右键编辑功能如图点击“表输入”右键,选择“编辑步骤”编辑表输入属性设置(或双击)。如果语句中有变量,就要在上图中“替换SQL语句里的变量”打勾;变量在Parameters中设置如下图所示:点击工作区空白处,编辑“转换”的属性设置,如下图:1.6.3连接线1)按住shift功能键后左键按住要连接的起始对象指向终止对象。2)在连接线上右键可以删除节点连接。如下图,按住shift功能键后左键按住“表输入”后指向“表输出”:1.6.4执行、调试、停止如图所示:○2转换实例(Transformation)2.1数据转移(库—库)a.文件—新建—转换b.从左侧的核心对象中拖动你想要的步骤至右侧的空白区(此例中只需拖入表输入与表输出即可),并用节点连接。**在左侧的核心对象常用的步骤有:输入、输出、转换、连接、查询和脚本。c.双击表输入--数据库连接—新建—填写你要连接的数据库信息—Test—okd.根据需要编写你的sql语句确定rownum表示输出的语句的条数,设置如下:在空白处点击右键e.表输出设置数据库连接:同表输入,根据需要将生成的表导入到相同或不同的数据库;目标表:即生成的表的名字Sepecifydatabasefiles要打勾,当要在Databasefiles里要获得字段就可以点击Getfiles就可以获得字段,可以根据自己的需要是否删掉不想要的字段。Enterfieldmapping是设置流里与生成表里的字段的映射关系;如下图所示:@Sreamfield是表的输入流,也就是输入表的字段,Tablefield是输出表的字段,可以根据自己的需要,起字段名称。@当字段添加完成后,要执行Sql,在数据库空中就创建了表及表的结构。@最后,我们就可以点击运行按钮了如果执行成功,就可以到数据库查看你所生成的表了。2.2值映射a.界面设计b.值映射如图所示:值映射即把某一字段的源值改变成目标值或者将某一字段名更改成目标字段名并给其赋值。2.3去除重复记录a.界面设计b.去除重复记录如图所示:选择某一个或某些字段将字段中的重复值去掉;当用来比较的字段是多个时,他们之间是and的关系@增加计数器到输出:如果你想知道多少重复行被去掉,就选择此选项。2.4增加常量如图所示:给表中增加字段,并可以给其赋值。2.5字段选择如图所示:从表输入中选择字段,对字段进行处理后输出;若无移除,则‘选择和修改’中的字段要与‘元数据’中的字段保持一致;输出可以进行两种选择:分发与复制。分发就是将所选字段的数据依次分配到所选的输出表中这个步骤常常用来:1、选择字段2、重命名字段3、指定字段长度或者精度以下是三个不同标签的功能:1、选择和修改:指定输出流中字段的精确顺序和名称。2、删除:指定必须从输出流中删除的字段。3、元数据:修改数据字段的名称、类型、长度和精度。选项:1、字段名称:选择或者修改的字段名称。2、改名:如果不想改名就留空白。3、长度、精度:输入数字指定长度、精度(-1:代表没有长度、精度指定)2.6拆分字段如图所示:可以把某一字段拆分成多个字段,例如:type_name=’代收话费,新装天翼手机’,可以拆分成type_name_a=’代收话费’,type_name_b=’新装天翼手机’;这个例子中只有type_name1有值,type_name为空**拆分的字段类型必须是String。2.7排序记录如图:即根据需要将某一字段排序(升序或降序)后输出2.8行扁平化效果如图:把多条记录中不存在重复值的字段进行扁平化:具体设置如下2.9计算器单击计算,会出现各种计算方法来完成你需要的计算。○3输出3.1文本文件输出与xml文件输出只需定义输出文件的存放位置并在字段选项中获取字段就可以了。3.2插入/更新@@如果是只想做新插入的话,就把“不执行任何更新”打勾。3.3更新○4查询4.1数据库查询数据库查询—可用于多表连接○5连接5.1MergeJoin如图所示:可以选择内连接、左外连接、右外连接和全连接中的任意一种进行表关联后输出。连接字段即为两个表的关联字段。5.2记录关联(笛卡尔输出)如上图条件选项:可以根据条件来限制输出的行数与内容5.3合并记录○6脚本6.1执行SQL脚本@如果直接在脚本中创建表的结构,可以这样做创建一个job可以设置不需要定时,如下图所示在SQL脚本中写sql语句:@如果不需要用sql语句来创建表的结构,可以这样做,创建一个转换。不需要我教你了吧,相信你能行的~~6.2Modifyjavascriptvalue表输入和表输出不需要我在给你做了吧,你也看了这么多了,自己动手做吧,下面我们来说说Modifyjavascriptvalue里面的设置@注意:你定义新的字段,要设置字段的类型○7分组注意:分组前要把分组的那个字段进行排序。这给你看到这吧,上面也给你展示过去除重复记录的例子了,剩下的自己弄吧~~哈哈⑧生成记录generaterows主要是用于:生成一些固定字段的记录,主要用来模拟一些数据进行测试。这个例子是根据路径获取文件名并将文件名输出到文本中;获取文件名是通过js脚本实现。&&下面进入我们的实战升级:@追加模式概念:全量追加模式(一天创建一个表,保存历史数据)增量追加模式(一共一个表,只更新每天新插入的数据)全量追加模式展示:思考:这个模式的关键是每天创建一张表,只要每天创建一个动态的表即可。脚本里写的就是每天创建一个表,相信你能看懂~~~怎样来控制每天执行一次呢,不可能每天手动的执行一次吧,这回就该用到job了。时间设置每天执行一次再放你需要绑定的转换;转换文件名:是放你不链资源库做的转换下面那俩个是连接资源库做的转换,要选好哦~~增量追加模式展示:思考:每天更新表中的数据,可以根据日期这个字段来找到突破口。前提:是把表中的数据全部都抽取到一张目标表中,再把这张目标表作为源表,来找这张表中最大的日期,只要大于这张表的最大日期,就是新增加的数据了~~~这个就不需要我给你做了吧!这个是增量追加的前提,把表中所有的数据抽取到目标表中。下面来看增量追加的重要过程:@这个过程就是把目标表作为源表取最大日期,把这个日期作为参数传给表输入2@这个过程用?来接受传过来的参数。注意:“从步骤插入数据”要选上一步骤的名称哦~注意:因为只更新新插入的数据,所以“不执行任何更新”要打勾。因为也是每天执行,所有还是创建一个job来绑定这个转换,看了这么多,不要我教你了吧,自己快动手做吧~~@传参数:可以用%%变量%%或${变量}这是一个简单的抽取数据@在执行的时候,会出现变量,在相应的变量的后面的值上,写上sql语句,例子andtype_id=10