Pentaho Data Integration(PDI),Kettle是PDI以前的名称.在2006年Kettle加入了开源的BI组织Pentaho,正式命名为PDI, 加入Pentaho后Kettle的发展越来越快了,并有越来越多的人开始关注它了.PDI(Kettle)是一款开源的、元数据驱动的ETL (数据的抽取、转换、加载)工具,是开源 ETL 工具里功能比较强大的一个.PDI官网,最新版本为8.2.
本例用到的组件:生成随机数,增加常量,计算器,过滤记录,分组,记录关联,Excel输出。
实现功能
随机生成100个随机数,随机数取值于[0,100)之间,计算小于等于50的随机数个数和大于50的随机数个数。并把这两个统计数字放在数据库表的一行的两列中,即输出的结果有一行,一行包括两列,每列是一个统计值。
步骤
我使用的PDI版本为7.1.
新建转换
打开PDI中的Spoon.bat
进入转换设计器。文件->新建->转换
新建空白的抓换任务。Ctrl+s
先保存名为test.ktr
的文件。
生成随机数
步骤->输入
中拖入生成随机数
组件,双击组件,添加一行,名称为rand_num
,类型为随机数字
。

在组件上右键,选择改变开始复制的数量
,因为生成100个随机数,所以输入100,但是没看到确定之类的按钮(坑爹),直接回车就可以了。之后在组件左上角出现x100
的标志。

增加常量
步骤->转换
中拖入增加常量
组件,双击组件,增加两个常量。multi值设置为100,因为生成的随机数是0-1范围的,后面会将随机数x100得到一个0-100的随机整数。standard设置为50,我们将随机数分开计数是以50为分界点。
鼠标放在随机数
组件上,按住Shift
键,按下鼠标左键拉出一根连线到增加常量
组件上。

计算器
步骤->转换
中拖入计算器
组件,双击组件,增加一个新字段,计算方式为A * B
,分别用生成的随机数乘上multi值。

分组记录
步骤->流程
中拖入过滤记录
组件,步骤->统计
中拖入两个分组
组件,过滤记录连接到分组上,连接的时候回弹出Result is true
和Result is false
选项。

双击过滤记录组件,添加条件。

双击设置第一个分组,计算大于等于50的个数。

双击设置第二个分组,计算小于50的个数。

结果输出
步骤->连接
中拖入记录关联(笛卡尔输出)
组件,因为我们直接将分组结果放在一行输出,直接笛卡尔连接即可。
步骤->输出
中拖入Excel输出
组件,记录关联组件指向Excel输出。双击Excel输出
组件,文件名中设置为${output_dir}/result
,其中,${output_dir}
是个变量,稍后设置。result是输出文件名。

字段页中可以获取要输出的字段,也可以不设置,默认输出所有字段。

Spoon设计器中编辑->设置环境变量
,会出现我们在Excel中用到的变量,值设置为../mywork
,因为默认的输出目录是Spoon.bat所在目录,我们在上层目录中新建一个mywork文件夹。

再拖入一个Excel输出
组件,从计算器
组件指向该组件,添加连线时会弹出选项,选择复制
。这步的目的是将计算器计算出的结果保存一个。

双击该组件,文件名中设置为${output_dir}/data
.

运行
至此,所有步骤已完成。

点击上部按钮中第一个运行这个转换
,弹出执行转换对话框,直接点击启动,可以看到下部面板中的运行日志,运行完成后查看结果Excel中已经输出相应结果。
