【Kettle实战】数据分批处理及参数化传递子作业任务

对于大表操作,本来离线数据需要分批处理,刚开始只会用具体日期去做,通过复制多分转换和作业来处理。当日期范围大了后,这是个苦力活儿,kettle里面有参数化传递功能,多动手实操,懂得灵活变通自然工作也就轻松很多。

Mysql取行号

SELECT @row_number:=@row_number+1 AS num FROM tmp, (SELECT @row_number:=0) AS t

MySQL日期参数处理

select * from (
select num,DATE_FORMAT(DATE_SUB(NOW(),INTERVAL num-1 month), '%Y-%m-1 00:00:00') dt
,DATE_FORMAT(DATE_SUB(NOW(),INTERVAL num-1 month), '%Y-%m-1 00:00:00') startDate
,DATE_FORMAT(DATE_SUB(NOW(),INTERVAL (num-2) month), '%Y-%m-1 00:00:00') endDate
from(
SELECT @row_number:=@row_number+1 AS num FROM tmp, (SELECT @row_number:=0) AS t
)A limit 20
)B where startDate>='2021-01-01'

主job

重点注意配置:子job每行都需要执行

第一个转换,配置参数

重点步骤:复制记录到结果

子job,单个批处理作业任务

里面包含一个转换逻辑,这个转换步骤是需要配置具体“转换”处理逻辑的。

  • 这里要注意:上图转换步骤中获取结果和设置变量在同一个转换中,这样是有问题的,第一次运行会报参数找不到,第二次才正常!!!这里应该将获取结果单独放到一个转换中,同设置变量是先后执行关系。因为在同一个转换中的步骤是可以并行执行的。

批处理任务转换,从结果获取参数,设置变量

重要步骤:

从结果获取记录

从主job中获取记录,一次一行

设置变量

将记录结果参数配置成变量

表输入

注意要勾选替换SQL变量;变量用单引号和doolar符和大括号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值