之前讲了这个控件怎么获取步骤,但光知道这个是没办法正确使用这个控件的。
现在表A有一批数据,我想先在表B里删除原有的对应历史数据,再重新注入新的表A的数据。
即先删除后插入
我们知道,kettle的JOB是顺序执行的,转换是并列执行的,所以要想在转换里实现运行的优先级,就需要“阻塞数据直到步骤都完成”这个控件。
图1:
阻塞控件内容:
图2:
阻塞控件内容:
图1的阻塞是无效的,图2的阻塞是有效的。
原因(仅个人理解和猜测,不对请指正):
在转换里,SQL的运行是优于所有步骤的。
图1中虽然有阻塞控件,但只阻塞了“删除”,“表输入2”并没有被阻塞,而转换中的步骤是并行的,不要被这条流程线所迷惑!表输入1和表输入2是同时运行的,同样的,“删除”和“插入/更新”也并列属于同一个优先级,自然实现不了先删除再插入/更新了。