kettle中Switch/Case条件判断的使用

今天在做取数过程中遇到了一个问题,就是增量取数,增量取数大部分用到的是根据时间段来抽取数据,然后插入到目标库,事实中kettle中有个一次提交多少条记录的问题,今天暂时不讨论这个,主要来说说如何根据中间时间表(主要记录上次取数的开始时间和结束时间),然后去设置取数的时间段。

下面来看一下遇到的问题:

我们是定时取数,本次取数的时间要去中间表查看上次取数状态,有二种情况:

(1)上次取数成功:

        则本次取数时间为上次结束时间(end_time)和当前取数时间(now),并且:(a)如果本次取数成功,则更新中间时间表的开始时间和结束时间为本次取数的开始时间和结束时间(好像有点绕哦)并且设置状态为1,(b)如果本次取数失败则更新中间时间表的开始时间和结束时间为本次取数的开始时间和结束时间(好像有点绕哦)并且设置状态为0;

(2)上次取数失败:

        则本次取数时间为上次开始时间(start_time)和当前取数时间(now),并且:(a)如果本次取数成功,则更新中间时间表开始时间和结束时间分别为本次取数的开始时间和结束时间并且状态为1(成功),(b)如果本次取数失败,则不更新中间时间表,只更新操作时间;

1、首先写一个转换设置本次取数的时间段参数设置

取数时候的开始时间和结束时间则取决于中间时间表,如果状态为1则取数时间段为:上次结束时间到当前取数时间;如果状态为0则取数时间段位:上次开始时间到当前取数时间;这里在kettle的转换为:

2、删除本次取数时间段的数据,并且执行查询和插入操作

这个步骤相对简单,有二个转换,一个转换为执行SQL脚本,另一个转换为查询插入:

 

3、取数插入操作厚成功或者失败更新中间表

其中本次取数成功或者失败转换里的内容都是一个SQL脚本(二个转换里的SQL语句基本一样一个设置1另一个0):

总的作业图为:

总结:

在这种情况遇到的主要问题就是:根据某个条件有二种或者跟多情况去做,大部分情况会用到switch/case这个组件,然后就是很多时候单单转换是完成不了一个复杂任务的,需要作业才能关联起来。

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值