有了输入输出和转化控件,我们基本可以完整的构建一个数据抽提、转换和加载的转换过程。但很多时候还需要一个对数据流进行判断并控制的功能。比如数据不满足条件时该如何处理,数据不符合要求时该如何处理。另外通常除了按照不同的数据判断后插入不同的数据库或表中之外,还需要一个常见的应用控件来配合完成一些复杂的流程任务,比如发现数据有异常时通过邮件进行异常通知。
基于此,本次专题讨论流程控件,简单介绍我们在编程中需要的if语句能力和switch语句能力在kettle中如何体现的,下次专题我们讨论一下如何使用诸如发发邮件、写日志,启动进程,ssh远程执行命令等应用控件。
1、Switch case控件
这个控件就是提供switch分支流程控制的能力,通过该控件可以设置对数据流中的字段进行判断后运行不同的转换步骤。
2、过滤记录控件
这个控件就类似于if控制语句,当条件为true是执行正常步骤,当条件为false时执行异常步骤,正常步骤和异常步骤由自己进行设置。
3、空操作控件
逻辑上上这个控件是没有任何意义的,只要对于不满足条件的不设置后续执行步骤,其实就等于空操作。但这个空操作控件会让流程图逻辑更加清晰。
4、中止控件
有时候我们希望判断到某种异常之后将整个流程停止,避免出现其它方面的问题,中止控件就可以完成这样的控制能力。
5、阻塞数据直到步骤都完成控件
这个控件通过暂时性阻塞数据可以确保多个步骤合并为一个步骤时各个步骤所需要的的数据完整执行后,数据都准备好再运行下一个步骤。
1、需求
我们经常有这样的需求,一个单位很多部门的数据都在一个表中,必要时需要按照部门进行拆分,并保存在部门命名的文件中,我们继续使用上次使用的数据完成这样的任务。

最终要完成的就是将这些数据按照省份分别保存在不同文件中,湖北.xls 中只保存湖北的人员名单,甘肃.xls 只保存甘肃的人员名单。
转换图如下:

首先通过excel输入控件获得要转换的数据,然后通过swith流程控件进行控制,按照省份字段不同走不同的执行流程,最终生成不同名称的文件。

输入控件输出控件都比较简单,重点看一下switch控件的设置:

最终生成的湖北.xlsx中的数据如下:

1、流程控件核心思想是通过流程控件将数据纳入监测判断,并根据不同的情况进行不同逻辑的转换流程。
2、当使用kettle进行开发,随着任务部署的增多,监控也是一个难点,倘若在流程中通过数据流程控制,通过写日志、发邮件等方式将运行的环境纳入监控,这样的考虑才会让后续的运维工作变得简单。
3、相比其他控件,流程控件要简化简单的多,能力也非常有限,但实际上作为ETL工具,这些流程控件已经能满足常规的任务要求,对于更复杂的处理流程可以结合java等脚本控件来完成。
其它文档阅读





