kettle入门(四) 之kettle取昨天时间&设置任意时间变量案例
来源:互联网 发布:mac无鼠标右键 编辑:程序博客网 时间:2024/04/29 21:13
引:
在数据仓库项目中 有一类和生产或者外围系统交互的接口称为FTP文件接口, 用kettle开发、实现这种接口 配置脚本时,经常需要用时间变量来取或者上传FTP里面 固定格式文件名的文本,例如 生产系统定时 每天推送前天的数据文本 到某个FTP服务器
2014-04-28 推送文件名 2015-04-26.txt.gz
2014-04-27 推送文件名 2015-04-25.txt.gz
实现:
kettle 版本3.0.4,如下图所示:
所需要三个功能组件 1 获取系统信息 2 java script value 3 set 变量
下面看第一个组件,可以自动获取系统的时间 例如当前时间 即下图的系统日期(变量) 、今天00:00:00等 先取今天的日期
点击下图左下角的 类型 下面行 会弹出右侧下脚的 选择信息类型 再里面点击 今天00:00:00 然后 写上名称即可
下图看第二个组件 :
主要实现是用js代码
Format 那一大块是一个格式化函数 功能是把时间格式化成 自己需要的时间格式
Format下面那行 new 当前时间对象 2代表2天 24*60*60*1000代表1天时间的ms数
--即当天减去2天时间ms数 得到前天的时间
下图第三个组件:
设置环境变量 即把js中的变量名 设置到系统 或者job可用的变量名中 变量活动类型 有Java虚拟机、父Job、父父Job、根Job。为了便于测试 这里选择Java虚拟机
下面是点击运行的测试结果:
画红圈部分可以看到变量设置成功了!
下图是一个 使用变量设置ktr 的kjb
目的就是每天生成2015-04-26 这样 前天日期的文本 然后用 sftp中的正则表达式匹配 上传到指定服务器, 画红圈是filedate_YCL.ktr中设置的变量名。
附录 :
组件二里的js脚本:
Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt;}var dtNew=new Date(new Date().getTime()-2*24*60*60*1000).Format("yyyyMMdd");--new 当前时间对象 2代表2天 24*60*60*1000代表2天时间的ms数--即当天减去2天时间ms数 得到前天的时间
备注:
new Date(new Date().getTime()-2*24*60*60*1000).Format("yyyyMMdd");
2这个地方 可以任意改 想取多少天前的就写多少天,减也可以改成加 yyyyMMdd 格式也可以改为 yyyyMM 或者 yyyy-MM-dd 或者 yyyy/MM/dd
取时分秒 yyyy/MM/dd/ hh:mm:ss 很灵活方便
取当前季度 yyyy/MM/dd/qq hh:mm:ss qq是季度
- kettle入门(四) 之kettle取昨天时间&设置任意时间变量案例
- Kettle:利用设置变量(时间戳)实现数据增量更新
- kettle之时间转换异常
- kettle 变量设置
- Kettle 设置变量
- kettle 设置变量
- kettle入门(五) 之kettle抽取gz格式文本详细案例
- kettle mongoDB时间格式查询
- kettle 的内存设置及输出日志的时间类型
- kettle变量
- Kettle入门
- Kettle 入门
- 【Kettle从零开始】第八弹之Kettle变量参数传递介绍
- 【Kettle从零开始】第八弹之Kettle变量参数传递介绍
- kettle入门(七) 之kettle增量方案(一)全量比对取增量-根据唯一标示
- kettle入门(三) 之kettle连接hadoop&hdfs图文详解
- kettle入门(六) 之kettle抽取变量表名表
- KETTLE 读取文本信息添加时间字段
- Android Studio 官网下载地址
- javascript实现修改微信分享的标题内容等
- IOS 如何选择delegate、notification、KVO?
- 常用的linux命令
- MySQL之外键约束
- kettle入门(四) 之kettle取昨天时间&设置任意时间变量案例
- Umeng的QQ登陆设置
- python 网络抓包
- 实习两星期工作总结
- 第16周项目4-为动态数组扩容
- java生成6位隨機數
- 一个神奇的网站http://www.googleisok.com/
- Mann-Kendall突变检测(mk突变检测)
- FineReport中图表排序的具体实现