ETL的過程我想很多人都談過了,最近我在比較SSIS,OWB和infomatica,結合以前的項目,加深了我對ETL過程的理解和認識。
其實這三種工具,除去應用平臺以為,大同小異,各有利弊。今天我想分享一下我的經驗,主要在擴展和維護方面。
1:數據落地和ELT
很多人談到數據落地的概念,說白了,就是ODS或者DWH中,有數據input或者output的,都先把要操作的數據放到臨時表里面,而數據傳輸的兩端的表的結構都是一樣的,這樣的操作比較便捷,幾乎不用考慮轉換的問題。
同時我們還要提到的就是ELT,ELT和ETL其實各有好處,一個是用工具來轉化數據,一個用SP,工具一般都是一行行的處理,而SP一般都是一列列的處理。我個人認為ELT,用SP處理數據比較好,因為我們的測試或者將來的維護,都需要經常改變表間的mapping關系。而SP只是需要在數據庫里面做一些修改和操作,而且還比較容易調試,去發現問題的根源。
2:腳本文件
這里的腳本文件可以分為FTP script,table Script,Stored proc Script還有Shell腳本,不管是dos shell 還是unix shell,這些都是一些操作系統的控制文件,我們可以暫時不談。為什么要談談這些腳本了,其實我們在設計和開發結構的時候很簡單,但是我們修改的時候,就比較麻煩了,特別是ETL工具在打開一個package的時候,需要加載和驗證,有的時候很慢很慢,如果我們只是修改一些小參數的話,花長時間就不值得,如果我們將腳本文件都放在一起的話,那么打開txt或者bat文件就很方便。還有就是我們對于一些臨時表,有的時候需要將數據全部刪掉,我們可以用 truncate table,有的時候用drop和create也是不錯的選擇。
當然,如果用腳本文件的話,主機的安全性一定要好,而且對于賬號的表級操作權限也要分配好。
3. 策略表
我們按照不同的頻率,定時執行package,有的時候可能遇到error,有的時候可能由于其他的問題不能按時執行。其實我們可以做一張策略表,存儲每個package的執行的時間規則,然后每天開始執行前,將所有的package初始化出當天的執行情況,記錄開始結束時間,還有成功標記。執行時,可以先讀取上一個執行日的執行情況,將未完成的package,延續的到當日。