• 1. 1KETTLE基本知识 主讲:韦汉靖
  • 2. 简介 Kettle是一款国外开源的etl工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。2
  • 3. 内容  一、KETTLE的要求环境(JDK版本)、安装、基本操作。  二、KETTLE的组件的类型基本说明(作业与转换)  三、基于表对表的同步  四、基于文件到表的同步  五、基于表到文件的同步  六、JAVASCRIPT的基本应用  七、文件FTP下载、上传。  八、作业调用作业、转换。  九、KETTLE自带例子  十、KETTLE输出日志说明  十一、启动脚本说明。3
  • 4. 相关网站信息http://www.pentahochina.com http://pdi.itpub.net/ http://wiki.pentaho.com 4
  • 5. KETTLE的要求环境(JDK版本)、安装、基本操作KETTLE要求先安装JDK1.5版本或以上svn 下载svn://pentahochina.com/kettle/3.2_xgn 无需安装下载后直接运行spoon.bat即可 5
  • 6. KETTLE的要求环境(JDK版本)、安装、基本操作6
  • 7. KETTLE的要求环境(JDK版本)、安装、基本操作7
  • 8. KETTLE的要求环境(JDK版本)、安装、基本操作8
  • 9. KETTLE的组件的类型基本说明(作业与转换)Kettle中有两种脚本文件,transformation(转换,后缀为.ktr)和job(作业, 后缀为.kjb),transformation完成针对数据的基础转换,好比工厂里的生产流水线,每个组件相当于一个员工;job则完成整个工作流的控制,好比工厂里的管理。 如果用记事本打开文件可发现转换和作业都是xml类型文件。9
  • 10. KETTLE的组件的类型基本说明(作业与转换)作业:分串行执行和并行执行,串行执行是先执行完其中一条线再执行另一条线,并行是两条线同时执行,同一条线上的两个步聚会先执行前面的再执行后面的,每个步骤执行结果分两种:true(成功)/false(失败),根据返回结果可以控制流程走向。 10
  • 11. KETTLE的组件的类型基本说明(作业与转换)作业流程图说明 11
  • 12. KETTLE的组件的类型基本说明(作业与转换)转换:一开始所有步骤同时运行,记录会从最前端的步骤向后传递,传递到相应步骤则该记录被该步骤作相应处理,处理完成再把记录往后传递,记录传递分复制和分发两种模式。 12
  • 13. KETTLE的组件的类型基本说明(作业与转换)复制:把一份数据复制成多份,后面步骤各占一份。 分发:把一份数据平均分配给后面步骤。 13
  • 14. KETTLE的组件的类型基本说明(作业与转换)在转换组件上右键->显示输入字段(显示输出字段)可以查看前面步骤流过来的记录字段情况和该字段是后面步骤传递的字段信息情况。 14
  • 15. 基于表对表的同步表对表同步是最基本的同步方式之一 实现步骤:  一、建立源库连接和目标库连接  二、使用表输入组件进行源表数据读取  三、对记录进行适配整理  四、使用表输出组件输出到目标表15
  • 16. 基于表对表的同步新建一个转换:文件->新建->转换 16
  • 17. 基于表对表的同步17
  • 18. 基于表对表的同步18
  • 19. 基于表对表的同步19
  • 20. 基于表对表的同步20
  • 21. 基于文件到表的同步新建一个转换 流程:从文件读取记录插入到数据库中 21
  • 22. 基于文件到表的同步22
  • 23. 基于文件到表的同步23
  • 24. 基于文件到表的同步24
  • 25. 基于表到文件的同步新建一个转换 实现从表里读取记录生成文件 25
  • 26. 基于表到文件的同步26
  • 27. 基于表到文件的同步27
  • 28. 基于表到文件的同步28
  • 29. JAVASCRIPT的基本应用JAVASCRIPT基本语法: var jsStr = “hello kello”; //定义一个字符串变量 var javaStr = new java.lang.String(“java String ”); //java.lang.String实例 writeToLog(“m”, str); //打印字符串到日志输出 var num = 1; //定义一个整型 var arr = new Array(); //定义一个数组 无任何元素 arr.push(“添加一个元素到数组未位”); var arr1= new Array(3, “FTP补采”); //定义一个数组  29
  • 30. JAVASCRIPT的基本应用If … else 语句 var bool = true; if(bool){ //bool值为true Alert(“正确”); }else{ //bool值为false Alert(“错误”); } 30
  • 31. JAVASCRIPT的基本应用 for语句 var arr = new Array(1, “2”, “this is string”); for(var i=0; i
  • 32. JAVASCRIPT的基本应用方法定义 var str = “whj”; //全局变量 function sayHello(name){ //带一个参数的方法 if(name == null) return “hello “ + str; else return “hello “ + name; //返回一个字符串 } writeToLog(“m”, sayHello());//方法调用  32
  • 33. JAVASCRIPT的基本应用异常处理 try…catch… try{ var value = 100/0; }catch(e){ throw new java.lang.Exception(“除数不能为0:"+ e); }    异常处理通常是防止未知错误产生所采取的处理措施。异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。 33
  • 34. JAVASCRIPT的基本应用34
  • 35. 文件FTP下载、上传作业:FTP下载 从FTP上下载相应文件到指定目录下 35
  • 36. 文件FTP下载、上传36
  • 37. 文件FTP下载、上传37
  • 38. 文件FTP下载、上传作业:FTP上传 上传本地文件到相应FTP指定目录上 38
  • 39. 文件FTP下载、上传39
  • 40. 文件FTP下载、上传40
  • 41. 作业调用作业、转换文件->新建->作业 作业可以调用作业,这样方便流程控制。 41
  • 42. 作业调用作业、转换42
  • 43. 作业调用作业、转换作业也可以调用转换 43
  • 44. 作业调用作业、转换44
  • 45. KETTLE自带例子菜单:文件->从URL打开文件->samples 也可以直接到KETTLE工具下的samples目录打开45
  • 46. KETTLE输出日志说明日志输出是检查程序运行情况的重要手段,也是程序维护必不可少的环节。 KETTLE在日志输出方面也有很好的控制功能。KETTLE日志输出共分七个等级:没有日志(Nothing)、错误日志(Error)、最小日志(Minimal)、基本日志(Basic)、详细日志(Detailed)、调试日志(Debug)、行级日志(Rowlevel)。默认为基本日志。46
  • 47. KETTLE输出日志说明Nothing:不显示任何输出 Error:仅仅显示错误信息 Minimal:使用最小的日志 Basic:缺省的日志级别 Detailed:给出日志输出的细节 Debug:调试目的,调试输出 Rowlevel:打印出每一行记录的信息47
  • 48. KETTLE输出日志说明作业日志输出说明 作业运行状态有两种:true(成功)/false(失败)。 注意:失败不代表运行异常、出错。有时只是用来控制流程的一种决策、一种手段。 48
  • 49. KETTLE输出日志说明程序异常退出情况 49
  • 50. KETTLE输出日志说明转换日志输出说明 I: 当前步骤生成的记录数(从表输入、文件读入) O:当前步骤输出的记录数(输出到文件、表) R:当前步骤从前一步聚读取的记录数 W:当前步骤向后面步骤抛出的记录数 U:当前步骤更新过的记录数 E:当前步骤处理出错的记录数 50
  • 51. 启动脚本说明KETTLE程序启动分两种,一种是作业、一种是转换。 作业调用启动脚本: kitchen.sh( kitchen.bat) 转换调用启动脚本: pan.sh( pan.bat)51
  • 52. 启动脚本说明kitchen.sh(span.sh)说明 52
  • 53. 启动脚本说明Kitchen.bat(span.bat)说明 53
  • 54. 启动脚本说明WINDOWS系统下的作业启动脚本写法 /file 作业入口路径 /level 日志输出等级 /logfile 日志输出文件 54
  • 55. 启动脚本说明LINUX系统下的启动脚本写法 55
  • 56. 启动脚本说明转换调动脚本写法 WINDOWS和LINUX系统的启动脚本的写法基本一样,就是pan.sh/pan.bat的区别 56