//
kettle入門(四) 之kettle取昨天時間&設(shè)置任意時間變量案例 - xiaohai798的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/xiaohai798/article/details/41867835
在數(shù)據(jù)倉庫項目中 有一類和生產(chǎn)或者外圍系統(tǒng)交互的接口稱為FTP文件接口, 用kettle開發(fā)、實現(xiàn)這種接口 配置腳本時怠褐,經(jīng)常需要用時間變量來取或者上傳FTP里面 固定格式文件名的文本,例如 生產(chǎn)系統(tǒng)定時 每天推送前天的數(shù)據(jù)文本 到某個FTP服務(wù)器
2014-04-28 推送文件名 2015-04-26.txt.gz
2014-04-27 推送文件名 2015-04-25.txt.gz
實現(xiàn):
kettle 版本3.0.4茉帅,如下圖所示:
所需要三個功能組件 1 獲取系統(tǒng)信息 2 Java script value 3 set 變量
下面看第一個組件岸梨,可以自動獲取系統(tǒng)的時間 例如當(dāng)前時間 即下圖的系統(tǒng)日期(變量) 、今天00:00:00等 先取今天的日期
點擊下圖左下角的 類型 下面行 會彈出右側(cè)下腳的 選擇信息類型 再里面點擊 今天00:00:00 然后 寫上名稱即可
下圖看第二個組件 :
主要實現(xiàn)是用js代碼
Format 那一大塊是一個格式化函數(shù) 功能是把時間格式化成 自己需要的時間格式
Format下面那行 new 當(dāng)前時間對象 2代表2天 246060*1000代表1天時間的ms數(shù)--即當(dāng)天減去2天時間ms數(shù) 得到前天的時間
下圖第三個組件:
設(shè)置環(huán)境變量 即把js中的變量名 設(shè)置到系統(tǒng) 或者job可用的變量名中 變量活動類型 有Java虛擬機掘鄙、父Job院究、父父Job洽瞬、根Job。為了便于測試 這里選擇Java虛擬機
下面是點擊運行的測試結(jié)果:
畫紅圈部分可以看到變量設(shè)置成功了业汰!
下圖是一個 使用變量設(shè)置ktr 的kjb
目的就是每天生成2015-04-26 這樣 前天日期的文本 然后用 sftp中的正則表達式匹配 上傳到指定服務(wù)器伙窃, 畫紅圈是filedate_YCL.ktr中設(shè)置的變量名。
附錄 :
組件二里的js腳本:
[javascript] view plain copy
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()-22460601000).Format("yyyyMMdd");--new 當(dāng)前時間對象 2代表2天 246060*1000代表2天時間的ms數(shù)
--即當(dāng)天減去2天時間ms數(shù) 得到前天的時間
備注:
new Date(new Date().getTime()-22460601000).Format("yyyyMMdd");
2這個地方 可以任意改 想取多少天前的就寫多少天样漆,減也可以改成加 yyyyMMdd 格式也可以改為 yyyyMM 或者 yyyy-MM-dd 或者 yyyy/MM/dd
取時分秒 yyyy/MM/dd/ hh:mm:ss 很靈活方便
取當(dāng)前季度 yyyy/MM/dd/qq hh:mm:ss qq是季度