循环是出现在作业中的概念,因为转换里的步骤是并行执行的,所以循环对它来说没什么意义。循环的需求肯定是“我想执行多次某个作业(转换)”。


 

  得到这样的需求,我们可以通过两种方式完成。一种是使用js脚本的方式,配合“条件判断”作业项来完成循环,因为这种方法太过复杂,所以不在本节详细描述。


 

  下面介绍一种方法可以直接对作业或者转换进行循环。避免在作业中产生更多的作业项。


 

  做这个实验需要两个转换和一个作业。他们分别如下:


  •  Jb_Test_Cycle_2 :整体调度,包括了Tr_Test_Cycle_1Tr_Test_Cycle_2

  • Tr_Test_Cycle_1 :获取系统时间,插入到日志表中

  • Tr_Test_Cycle_2 :生成4条记录,让Tr_Test_Cycle_1 执行4次。


 

  接下来看看他们的配置:


  1Jb_Test_Cycle_1 的拓扑如下:


wKioL1cZ_YbTggp7AAARR_E4BXM621.png

  2、需要单独对Tr_Test_Cycle_1进行配置:


  双击Tr_Test_Cycle_1 Advanced 选项卡中勾选 下图所示的复选框。


  表示前面每传过来一行数据,我都要执行一次转换。有点像一个for循环。


 

wKiom1cZ_N3zIIW-AABH0euKunE590.png

 

  3Tr_Test_Cycle_1 的配置:


 

  使用行生成工具,生成一行,不仅仅限于这个工具。


  获取系统时间可以获取到当前的系统时间。


wKiom1cZ_PixuqSUAAAbOIzIYuQ172.png

 

  4Tr_Test_Cycle_2 的配置:


wKioL1cZ_eGzcBiiAAAS7R9K-mc884.png

  5、从数据库中查看日志表,得到的结果就是4条信息


  说明Tr_Test_Cycle_1整体循环了4次。


 

wKiom1cZ_SvTW2kxAAAJfAKjirY892.png