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

发布时间:2025-05-17 23:11

制定每天的待办事项清单,按顺序执行。 #生活技巧# #时间管理技巧# #时间优化策略#

目录

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

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

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

4、案例演示

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

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

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

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

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

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

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

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

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

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

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

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

4、案例演示

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

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

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

 

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

网址:Kettle转换中SQL中的执行顺序(使用 阻塞数据直到步骤都完成 ===》控制转换中的 SQL执行顺序) https://www.yuejiaxmz.com/news/view/989027

相关内容

揭秘SQL正则表达式的中文替换技巧:轻松实现高效数据清洗与转换
SQL Server数据库性能优化(一)之 优化SQL 语句
Python实现数据转移:SQL server ==> SQL server
SQL Server大表如何快速删除数据
SQL Server 菜鸟教程入门必备指南,轻松掌握数据库操作与查询技巧
MySQL update操作,执行顺序问题
日常工作中你是怎么优化 SQL 的?
优化SQL的一些小技巧
kettle清空表数据,使用kettle实现数据清洗,Kettle数据清洗实战,高效清空表数据,优化数据处理流程
PyMySQL的使用:事务、索引、如何防止SQL注入

随便看看