ETL到底是什么?
??????? 前段時間和大家聊了一個話題,就是為什么要用構(gòu)建數(shù)據(jù)倉庫,而不是直連數(shù)據(jù)源的方式開發(fā)報表?通過這次的話題,大家知道了構(gòu)建數(shù)據(jù)倉庫就等于是打好堅(jiān)實(shí)的地基,而BI大廈也才能越建越高!在構(gòu)建數(shù)據(jù)倉庫的過程需要用到一個工具,也就是ETL。今天就和大家聊一下,ETL到底是什么?

??????? ETL到底是什么?
??????? ETL是Extraction-Transformation-Loading的縮寫,中文名稱為數(shù)據(jù)提取、轉(zhuǎn)換和加載??醋置嬉馑疾皇呛芎美斫?,那ETL到底是什么?先講一個故事吧。
??????? 小強(qiáng)和小麗結(jié)婚一年了,事業(yè)家庭都穩(wěn)定了下來,準(zhǔn)備要生BB了,父母聽到這個消息,非常高興,堅(jiān)持要從另一個城市搬過來幫忙。但是,小強(qiáng)現(xiàn)在住的地方是一個一房一廳,有點(diǎn)小,所以,得搬一個大點(diǎn)的房子。于是,小強(qiáng)找到了一間新房子:三房兩廳兩衛(wèi),還有一個大陽臺。
??????? 終于落實(shí)好,就要準(zhǔn)備搬家了。一個周末,小夫妻兩個人將舊住所中需要的東西打好包,而一些不再需要的東西就只有丟掉了,忙碌了整整一個上午。中午,搬家公司來了,將打包的東西運(yùn)到新住所,接下來,兩個人又開始忙碌,將打包的東西解開,重新整理,擺放。原來的洗衣機(jī)是擠在衛(wèi)生間的,現(xiàn)在終于可以放到陽臺上了......。
??????? 下午,父母的東西也運(yùn)過來了。要將他們個人的東西放到另一個臥室,對了,他們還帶了一個電飯煲,小強(qiáng)原來也有一個的,這個還得想辦法處理一下......好了,好像還缺點(diǎn)什么,需要再去采購些物品......
??????? 經(jīng)過周末兩天的忙碌,終于,按照自己和父母的喜好,重新擺放好了,真舒適?。阂贿M(jìn)客廳,黑白色調(diào)的沙發(fā)、茶幾和電視顯的素雅而高貴,特別是墻上的照片,從兩個人認(rèn)識、戀愛到結(jié)婚,講述著一個迷人的愛情故事。餐桌上擺著父母帶來的青花瓷茶具,泡出來的茶中溢著歲月的沉香;進(jìn)到主臥,大大的梳妝臺和衣柜是女主人的最愛,而床頭的書架,則是男主人的地盤......進(jìn)到客臥,深色的衣柜和床,有些復(fù)古的感覺,窗臺上的白玉蘭花沐浴著陽光,這是父母共同的愛好.....
??????? 小強(qiáng)和小麗牽著手,看著這個溫馨的家,臉上洋溢著幸福,窗外的陽光灑落進(jìn)來,鏡頭拉遠(yuǎn),定格,The?End,故事講完了。這個故事是在講都市愛情故事呢?還是房地產(chǎn)公司精心策劃的廣告?
??????? 都不是,我們想用它來說說ETL是什么的。好吧,言歸正傳,我們重新來講一遍故事。
??????? 小強(qiáng)(即已經(jīng)使用的ERP)因?yàn)橐鶥B(即正要實(shí)施的MES)加上父母(即已經(jīng)使用的HR)要過來,所以,需要換一套大的房子(即DW數(shù)據(jù)倉庫)。大房子會根據(jù)實(shí)際的需求進(jìn)行規(guī)劃(三房兩廳兩衛(wèi),還有一個大陽臺)。捋一下,就是將ERP/HR/MES的數(shù)據(jù)整合到數(shù)據(jù)倉庫中去。
??????? ETL其實(shí)就是數(shù)據(jù)搬家的過程。
??????? 搬家第一步,我們要將舊住所的東西打包;第二步,我們叫來搬家公司將打包的東西運(yùn)輸?shù)叫伦∷?;第三步,我們在新住所將打包的東西解開,重新整理,擺放。
??????? ETL就是數(shù)據(jù)搬家的過程,第一步,將有用的表和字段整理出來;第二步,將這些字段搬到另外一個數(shù)據(jù)庫中,實(shí)現(xiàn)物理上的轉(zhuǎn)移;第三步,再按新的分析需求,重新清洗整理這些數(shù)據(jù)。聽到現(xiàn)在,你可能覺得好像是有些理解了。但具體是怎么實(shí)現(xiàn)ETL的過程呢,且聽我慢慢道來。
?
??????? 第一步打包,到底怎么將有用的表和字段打包呢?
??????? 生活中的搬家,我們在打包的時候,大家通常是整理每個房間,看哪些物品是有用的,就放在一個箱子里,整理的時候,只會考慮這個物品是不是有用,至于這個物品搬到新家后放在哪里,是不會去過多的思考的。如果我們先想著哪些東西都是要放到新房子主臥的,再將這些東西全部放在一起打包。那一定是有強(qiáng)迫癥了。
??????? ETL過程中,有些朋友就會這樣,習(xí)慣了原來寫SQL或存貯過程開發(fā)報表的方式,在搬數(shù)據(jù)時,也是寫視圖或存貯過程,將結(jié)果搬到數(shù)據(jù)倉庫中去。這種方式非常不好,為什么呢?首先,它仍然是老思路,只是原來是存貯在臨時表中,現(xiàn)在改為存貯在物理表中。技術(shù)或工具的升級,其實(shí)首先是要升級思維方式;其次,一旦需求發(fā)生變化,就需要頻繁修改視圖或存貯過程,后端開發(fā)的工作量很大。
??????? 正確的做法是,只考慮分析需求中的數(shù)據(jù),來自哪些表或字段,就把涉及到的表與字段原封不動的搬過去,至于搬過去后怎么用,等搬過去再說,先不著急。
?
??????? 不同的業(yè)務(wù)系統(tǒng),會有許多相同的基礎(chǔ)資料,如都有部門這個基礎(chǔ)資料,但大家的編碼或名稱可能不一樣,這就需要額外處理一下,就好像父母也帶了一個電飯煲需要想辦法處理一樣。
??????? 構(gòu)建數(shù)據(jù)倉庫時,總會有一些數(shù)據(jù)可能并不存在于某個業(yè)務(wù)系統(tǒng)中,如電商平臺的數(shù)據(jù),或者手工維護(hù)的預(yù)算數(shù)據(jù)。要使用這些數(shù)據(jù),就需要額外導(dǎo)進(jìn)去,就好像還缺點(diǎn)什么,需要再去采購些物品一樣。
??????? 小強(qiáng)小兩口周末兩天的忙碌是辛苦的,但也是值得的。ETL的意義或價值,就好像小強(qiáng)小兩口的忙碌一樣,是為了最后有一個舒適的新家。
??????? 數(shù)據(jù)倉庫構(gòu)建好后,才有可能基于數(shù)據(jù)倉庫來構(gòu)建分析模型并根據(jù)自己的喜好展現(xiàn)最終的結(jié)果。客廳里一目了然的就是管理駕駛艙,既有ERP的信息(小強(qiáng)的電視),也有HR的信息(父母的茶具),而進(jìn)到主臥,則好像進(jìn)入到某個具體的分析主題一樣;而進(jìn)到客臥,則相當(dāng)于切換到另外一個分析主題。
??????? ETL的質(zhì)量決定了BI是否成功(小強(qiáng)從此過上了幸福的生活。)
總結(jié)
??????? ETL就是數(shù)據(jù)搬家的過程,第一步,將有用的表和字段打包;第二步,將這些字段搬到數(shù)據(jù)倉庫中,實(shí)現(xiàn)物理上的轉(zhuǎn)移;第三步,再按新的分析需求,重新清洗整理這些數(shù)據(jù)。