在使用Kettle時,如果給定的元件中不能滿足我們的需求,可以使用“JavaScript腳本”元件來使用我們自定義的功能。
Kettle版本:8.0
背景:要将傳入的時間字元串轉換為時間戳(試了“字段選擇”元件來修改中繼資料類型,但是達不到想要的效果)
如:傳入“2019-09-05 10:14:16” ,得到結果“1567649656000”
這裡我們可以通過編寫Java代碼實作這個轉換功能:
package dateTrans;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class date2timestamp {
public static Long getTimestamp(String str){
Long timestamp = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
timestamp = sdf.parse(str).getTime();
} catch (
ParseException e) {
e.printStackTrace();
}
return timestamp;
}
}
然後将這個代碼打成jar包,放在kettle安裝目錄的lib目錄下,然後重新開機Spoon(一定要重新開機)
我們在“腳本”類别中選擇“JavaScript腳本”元件,打開:
這裡如何引入我們自定義的包?
要通過new一個對象來實作,這裡的Packages為固定寫法,dateTrans為包名,date2timestamp為類名
然後就可以通過這個對象來調用date2timestamp的靜态方法getTimestamp了,将上一個步驟中的字段date作為參數(這裡需要注意一下,這個步驟會對上一步驟中傳入的每一行執行一次我們編寫的轉換)
然後定義一個變量timestamp來接收結果,并作為字段傳入下一步驟。(在下一步驟中通過timestamp字段就可以擷取轉換後的每一個時間戳)