商務智能里的 ETL 到底是什麼東西?
ETL是將業務系統的數據經過抽取、清洗轉換之後載入到數據倉庫的過程,目的是將企業中的分散、零亂、標準不統一的數據整合到一起,為企業的決策提供分析依據。 ETL是BI項目重要的一個環節。 通常情況下,在BI項目中ETL會花掉整個項目的1/3的時間,ETL設計的好壞直接關接到BI項目的成敗。
ETL的設計分三部分:數據抽取、數據的清洗轉換、數據的載入。在設計ETL的時候我們也是從這三部分出發。數據的抽取是從各個不同的數據源抽取到ODS(Operational Data Store,操作型數據存儲)中——這個過程也可以做一些數據的清洗和轉換),在抽取的過程中需要挑選不同的抽取方法,儘可能的提高ETL的運行效率。ETL三個部分中,花費時間最長的是「T」(Transform,清洗、轉換)的部分,一般情況下這部分工作量是整個ETL的2/3。數據的載入一般在數據清洗完了之後直接寫入DW(Data Warehousing,數據倉庫)中去。
ETL的實現有多種方法,常用的有三種。一種是藉助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服務、Informatic等)實現,一種是SQL方式實現,另外一種是ETL工具和SQL相結合。前兩種方法各有各的優缺點,藉助工具可以快速的建立起ETL工程,屏蔽了複雜的編碼任務,提高了速度,降低了難度,但是缺少靈活性。SQL的方法優點是靈活,提高ETL運行效率,但是編碼複雜,對技術要求比較高。第三種是綜合了前面二種的優點,會極大地提高ETL的開發速度和效率。
可以去商業智能學院學習下,上面有視頻講解這塊 http://www.hellobi.com/ ETL模塊的,還有數據倉庫莫的,相輔相成的呃ETL嘛,所謂Extract Transform Load.
具體來講,其實每個部分都能抽成獨立的產品。我司單獨把這一套抽出來再加上了很多附屬的管理工具,直接當成一個大的Enterprise Data Integration solution來賣。
分開來講,Extract其實最困難,Transform最麻煩,Load最容易。
Extract困難在於數據質量真是差到爆,根本無法預知數據源的類型,據說大型公司還是以txt為主... csv都屬於很好質量的,各種資料庫形形色色的編碼那真是燒腦。我司每種讀取模塊都是單獨收費,可見一斑。
此外元數據管理其實很頭痛,我們組專門花了一年做了一個叫做data explorer的東西,掃描元數據信息並進行歸類分析,建立各種聯繫圖什麼的,比如想找出全部50個資料庫裡面含有疑似「name」的列出來。找出來人工摘一摘,就可以建一個job做ETL。我個人覺得這東西太重了,面對的用戶是資料庫多的人工都數不清,要不然找個人看個幾天大概也有同樣的效果。一般公司可能沒這麼複雜要求,也許搞社工庫的用這個正合適。
Transform這個其實特別危險,危險是指這個部分直接影響分析結果。因為這個過程直接修改數據,改變了數據的分布。這東西這麼多年了,共通的還是那些,大小寫,數字轉換,日期轉換,電話號碼正規化,整個分類器補全空值都是賣點。運用之妙,存乎一心,說白了就是大家都不靠譜,還處於摸索階段。千萬不要以為你可以搞個特別NB的清洗演算法提高數據的質量,60%的空數據可能代表的是這一欄的數據缺失嚴重,也可以代表著某個產品的設計缺陷。運用統計學分布填充性別缺失值,結果這是一衛生棉用戶數據。
Load這東西說簡單了就是寫數據倉庫,活著就是直接輸出text或者insert。但是現在MR盛行,大數據盛行,不忘hadoop,hive啥的裝載實在不好意思跟別人說你是搞數據的。但這東西對一個數據專家來講其實太難了,而一個又會裝hadoop又懂數據清洗又有業務知識可以分析數據的數據科學家,太貴了!所以貌似又有很多專門做load的工具,性能其實挺關鍵的。以前搞過一個bug:用戶每次load十億數據,load過程中要看中間結果的前500行,查看操作都要先取一次count,由於某些特殊限制,每次count都要複製一次原表... 界面沒鎖死,用戶等了半天刷不出來就關了再開一次...過不了幾次伺服器就崩潰了...
以上這些,除了那些元數據管理,一般會打包成一個ETL Job, 定義各種trigger來觸發,手動,時間,數據輸入,等等。一般還會有一套日誌分析系統,看看為什麼失敗了,哪個地方可以調優,等等。
而且ETL的job沒有一次寫對的,所以迭代的效率是killing級別的因素,Job的可調試性也是很重要的效率因素。如果Job可以版本化更可以加分。
以上。
ETL是{Extract-抽取;Transformation-轉換;Load-載入}的縮寫,把原始數據從各種數據源中抽取出來,然後經過各種轉換,載入到數據倉庫或是數據中心或是可以分析、交互的平台當中。
ETL是一個橋樑,是多個資料庫中的數據,併到數據中心的必經之路:
ETL是一個處理器,是各種各樣的粗糙數據,變成可供分析的高質量數據的必經過程:
傳統ETL大多通過以下三種方式來實現:
(1)、工具
(2)、SQL
(3)、工具+SQL
不過我覺得現在真的是數據分析的黃金時代了!因為已經出現了很多自服務式的ETL工具。不懂SQL語言沒關係,你有處理數據的思路就行了!
說白了就是:
(1)、能用滑鼠點幾下的 絕不用複製粘貼來操作;
(2)、能點個按鈕實現的 絕不用寫一長溜的公式或語句;
(3)、能用工具花個幾分鐘實現的 絕不用好幾個人花好幾個禮拜來實現。
這裡要重點說明的是:
自服務以後會是一個趨勢,不管是數據處理、還是數據分析、還是數據可視化,以後都會越來越簡單,技術門檻會越來越低,最後就像智能手機一樣,人人都可以用!
一圖勝千言,自服務的ETL工具到底有多容易上手,必須酷炫的演示一下:
(1)、修改列類型
我們都知道,數據源的數據格式有時候可能會比較糙。
比方說,時間格式,有可能是20170429這種。
為了便於分析和統一,我們希望把它規整到「2017/04/29」這種標準格式。
如果是幾行或幾百行的數據,那麼用excel也是可以改的。
但是,當你一天有上萬行甚至百萬行的數據的時候,用excel處理,就算軟體不崩潰,你自己也要等崩潰的。
這時候ETL就很強大了,不管你數據量有多大,點個執行,馬上就好了:
(2)、列轉行
還是一樣,列轉行在excel里也能實現。
倒是不難,就是麻煩。
但是用ETL就很簡單了。
除此之外,ETL還可以做添加常量列、分組聚合、過濾、計算、合併等等等等~
很多公司的數據分析和報表都是用excel來完成的。
但是,DT時代,一方面數據增量非常可觀,另一方面分析需求會越來越多,沒有趁手的工具,你會發現自己會遭遇瓶頸。
所以學一下etl還是非常有必要的,況且這個etl還是免費的!還幾乎不需要學習就能上手!
而且相比於excel,ETL還有以下五個優勢:
1、 excel是直接在表格中操作,有時候容易造成不可挽回的更改;而ETL無論你怎麼操作、怎麼運行,都無損原數據;
2、 對於不同的數據處理需求,excel需要複製、粘貼、寫函數、選公式等等等等;而ETL只需要「拖拽+配置」,簡單迅捷;
3、 excel數據量越大,響應越慢,操作起來繁瑣費時;ETL可處理tb-pb級數據,從2行與2億行都是秒級響應,就是那麼爽;
4、 excel處理數據是一次性的,而ETL處理數據是一勞永逸的:只要運行數據流,原始數據發生任何新增或變動,都會體現在數據流、以及基於該數據流創建的圖表、圖集中;
5、 excel從小白到高手,可能需要查詢一百次百度知道;但ETL,第一次用就能讓你體驗數據高手的感覺。
ETL這個詞本身是來自三個英文單詞的縮寫,分別是E-extract 提取、T-transform 轉換、L-load 載入,簡單說,ETL是一款數據處理分析的工具。傳統的ETL需要大量的專業知識才能完成整個體系的搭建,目前數據觀提供在線自服務的ETL工具,無需了解任何SQL相關知識,只需通過簡單的「拖拽」就能完成數據處理,並進行實時更新,實現數據需求。
ETL是實現BI的基礎,因為保證了數據的質量與正確性。如果質量出現問題,最後的報表做出來也是錯的。
ETL的實現也分很多種, 可以用商務或開源的ETL工具來進行處理,也可以直接在資料庫中進行簡單的錯誤數據管理,比如SQL語句。如果想要定期更新資源文件內容,進行自動化處理的話,還是推薦用ETL工具,這些需求都可以滿足。
ETL當然還包括錯誤數據管理,元數據管理等等一些更明確的細分,也都是為了BI服務。保證數據的正確性。ETL往往是系統設計的實施,在數據倉庫系統的工作量裡面佔有很大的比重。
我是做ETL的,它只是BI的一部分,它利用SQL語句把業務源數據通過清洗,轉換,合併最終得到需求想要的數據,以上是從業ETL菜鳥不到一年的愚見,希望大神們不要見笑,也希望能做到拋磚引玉。
推薦閱讀:
※像永洪BI這樣的國內BI產品的劣勢在哪裡?
※什麼是BI,當前國內外BI的現狀,BI的應用狀況?
※Hadoop 和 BI 如何結合?搭建一個基於 Hadoop+Hive 的數據倉庫,它的前端展現如何實現?如何實現 BI?
※大數據、雲計算和商業智能這三者的關係到底如何,以後的發展前景有什麼看法?
※數據分析和商業智能的區別?