Kettle转换中SQL中的执行顺序(使用 阻塞数据直到步骤都完成 ===》控制转换中的 SQL执行顺序)

本文解析Kettle中作业与转换的执行顺序,探讨如何在转换内实现步骤的顺序执行,重点介绍阻塞数据直到完成组件的使用场景与技巧,确保数据同步的一致性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、kettle中转换和作业的执行顺序

2、根据业务需要,通常需要在转换内顺序执行,小技巧如下

3、为什么会用到这个组件 

4、案例演示


1、kettle中转换和作业的执行顺序

    1、一个作业内的转换,是顺序执行的。

    2、一个转换内的步骤是并行执行的。

    3、作业内不支持事务,转换内支持事务。

2、根据业务需要,通常需要在转换内顺序执行,小技巧如下

    1、执行SQL是优先于所有步骤。

    2、使用“阻塞数据直到步骤都完成”,确保其他数据步骤都完成再进行下一步骤。

3、为什么会用到这个组件 

我就想转换串行的执行,根据时间戳增量的同步,作业一开始我就获取当前的时间戳,kettle 完成数据之后,再执行时间更新戳操作,不能数据还没有同步成功就把时间戳更新,万一同步失败怎么办?因为作业执行也需要时间,公司传感器收集的数据会间歇性写入MySQL,数据几分钟刷新一次,不想丢失数据,也不能重复,尽可能保持数据一致性。

kettle转换中的各个步骤是并列执行的关系,作业中的步骤才是有先后顺序的。这样就可能会遇到一种情况,我想在转换的某个步骤完成后才执行它下面的步骤,这时该怎么办呢?那么这时就可以用到【阻塞数据直到完成】组件。

  • 【阻塞数据直到完成】:这个组件允许设置需要阻塞的具体步骤,会将所设置的步骤的所有数据堵住,当这些步骤完成后,才会将被阻塞步骤的所有数据往下一个步骤推;

注:虽然阻塞了,但是阻塞之后的步骤仍然在运行,即运行时间仍然在进行;

4、案例演示

看下面的列子,最后的SQL脚本想在前面的步骤执行完后执行,这里可用阻塞实现。

【注】:此时别忘了勾选{执行每一行}这个选项,逻辑原理是,只有执行每一行,该步骤才会向上级步骤要数据,因为上级阻塞了不给数据,这样阻塞才能起作用。

当【阻塞数据】通过最后一条数据后,也是唯一 一条数据,SQL脚本才执行一次,这正是我们想要的目的。

 

 

此处我的需求用不到这个 阻塞数据,我在一个转换中放了太多的操作,我们大可不必放在一个转换中, 而将更新时间戳的步骤放到作业中的最后一步执行,将时间戳获取-->设置变量 放到另一个转换中,这样方便测试,也可以让kettle程序 看起来简单明了,用不用这个组件还是要看需求。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙先生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值