kettle转换中的各个组件是并行的关系,job中是有先后顺序的,这样就可能会遇到一种情况——我想在某个步骤完成后再执行下面的步骤,这时该怎么办呢?那么这时就可以用到【阻塞数据】和【阻塞数据直到完成】两个组件;
【阻塞数据】:这个组件只允许前一个步骤的最后一条数据通过,这个往往和【执行SQL脚本】组件 并用;
【阻塞数据直到完成】:这个组件会将所设置的被阻塞步骤的所有数据堵住,当被阻塞的步骤完成后,才会将被阻塞步骤的所有数据往下一个步骤推;
注:虽然阻塞了,但是阻塞之后的步骤仍然在运行,即运行时间仍然在进行;
【执行SQL脚本】:
这个组件是一个相对比较复杂的组件,在转换中这个组件是运行优先级很高的组件,如果不勾选{执行每一行}这个选项,那么该组件就只会执行一次,勾选了这个选项那么执行次数就是前一个步骤的数据条目数;如果想实现该组件只在最后一步执行一次,那么可以这样来操作
【注】:此时别忘了勾选{执行每一行}这个选项,这个流程的逻辑就是当【表输出】完成后,将其的最后一条数据推过