设为首页 加入收藏

TOP

kettle系列教程二(一)
2014-11-24 03:31:17 来源: 作者: 【 】 浏览:9
Tags:kettle 系列 教程
\ \ \ \ \

kettle系列教程二

1、Hello World 示例

通过这个例子,介绍kettle的一些基础知识及应用:

n 使用Spoon工具

n 转换的创建

n 步骤及连线

n 预定义变量

n 在Spoon中预览和执行

n 使用pan工具在终端窗口执行转换

概述

我们要实现的目标是:通过一个包含人名称的CSV文件,创建一个XML文件,内容是针对每个人添加上问候。

如果csv文件内容如下:

last_name, name

Suarez,Maria

Guimaraes,Joao

Rush,Jennifer

Ortiz,Camila

Rodriguez,Carmen

da Silva,Zoe

则输出的XML文件内容如下:

- 
  - 
        Hello, Maria!
    
  - 
        Hello, Joao!
    
  - 
        Hello, Jennifer!
    
  - 
        Hello, Camila!
    
  - 
        Hello, Carmen!
    
  - 
        Hello, Zoe!
    
  

我们要设计的第一个转换就是创建由csv文件生成一个问候XML文件。

转换是由步骤和连接组成,这些步骤和连接构成数据流,因此转换是基于数据流的。

环境准备

开始设计一个转换之前,我们先创建一个文件夹Tutorial,我们将保存所有的文件到该文件夹中,然后创建一个csv文件,内容就是前面人员信息,你可以复制到文本文件中,然后命名为list.csv

设计转换

有三个子任务组成:

ü 创建一个转换

ü 设计转换中的步骤和连接

ü 配置步骤和连接诶

创建转换

1) 点击文件菜单中新建,或者通过快捷键Ctrl+N,选择转换.

2) 在“主对象树”视图中点右击转换1,然后点击设置,或者在设计界面中右击,然后点击转换设置,或者使用Ctrl+T快捷方式。

3) 在设置窗口中可以设置转换的相关属性;我们这里写名称和描述,然后保存。

4) 保存该转换到Tutorial文件夹中,命名为hello,最终创建了hello.ktl文件。

设置转换中的步骤和连接

步骤是转换中的最小设计单元,spoon中有很多不同的步骤,放在不同的分组中,如输出、输入等。每个步骤被设计完成一个特定的功能,如读取参数或格式化一个数据集。

连接是两个步骤之间连接的图形展示,从源到目标。流经连接的数据构成源步骤的输出数据,目标步骤的输入数据。一般连接有一个源步骤和一个目标步骤,但是有时从一个源步骤出来多个连接,这时输出数据流可以是复制或分发给不同的目标步骤;同样多个连接到达一个目标步骤,则需要目标步骤能够合并来自不同源步骤的输入数据。

hello.ktl文件需要实现以下功能:读取csv文件、针对每个人员添加问候、保存问候信息到xml文件中;三个环节使用不同的步骤实现,如下图:

\

这个例子,步骤之间连接是一对一关系,比较简单,详细的设计流程如下:

1) 在核心对象输入类别中选择CSV文件输入,拖动到右边工作区中;

2) 在脚本类别,拖动java script代码到右边工作区中;

3) 在输出类别,拖动xml文件输出到工作区;

现在把CSV文件输入java script代码两个步骤连接起来

1) 选择第一个步骤;

2) 按住shift键并拖动第一个步骤的图标到目标步骤;

3) 按照同样的方式连接java script代码xml文件输出两个步骤;

配置步骤行为

每个步骤都有一个配置窗口,不同类别下的不同步骤配置内容不同,但是步骤名称总是需要设置成有意义的名称,步骤描述是对步骤实现功能的描述。

配置CSV文件输入步骤

1) 双击CSV文件输入步骤

2) 弹出配置窗口界面,我们设置文件位置、格式、内容等;

3) 替换默认步骤名称,一般设置和业务相关的名称,这里我们使用name list

4) 文件名称需要填写文件名称及位置

注:在文本框的右边有菱形变量图标,表示该文本框中可以使用变量;变量的格式为${name_of_variable},我们可以定位光标在文本框中,然后按快捷键(ctrl+Alt+Space),文本框的下拉框中会出现预定义的变量及用户定义变量,当然我们目前没有定义任何变量。我们写如下内容:

${Internal.Transformation.Filename.Directory}/list.csv

当程序运行时,变量会被替换成当前转换文件的路径,然后在该目录下搜索 list.csv文件;

5) 点击获取字段,增加输入文件的列名称到表格中,该操作默认假设CSV文件有行标题。

6) 表格中展现了列名称last_name和name,如下图:

\

7) 取消“简易转换”(懒转换)

8) 点击预览,确认文件正确加载,会弹出窗口显示数据。

9) 点击确定,完成CSV文件输入配置。

配置java script代码步骤

1) 双击java script代码步骤,弹出配置窗口

2) 与前面步骤不同,这里可以写java script代码,输入“hello”,连接到每个名称前面。

3) 命名该步骤为Greetings.

4) 在配置窗口的主区域写代码,左边窗口,有一组变量及函数,可以在代码中使用;尤其是最后两个节点,输入字段和输出字段,可以在代码中使用;这个例子中有两个字段last_name和name,写入下面代码:

var msg = 'Hello, ' + name.getString() + "!";

注:name.getString()可以手动写入,或在左边树双击自动录入。

5) 在最下面的表格里,可以写代码中创建的任何变量作为输出流中的字段;这里我们创建一个msg变量,因为我们需要把msg内容写到xml输出文件中。如下图所示。

\

注:不要混淆这里的代码变量和kettle内置变量,他们完全不同。

6) 点击确定完成JavaScript代码步骤配置。

7) 选择刚才配置的步骤(java script代码),为了检查离开这步骤的输出新的字段,我们将查看输入及输出字段。输入字段就是到达该步骤的数据列;输出字段就是离开步骤的数据列;有些步骤简单传输输入数据,这时,输入数据和输出数据通常相同;有些步骤增加字段到输出流中,如:计算步骤;还有一些步骤过滤或合并数据,这样输出数据中字段减少相对输入数据字段,如:分组步骤。

8) 在该步骤上点击右键,弹出上下文菜单。

9) 选择显示输入字段,可以看到输入字段,last_name和name,来自csv文件输入步骤。

10) 选择显示输出字段,可以不仅有已经存在的字段,而且还增加了msg字段。

配置XML文件输出步骤

1) 双击XML输出步骤,弹出配置界面,这里可以设置输出文件的名称和位置,以及输出字段。可以设置全部或部分字段;

2) 设置步骤名称:File With Greetings;

3) 在文件设置框中录入:${Internal.Transformation.Filename.Directory}/Hello.xml

4) 点击获取字段,用三个输入字段填充表格,输出文件中我们只想显示消息,所以删除name和last_name;

5) 再次保存该转换设计文件;

\

\

运行机制

当你执行一个转换,几乎所有步骤是同时执行的,因为转换时异步执行的;行数据流按照设计步骤流转,每个处理流执行到下一个步骤无需等待其他步骤。实际开发时,不了解这个特性,可能出现

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇kettle系列教程一 下一篇零积分下载,2014年辛星mysql教程..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)