30天學會Data Integration - Kettle系列 第 13 篇 - Step - 處理日期的運算

 此篇要介紹與數學運算有關的Step:[Transform]Calculator,顧名思義,就是計算機的功能,提供了很多現成的公式來套我們進行套用,後續介紹的Step中有些也可以達到運算的功能,但是會比較複雜一些,會需要寫一點點的程式,但是Calculator完全是透過設定的方式,所以非常的簡單易用,其中也會順便帶到[Transform]Add constants來輔助我們進行民國年的計算。

目標 - 將西元年轉民國年

在前三篇的文章中,透過讀取CSV、Excel與Table的方式將準備好的資料讀入,準備好的資料中,包含一個生日的欄位,通常看到生日,就會有一種預感,肯定是又要處理民國年與西元年的問題了,這個問題在資料庫規劃時,有些人會直接開date型態來存西元年的格式(ex:2016/12/28),有些則是直接開nvarchar(7)來存放民國年的字串(ex:1051228),我自己是習慣以date來存放,等到要呈現資料時,才會另外撈出來處理成民國年。

接下來會以讀取Excel的方式來示範,若使用CSV或是Table讀取資料,在Calculator的設定都是一模一樣的喔!



新增 Calculator

一如往常,新找到Calculator並加入主要編輯區



建立 Hop

此步驟不可省略,要建立Hop資料才會傳至Calculator



設定 Calculator

在Calculator上面點兩下進行設定



  1. 在New Field命名要加入的欄位名稱,因為要針對日進行拆解,所以需要把年月日欄位各別獨立:西元年
  2. 在Calculation選擇要使用的計算規則:Year of date A,計算規則中的變數A、B、C會讀取Field A、Field B、Field C的值來做運算,另外在這裡也可以看到Calculation也提供了許多現成的公式,可是自身需求來進行套用
  3. 在Field A選取欄位:生日
  4. 設定此新增的欄位的型態:Integer

接著就繼續把月份跟日期的部分也都獨立出來,設定如下



完成設定之後,先來預覽一下計算結果,可以點選Preview icon或是在Calculator按右建選取Preview(不熟的人可以再參考:預覽、除錯與驗證Transformation篇)





把日期獨立的部分已經都設定完成了,接下來我們要來進行西元年轉民國年的計算,但會發現,Field B不知道要選誰,應該要有一個欄位值代表民國初年的西元年,也就是1911年,這樣我們才有辦法使用Calculation=A-B的公式



所以,接下來要來介紹一個也經常使用的Step:[Transform]Add constants

新增 Add constants

新找到Add constants並加入主要編輯區



建立 Hop



設定 Add constants

輸入常數名稱、型態與值



回到Add constants設定民國年的Field B,此時就會出現"民國初年的西元年"的欄位可以選擇了



一切完成之後,進行預覽,就成功取得民國年囉!




下一篇將介紹如何組合日期,或者是大家可以動動腦想一下哦!用今天的Calculator就可以完成組合囉,答案明天揭曉


留言

這個網誌中的熱門文章

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

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

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