發表文章

目前顯示的是 12月, 2017的文章

30天學會Data Integration - Kettle系列 第 30 篇 - 閉幕 - 總結

  30天的Kettle文章,就到此告一段落囉!透過基本觀念介紹、實例操作示範與簡易的拖拉設定,輕鬆的完成資料分析、轉置與整合,這份檔案就像一份腳本,人人都看得懂,人人可維護,並且搭配上執行通知與排程設定,讓我們更能掌控資料整合的情況與進度。30篇文章中,最著重在Transformation的設計,Steps的部分大概介紹了20種,以下,我們來回顧一下學了哪些。 Kettle安裝與操作環境介紹 Transformation與Job的基本觀念與操作 Hops設定 Transformation Steps操作實例 [Input]CSV file input [Input]Microsoft Excel Input [Input]Table input [Input]Get System Info [Output]Insert / Update [Output]Microsoft Excel Output [Transform]Add constants [Transform]Calculator [Transform]Add constants [Transform]Select values [Transform]Sort rows [Utility]Mail [Flow]Filter rows [Flow]Dummy [Scripting]Modified Java Script Value [Lookup]Database join [Lookup]Database lookup [Joins]Merge Join [Job]Get Variables [Job]Set Variables Job Entries操作實例 [General]START [General]Transformation [Mail]Mail Transformation與Job的排程設定 其實還有很多好用的Steps與Entries想介紹給大家,但礙於表達能力與還有每天可利用的時間很有限,不僅要說明功能還要想例子來實做,想盡量說得仔細一點,希望可以讓大家了解Kettle並循序漸進地學習,有了基本觀念之後可以更容易的去做自我的延伸學習,但現實總是殘酷的!感覺透過這30天的比賽,深深覺得自己各方面都還要在加強,謝謝大家這30天的陪伴(哪來的大家啊XD?),寫得不好的地方還請多多包涵指正,感

30天學會Data Integration - Kettle系列 第 29 篇 - 設定排程

圖片
  本篇要介紹如何將設計好的Transformation與Job設定到電腦的系統排程,去做一些例行性的資料處理,例如寄出行事歷系統中每日的活動事項給使用者,類似這種功能很多人都是另外寫程式去處理,但透過Kettle只需要幾個Step就可以簡單且清楚的完成。 在Kettle中我們查看結果都是使用Run icon來執行,但不可能每天都準時打開Kettle然後按下Run按鈕吧!所以需要透過一些自動化的設定。 新增一個.bat檔案 如果要執行Job,內容請打以下指令碼,然後指定自己job檔案的位子 d: cd /d "D:\data-integration\" call kitchen.bat / file :D:\ data -integration\samples\jobs\arguments2\pass_arguments.kjb - logfile =D:\ data -integration\samples\jobs\log.txt exit -logfile可自行選用,會紀錄執行的Log資訊 如果要執行Job,內容請打以下指令碼,然後指定自己Transformation檔案的位子 d: cd /d "D:\data-integration\" call kitchen.bat / file :D:\data-integration\samples\jobs\arguments2\pass_arguments.kjb exit 設定系統排程 開始>所有程式>附屬應用程式>系統工具>工作排程器 建立基本工作 選擇.bat檔案 完成排程設定 執行時間到的時候會開啟執行視窗,完成後會自動關閉視窗 透過上述的排程設定是不是覺得很方便呢,可以想看看手邊有沒有什麼例行性處理的事情,然後使用Kettle重新設計後就可以完全自動化處理囉! 參考資料: http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation

30天學會Data Integration - Kettle系列 第 28 篇 - 設定變數與取得變數

圖片
  此篇要來討論一些進階問題,先前我們介紹過使用Get System Info來讀取系統資訊,例如取得日期或是Command Line傳入的參數,而也曾介紹過Step的特性就是在處理資料流中的每一筆資料,那麼在一筆一筆資料慢慢處理時,會不會有效能上的問題呢?答案是肯定的,所以本篇會介紹調整效能的好物,就是[Job]Set Variables與[Job]Get Variables,且必須與Job還有Transformation互相搭配使用 本篇目標 使用 Step - 取得系統資訊並寫入資料庫 此篇延伸說明,本篇想要取得近七日的新增的貨運商資料。 本篇撰寫時的前七日是2017/1/5,所以1/5後新增的有6筆,1/5前新增的有3筆 以下先介紹如果只用Transformation來處理會有什麼問題,以及如何搭配Job來做問題的改善 使用Transformation設計 1.新增Table Input將Shippers資料表讀進來 2.新增Select Values將CreateTime欄位型態從String轉為Date,以便後續篩選日期時才能做日期比較 3.新增Get System Info取得今日日期 4.新增Add constants來定義要取得幾天前的日期,因為本篇想要取得七前天,所以將值設為-7 5.新增Calculator進行本日日期減掉七天的運算 6.新增Filter rows,篩選出近七日新增的廠商資料 7.新增Microsoft Excel Output來接收近七日新增資料 8.新增Dummy來接收篩選的來接收七日前新增資料 細部設定 完成後直接執行,觀察Step Metrics會發現,「取得今天日期」、「設定天數」與「取得前七天的日期」的Read與Written的次數都是9次,也意味著,如果今天資料有100萬筆,這3個Step就會執行100萬次,但是!這三個Step的結果都是固定的!不會隨著一筆一筆的資料的不同而有所改變,所以這很顯然有浪費效能的問題,此設計可能需要在進行調整 使用Job設計 將固定的運算獨立成一個Transformation 固定的運算指的就是「取得今天日期」、「設定天數」與「取得前七天的日期」這三個Step,新增一個Transformation,並將此3個Step加入,另外在新增一個Step:[Job]Set Variables,將