kettle通过日期循环方式作业
环境说明:
kettle:6.5
jdk: openjdk 1.8
os: windows 7
操作目标:
数据库中需要按月份增量(增量默认1个月,可以修改为自定义N个月)抽取数据,即2018-01-01为开始时间,2029-12-31为结束时间,一个月一个月的通过sql抽取数据到对应表分区,分区字段为yyyy-MM-01。 也可以通过cli传参传入开始、结束时间任意抽取一段时间内数据。
实现思路:
通过传入开始、结束时间并通过js对开始时间进行循环。
实现步骤:
总体结构:
job和参数定义:
初始化节点:
js代码内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | var startTime = getVariable( 'startTime' , null ); var endTime = getVariable( 'endTime' , null ); // yy / yyyy - 06 / 2006 // MM / MMM / MMMMM - 11 / Nov / November // d / dd - 1 / 01 // E / EEEE - Tue / Tuesday // hh / HH - 11 / 23 // m / mm - 5 / 05 // s / ss - 8 / 08 startTime = startTime + " 00:00:00" ; endTime = endTime + " 23:59:59" setVariable( "startTime" , startTime, "r" ); setVariable( "endTime" , endTime, "r" ); var startTime1 = startTime; var endTime1 = str2date(startTime, "yyyy-MM-dd HH:mm:ss" ); endTime1 = dateAdd(endTime1, "m" ,1); endTime1 = dateAdd(endTime1, "ss" ,-1); endTime1 = date2str(endTime1, "yyyy-MM-dd HH:mm:ss" ); setVariable( "startTime1" , startTime1, "r" ); setVariable( "endTime1" , endTime1, "r" ); |
循环判定节点:
循环自增节点:
js节点代码:
var startTime = getVariable('startTime', null); var startDate = str2date(startTime, "yyyy-MM-dd HH:mm:ss"); startDate = dateAdd(startDate, "m", 1); var startTime = date2str(startDate, "yyyy-MM-dd") + " 00:00:00" setVariable("startTime", startTime, "r"); var startTime1 = startTime; var endTime1 = str2date(startTime, "yyyy-MM-dd HH:mm:ss"); endTime1 = dateAdd(endTime1,"m",1); endTime1 = dateAdd(endTime1,"ss",-1); endTime1 = date2str(endTime1, "yyyy-MM-dd HH:mm:ss"); setVariable("startTime1", startTime1, "r"); setVariable("endTime1", endTime1, "r");
日志节点:
作业节点:
通过把startTime1和endTime1传入sql作为控制SQL查询时间段的变量完成循环操作。
此为通过javascript进行循环操作的基本思路。
本文来自博客园,作者:一朵野生菌,转载请注明原文链接:https://www.cnblogs.com/xmy20051643/p/13560808.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!