• 1. KETTLE1.1 什么是kettle Kettle 是”kettle E.T.T.L Envirnonment”首字母缩写,这意味着设计实现ETL需要 :抽取,转换,装入和加载数据。 Spoon 是一个图形用户界面,它允 许运行转换或者任务,其中转换是用pan工具来运行,任务是用Kitchen来运行。Pan 是一个数据转换引擎,它可以执行很多功能。例如从不同的数据源读取、操作和写入数据。Kitchen 是一个可以运行利用xml或数据资源库描述的任务,通常任务是在规定的时间间隔内用批处理的模式自动运行。
  • 2. 1.2 安装kettle 要运行Kettle ,必须按安装java 环境1.4或以上版本,kettle下载可以到: http://kettle.pentaho.org 取得最新版本。(pdi-ce-4.0.1-stable.zip) 1.3 运行spoon 下面是不同平台上运行spoon 所支持的脚本 : spoon.bat windows 平台运行Spoon. Spoon.sh linux 平台运行Spoon. 1.4 资源库 一个Kettle 资源库可以包含那些转换信息,这意味着为了从数据资源中加载一个转换,你必须连接相应的资源库。
  • 3. 1. 5 资源库自动登录可以设置以下环境变量,来让 Spoon 自动登录资源库。 环境变量:KETTLE_REPOSITORY,KETTLE_USER, KETTLE_PASSWORD
  • 4. 1.6 定义1.6.1 转换 1. Value : Values 是行的一部分,且包含以下类型的数据: Strings, floating point Numbers 、 unlimited precision BigNumbers、Integers、 Dates 或者 Boolean. 2. Row : 一行包含0个或者个Values 3.Output Stream : 一个Output Stream 是离开一个步骤时的行的堆栈。 4 .Input Stream : 一个Input Stream 是进入一个步骤时的行的堆栈。 5. Hop: 一个Hop 代表两个步骤之间的一个或者多个数据流。一个Hop总是代 表着一个步骤的输出流和一个步骤的输入流。 6. Note: 一个Note 是一个转换附加的文本注释信息。
  • 5. (本页无文本内容)
  • 6. 1.6.2 任务 1. Job Entry : 一个Job Entry 是一个任务的一部分,它执行某些内容。 2. Hop: 一个Hop 代表两个步骤之间的一个或者多个数据流。一个Hop总是代 表着两个Job Entry 之间的连接,并且能够被原始的Job Entry设置,无 条件的执行下一个JobEntry,直到执行成功或者失败。 3. Note: 一个Note 是一个任务附加的文本注释信息。
  • 7. 1.7选项 你可以改变很多选项来增强图形用户界面的个性化。例如设置窗体的字体和颜色。此选项在 Tools/选项 中设置。
  • 8. 1.8搜索元数据 通过 编辑/搜索元数据(ctr+f) 来使用这个特性。这个选项将在可用的字段、连接器、注释以及所有加载的任务和转换中搜索,并展示搜索的结果。
  • 9. 2 新建一个转换或任务可以通过工具栏上的文件/新建/ 来建立一个转换或任务,也可以直接在主对象页签栏双击转换,新建一个转换。选择好需要创建的文件类型后,将会根据你的选择,创建一个图形界面。 转换 作业
  • 10. 3 数据库连接一个连接描述了kettle连接数据库的方法,左边的菜单展示了所有可用的连接。
  • 11. 3.1 选项 1. Connection name :定义转换或任务访问的连接的唯一名称,可自行设置,但不能为空。 2. Connection Type:连接的数据类型 3. Access: 可以是Native(JDBC),odbc, oci,jndi.一般选择JDBC 4. HostName: 指定数据库部署的主机或者服务器的名称,也可以指定IP地址。 5. DataBase Name :指定连接的数据库的名称,如果是ODBC方式就指定DSN名称。 6. port Number : 设定数据库监听的TCP/IP端口号 7. user Name / password : 指定连接数据库的用户名和密码
  • 12. 3.2 SQL 编辑器(SQL Editor)1. 描述 Spoon 提供简单SQL 编辑器 ,可以实现创建表,删除索引或者修改字段。大多数的DDL,例如: create / alter table ,create index , create sequence 命令都可以通过SQL编辑器窗口运行。(新建转换,输出是表输出时,可打开SQL 编辑器) 2. 局限性 这只是一个简单的SQL 编辑器,它不可能完全知道超过20种它所支持的数据库的方言。这意味着创建存储过程,触发器或者其他的数据库对象可能带来很多问题。在这种情况下,应考虑使用数据库自带的工具。
  • 13. 4.数据库浏览器1. 描述 数据库浏览器只显示可用的表,视图或者目录
  • 14. 5.新建一个转换选择表输入, excel 输出,建立节点连接。右击连接线,可编辑连线属性。
  • 15. 5.1常用输入:表输入 Excel 输入 文本文件输入 XML 文件输入 CUBE 输入(多维数据集) 获取系统信息
  • 16. 5.2输入:表输入选择表输入,点击鼠标右键,选择编辑步骤。 步骤名称可以更改,一般更改为和输入表相关的名称。 数据库连接 : 选择一个已建好的数据库连接,也可以新建一个。 点击”获取SQL查询语句”,可弹出数据库浏览器,选择自己需要的表或视图。 选择好表或视图后,SQL 区域会显示相应的SQL,如选择在SQL里包含字段名,你所选择的表的所有字段均会显示. 在SQL区域用户可手动修改SQL语句。
  • 17. 5.3 输出:Excel 输出Excel 输出编辑步骤选项,有三个选项卡, 文件/内容/字段。 文件选项卡: 文件名选择输出文件保存的路径。 扩展名: 系统默认为xls. 内容选项卡: 一般不需做修改。 字段选项卡:点击获取字段,输入流中的字段全部会获取到,不需要的字段,可选中不需要的行,右键删除。
  • 18. 5.4 输出:插入/更新 插入/更新:若流里的数据在目标表中不存在,执行插入,否则执行更新,数据量不大的情况下,一般采用插入/更新操作。
  • 19. 5.5 输出:更新这个步骤类似于插入/更新步骤,除了对数据不作插入操作之外。它仅仅执行更新操作。
  • 20. 5.6 输出:删除这个步骤类似于更新步骤,除了不更新操作之外,其他的行均被删除。
  • 21. 5.7 输出:表输出这个步骤可以存取信息到数据库中
  • 22. 5.8 输出:XML输出这个步骤允许你从源中写入行到一个或多个xml文件。
  • 23. 6.0 转换:去除重复记录这个步骤从输入流中移除重复的记录 步骤名称 : 在单一步骤中必须唯一 Redirect duplicate: 如果想知道多少重复行被去掉,就勾选此项。 字段名 : 用来比较的字段的字段名称。
  • 24. 6.1 转换:排序记录这个步骤利用你指定的字段排序行,无论他们是按照升序还是降序。 当行数超过5000行的时候,Kettle 使用临时文件来排序行。 排序目录:临时文件存储的目录,如果缺省则为标准的系统临时文件夹。 临时文件前缀:选择一个容易记的前缀,以便在临时目录中查找。 压缩临时文件: 当需要完成排序的时候,这个选项将压缩临时文件。
  • 25. 6.2 转换:增加序列这个步骤在流里增加一个序列,一个序列是在某个起始值 和增量的基础上,经常改变的整数值。可以使用数据库的序列,也可以使用kettle决定的序列 Kettle 序列在同一个转换中是唯一使用的,每一次转换运行的时候,序列的值又会重新循环一次,从开始值开始。 使用数据库获取序列: 连接名称 : 选择数据库序列存在的 连接名称 序列名称: 数据库序列的名称 使用计数器来计算序列: 如果想使用kettle生成的序列,使用此项。 计数器名称(可选):如果一个转换中多个步骤生成同样的值名称,这个选项允许你指定计数器的名称,避免按照先后顺序通过多个步骤。 起始值: 序列的起始值 增量 : 序列的增量 最大值 : 序列的最大值,如果超过,将重新开始
  • 26. 6.3 转换 : 拆分字段这个步骤允许根据分隔符来拆分之盾。 步骤名称:在单一转换中必须唯一 需要拆分的字段: 想要拆分的字段的名称。 分隔符: 决定字段结束的分隔符 字段 : 拆分形成的字段列表。 例如: 某字段包含 : (123,456,789) , 使用逗号(,)分割符,可将字段分成三个段。
  • 27. 7.0 Flow : 空操作(什么也不做)这个操作说明都不做,它的主要作用是,在你想做测试的时候,充当一个占位符。
  • 28. 7.1 Flow : 过滤记录这个步骤根据条件和比较符来过滤记录。 发送true数据给步骤: 指定条件返回true的数据将发送到此步骤 发送false数据给步骤: 指定条件返回false 的数据将发送到此步骤。 True 和false 步骤必须指定。
  • 29. 7.2 Flow : Abort(中止)这个步骤允许你在观察输入的时候中止步骤,它的主要用途是错误处理,在一定数量的行流过错误的连接时中止转换。 失败阀值: 中止转换的开始行数。如果设置为0,在第一行的时候,步骤将被中止。 失败信息:中止的时候放入日志文件的消息,如果没有输入就使用缺省消息。 总是记录行数: 中止步骤总是记录处理的行数。
  • 30. 7.3 Flow :Blocking Step(被冻结的步骤)这是一个非常简单的步骤,它冻结所有的输出,直到从上一个步骤来的最后一行数据到达,最后 一行数据将发送到下一步。 你可以使用这个步骤触发常用插件、存储过程和js等等。
  • 31. 8.0 连接 :Merge Join(合并排序)这个步骤将来自两个不同的步骤输入的数据执行一个高效的合并。合并选项包括INNER ,LEFT OUTER , RIGHT OUTER, FULL OUTER. 这个步骤将输入的行按照指定的字段存储 被合并的两个步骤,必须按照相同的段进行排序。
  • 32. 8.1 连接 :合并记录这个步骤允许你比较两个行流。如果想在两个不同的时间比较数据,这是非常有用的。它常被用于数据仓库源系统没有包含最后更新日期的情况。 两个行流被合并,一个是引用流(旧数据),一个是比较流(新数据),每次都是行里的最后版本通过进入下一步骤,行有以下标记: “Identical” : 关键字在两个流中都存在,并且值相同 “changed” : 关键字在两个流中都存在,但一个或更多的值不同 “new” : 引用流中没有找到关键字 “deleted”: 比较流中没有找到关键字。 比较流中的数据进入下一步骤,除非在”删除”的情况。
  • 33. 9.0 作业 核心对象1. 通用 (1). START : start是任务执行的入口,首先必须是任务可以执行。只有无条件的任务条目可以从start 入口连接。 (2) job : 另外一个Job. (3) Success (4) Transformation : 选择一个已经存在的 .ktr文件。 (5) dummy : (6) set variables
  • 34. 9.1 作业 核心对象右击start,选择编辑作业入口,可设置定时。如下图所示。 在job中使用Dummy 条目将什么也不做,这可以使一个任务更清晰的展示,或者在执行循环中使用。