30天學會Data Integration - Kettle系列 第 15 篇 - Step - 使用Javascript處理日期運算

 本篇使用寫程式的方式,適合有基本程式語言觀念的人,可直接省略前兩篇落落長的設定步驟,透過一個Step直接完成西元年轉換成民國年的需求,使用到的Step是[Scripting]Modified Java Script Value。

[Scripting]Modified Java Script Value介紹

提供有更好的效能與更簡單的語法來撰寫JavaScript語法,且允許在一個Step中建立多個腳本,相關的範例可以參考:data-integration/samples/transformations







本篇目標:將西元年生日轉換成民國年生日



新增[Scripting]Modified Java Script Value



設定Modified Java Script Value

左區有Input fields顯示從上一個Step傳過來的欄位清單



Transform Functions裡面提供了很多現成的函式讓我們使用,因為我們必須把Excel中型態為日期的生日欄位轉換成字串,所以可以選點右鍵來觀看date2str的使用範例



非常清楚的告訴我們參數的定義,以及如何使用函式



接著就可以開始動手coding囉!請參考下圖,完成之後請按下Get variavles,會自動幫我們取得Script中定義的變數名稱,如果在這邊有出現錯誤訊息,就代表Script中語法有錯誤,請針對提示訊息下去修改即可



//將生日欄位從date型態轉成string, 以便針對/進行分割
var birthday = date2str(生日,"yyyy/MM/dd").split('/'); 

//取得民國年
var year = birthday[0]-1911;

//取得月份
var month = birthday[1];

//取得日期
var date = birthday[2];

//將民國年月日的值指定給"生日"欄位
var 生日=year+"/"+month+"/"+date;

刪除不必要的欄位,只留下生日,注意這邊的Replace value 'Fieldname' or 'Rename to'要打Y,不然後續取得資料時,會取得最原始的資料,而不是處理過的資料



預覽Modified Java Script Value

大功告成




以上是不是覺得寫一點程式倒也是省事很多呢XD,不過前提是要會寫一點點簡單的程式,如果不會寫程式那也不用擔心,透過前兩篇的設定方式,一樣可以達到目的


留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明