开源ETL工具 Kettle(kettle 5.2.0)的使用之Hello World 扩展
来源:互联网 发布:windows 查看定时任务 编辑:程序博客网 时间:2024/04/29 12:43
这里只是简单的展示,图片没保存下来 请查看原文出处
继续前面的一篇,我们来接着学习kettle 上一篇的HelloWorld点这同样这篇依然是翻译官方的HelloWorld扩展。前面我们已经了解了转换的操作的基本步骤,现在我们来扩展他,使其功能更完善。摘要:
- 在这里我们不在固定的选取文件,而用传参数的方式选取文件名。
- 在用变量设置文件路径名的时候,验证文件是否存在
- 我们让输出的文件名来和输入文件名相关联
- 获取变量
- 创建一个表示“欢迎”(文件内容)的输出文件
- 检查参数是否为NULL,如果是,丢弃。
- 检查文件是否存在,不存在,丢弃。
- 新建一个转换,用来获取参数(parameter )
- 这个参数将通过这个转换得到验证,通过这个转换中某个步骤
- 通过一个Job Entry 来验证文件是否存在
- 通过修改前一个HelloWorld中的转换,我们在这个Job中复用。
准备工作
在这个教程中,输入和输出文件将被存放在新的文件夹中,重新创建一个文件夹叫做Files的文件夹。将我们上次创建的list.csv文件,复制到我们新建的文件夹。为了避免我们在每次输入文件路径的时候,都要输入文件的绝对路径,我们可以创建一个变量包含这个路径,然后在每次需要输入路径的时候我们引用这个变量。我们只要修改kettle.properties这个文件中的内容就好了,这个文件一般默认存放在C:\Documents and Settings\<username>\.kettle* folder on Windows XP/2000, C:\Profiles\<username>\.kettle* folder on Windows Vista or the *~/.kettle这个目录中,不同的操作系统可能目录会有不同,在这个文件中加入下面一行:FILES=F:\\workspace\\kettle
Spoon会在启动的时候读取这个配置文件,这个文件必须在Spoon重新启动后才会生效。等号前面是变量名,后面是值,在这个键值对中表示文件存放路径。创建一个提取文件名的转换
向前面一样创建一个转换,并命名为 get_file_name.从左面拖拽Step构成如下图所示的流程,只要拖拽流程这里不再给出可以参照前一篇的讲解:现在我们为上面的Step做详细的配置
1. 配置获取系统信息的步骤不废话,直接上图吧。双击【获取系统信息】这个步骤,得到如上图所示的配置信息窗口。我们可以自己取一个步骤的名字,然后在下面的表格中填入命令行参数,每一行代表一个命令行参数,名称自己任取,然后类型我们选择命令行参数1。然后确定。2.配置过滤记录步骤这个步骤根据一个条件把输出一分为二,当条件为true的时候流向其中的一个分支,当false的时候流向另一个分支。双击这个步骤,然后看到如下配置窗口,然后如下图: 3.配置终止步骤这个~没什么好配置的吧,如果一个转换到了这步,就意味着这个转换就挂了呗。4.配置【设置变量】步骤在这部中你可以设置一些变量。在这步的配置信息窗口中有个表格,表格中的每一行代表了一个变量。双击图标,得到如下图的配置信息窗口:直接点击【获取字段】,然后就会如上图所示,然后或生成一个字段名大写的变量名,我们暂时不修改它,直接使用这个默认的生成名字。当然你可以任意修改。确定。我们来测试执行一下这个转换
1.工具栏点击那个绿色的三角符号,来运行,会弹出一个配置窗口2.在这个配置窗口中,在左下方有个位置参数【Arguments】配置表格,删除表格中所有的数据,然后在第一行中的value的地方填写list 也就是CSV的文件名。这个参数将在这个转换中被转化成命令行参数。3.点击启动4.然后删除我们写入的参数,再次运行,观察比较两次控制台上的输出的不同。有图有真相,对照下图进行配置:修改Hello转换
这时候就要用到我们前面做的那个叫Hello的转换,为了能使用参数,我们来修改这个转换。如果传入这个Job的命令行参数为foo 那么我们修改后的这个转换将执行foo.csv并且创建一个名字为foo_with_greetings.xml 的输出文件。同样我先给出步骤,再给出截图,你可以直接跳过步骤看截图:最终效果图如下:- 打开Hello.ktr 这个转换文件,可以从Spoon中选择文件--->打开,也可以直接把这个文件拖入Spoon左侧的目录中
- 双击打开【CSV文件输入】这步骤的配置窗口
- 删除文件名 这个文本框中的内容,然后按住Ctrl + 空格 [+ Alt] 如果是中的话还要Alt,就好看到我们添加到kettle中参数FILES
- 选择他,并且添加你创建的文件名变量结果如下:
${FILES}/${MY_FILE}.csv
- 点击确定
- 结果如下图
- 打开【文本文件输出】步骤如下图:如图所示在标号为1的地方为输出文件存放路径,我直接放在test的目录下了,这个你随便选,标号为2 的地方为文件名,我们用输入名做输出名的前缀,所以用到了变量。
- 确定
- 从左侧拖拽【过滤记录】步骤到【csv文件输入】和【JavaScript代码】两个步骤的连线上,释放然后这个步骤就好被添加到那两个步骤中间。
- 配置这个过滤,如图:
- 不要忘了添加一个【终止】步骤,这个和 get_file_name 一样,不说了
- 保存,也可以另存为。。。随便
- 测试运行这个转换:你必须设置MY_FILE 变量,并为他赋值,因为这个转换依赖前一个转换的结果,为了模拟这个过程,我们手动为其附变量值。
- 菜单栏 编辑 -----> 设置环境变量如图我们看到FILES是我们在配置文件中写入的变量,已经加载过来了,然后我们现在填写MY_FILE变量,list是那个csv文件,注意上面的FILES + MY_FILE 要真的在你的电脑上能找到这个文件。
- 好了现在可以运行了。应该没问题吧
组装我们的大Job
现在所有的小组件【转换】都写完了,我们现在来组装这些转换,最终组成一个Job- 创建一个job,如下图,至于怎么拖拽的我就不说了,通过上面那么多拖拽,应该有感觉了
- 现在来配置这个job,双击第一个转换图标,打开配置窗口配置信息如下图:
- 同样的方式配置第二个转换
- 配置【检查一个文件是否存在】注意:FILE 一定要在kettle.properties中被定义,并且${MY_FILE}变量在job中声明
- 至于两个终止作业的Step里面的配置,自己随便写吧,只要自己能读懂就行。最好修改下步骤名字,不要像我一样用什么终止作业1,终止作业2.。。。的
运行这个Job
在运行之前还要配置一个地方,至于为什么这里还要这么配置,我也不是太清楚,这也是这个教程中我唯一不懂的地方,可能是因为对kettle的变量了解的不深吧,有空好好研究下kettle变量的作用域。双击上面job那个【获取文件名】然后来配置如下图所示: 好了现在你就可以放心的点运行按钮了。当然这里你也可以不用配置,但是在Run的时候,注意配置下位置参数,但不知道为啥配置变量却不行,现在我也搞不懂位置参数,变量,和命名参数的区别,希望有知道的朋友给我解释下,共同学习,少走弯路。 0 0
- 开源ETL工具 Kettle(kettle 5.2.0)的使用之Hello World 扩展
- 开源ETL工具 Kettle(kettle 5.2.0)的使用之Hello World
- 开源ETL 工具 Kettle使用
- 开源ETL工具 Kettle
- ETL工具—kettle使用之二
- ETL工具—kettle使用之三
- ETL工具之Kettle的简单使用一
- ETL工具Kettle的基本使用
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具--Kettle的简易使用实例
- 关于使用ETL工具Kettle的简单介绍(一)
- 记住回家的路(周国平)
- 【Objective-C】07-OC对象的继承
- reportservie报表制作漏斗图
- 深谷幽兰
- 本地ssas重启之后,无法连接无法登录的问题
- 开源ETL工具 Kettle(kettle 5.2.0)的使用之Hello World 扩展
- 第16周项目统计男同学个数(字符串)
- 静而不静
- iOS之xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") 错误处理
- 安装打印时提示Inf中找不到所需的段落解决方法
- 177本名著浓缩成了177句话
- poj 1763 Shortcut
- 字符集合字符编码小结
- midi格式的音乐都无法播放