關(guān)于ETL看這篇文章就夠了,三分鐘讓你明白什么是ETL
今天來聊一個(gè)技術(shù)問題,有關(guān) ETL 的開發(fā)。對(duì)于做過 商業(yè)智能BI 開發(fā)的朋友,ETL 并不陌生,只要涉及到數(shù)據(jù)源的數(shù)據(jù)抽取、數(shù)據(jù)的計(jì)算和處理過程的開發(fā),都是 ETL。
ETL是什么
ETL一共有三個(gè)階段,分別是Extraction 抽取,Transformation 轉(zhuǎn)換,Loading 加載。從不同數(shù)據(jù)源抽取數(shù)據(jù) EXTRACTION ,按照一定的數(shù)據(jù)處理規(guī)則對(duì)數(shù)據(jù)進(jìn)行加工和格式轉(zhuǎn)換 TRASFORMATION,最后處理完成的輸出到目標(biāo)數(shù)據(jù)表中也有可能是文件等等,這個(gè)就是 LOADING。

再通俗一點(diǎn)講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場(chǎng)的各個(gè)攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最后下鍋把菜炒好端到飯桌上。菜市場(chǎng)的各個(gè)攤位就是數(shù)據(jù)源,做好的菜就是最終的輸出結(jié)果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉(zhuǎn)換。
ETL怎么實(shí)現(xiàn)
在開發(fā)的時(shí)候,大部分時(shí)候會(huì)通過 ETL 工具去實(shí)現(xiàn),比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 里面的 SSIS 等等,在結(jié)合基本的 SQL 來實(shí)現(xiàn)整個(gè) ETL 過程。
也有的是自己通過程序開發(fā),然后控制一些數(shù)據(jù)處理腳本跑批,基本上就是程序加 SQL 實(shí)現(xiàn)。

?
哪種方式更好,也是需要看使用場(chǎng)景和開發(fā)人員對(duì)那種方式使用的更加得心應(yīng)手。我看大部分軟件程序開發(fā)人員出身的,碰到數(shù)據(jù)類項(xiàng)目會(huì)比較喜歡用程序控制跑批,這是程序思維的自然延續(xù)。純 商業(yè)智能BI 開發(fā)人員大部分自然就選擇成熟的 ETL 工具來開發(fā),當(dāng)然也有一上來就寫程序腳本的,這類 商業(yè)智能BI 開發(fā)人員的師傅基本上是程序人員轉(zhuǎn)過來的。
用程序的好處就是適配性強(qiáng),可擴(kuò)展性強(qiáng),可以集成或拆解到到任何的程序處理過程中,有的時(shí)候使用程序開發(fā)效率更高。難就難在對(duì)維護(hù)人員有一定的技術(shù)要求,經(jīng)驗(yàn)轉(zhuǎn)移和可復(fù)制性不夠。

?
用 ETL 工具的好處,第一是整個(gè) ETL 的開發(fā)過程可視化了,特別是在數(shù)據(jù)處理流程的分層設(shè)計(jì)中可以很清晰的管理。第二是鏈接到不同數(shù)據(jù)源的時(shí)候,各種數(shù)據(jù)源、數(shù)據(jù)庫的鏈接協(xié)議已經(jīng)內(nèi)置了,直接配置就可以,不需要再去寫程序去實(shí)現(xiàn)。第三是各種轉(zhuǎn)換控件基本上拖拉拽就可以使用,起到簡(jiǎn)化的代替一部分 SQL 的開發(fā),不需要寫代碼去實(shí)現(xiàn)。第四是可以非常靈活的設(shè)計(jì)各種 ETL 調(diào)度規(guī)則,高度配置化,這個(gè)也不需要寫代碼實(shí)現(xiàn)。
所以在大多數(shù)通用的項(xiàng)目中,在項(xiàng)目上使用 ETL 標(biāo)準(zhǔn)組件開發(fā)會(huì)比較多一些。
ETL設(shè)計(jì)理念是什么
ETL 從邏輯上一般可以分為兩層,控制流和數(shù)據(jù)流,這也是很多 ETL 工具設(shè)計(jì)的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一個(gè)數(shù)據(jù)流與數(shù)據(jù)流處理的先后流程,一個(gè)控制流可以包含多個(gè)數(shù)據(jù)流。比如在數(shù)據(jù)倉庫開發(fā)過程中,第一層的處理是ODS層或者staging 層的開發(fā),第二層是 DIMENSION維度層的開發(fā),后面幾層就是DW 事實(shí)層、DM數(shù)據(jù)集市層的開發(fā)。通過ETL的調(diào)度管理就可以讓這幾層串聯(lián)起來形成一個(gè)完整的數(shù)據(jù)處理流程。

?
數(shù)據(jù)流就是具體的從源數(shù)據(jù)到目標(biāo)數(shù)據(jù)表的數(shù)據(jù)轉(zhuǎn)換過程,所以也有 ETL 工具把數(shù)據(jù)流叫做轉(zhuǎn)換。在數(shù)據(jù)流的開發(fā)設(shè)計(jì)過程中主要就是三個(gè)環(huán)節(jié),目標(biāo)數(shù)據(jù)表的鏈接,這兩個(gè)直接通過 ETL 控件配置就可以了。中間轉(zhuǎn)換的環(huán)節(jié),這個(gè)時(shí)候就可能有很多的選擇了,調(diào) SQL 語句、存儲(chǔ)過程,或者還是使用 ETL 控件來實(shí)現(xiàn)。
有的項(xiàng)目上習(xí)慣使用 ETL 控件來實(shí)現(xiàn)數(shù)據(jù)流中的轉(zhuǎn)換,也有的項(xiàng)目要求不使用標(biāo)準(zhǔn)的轉(zhuǎn)換組件使用存儲(chǔ)過程來調(diào)用。也有的是因?yàn)閿?shù)據(jù)倉庫本身這個(gè)數(shù)據(jù)庫不支持存儲(chǔ)過程就只能通過標(biāo)準(zhǔn)的SQL來實(shí)現(xiàn)。
ETL架構(gòu)是什么
我們通常講的商業(yè)智能BI數(shù)據(jù)架構(gòu)師其實(shí)指的就是ETL的架構(gòu)設(shè)計(jì),這是整個(gè)商業(yè)智能BI項(xiàng)目中非常核心的一層技術(shù)實(shí)現(xiàn),數(shù)據(jù)處理、數(shù)據(jù)清洗和建模都是在ETL中去實(shí)現(xiàn)。

?
一個(gè)好的ETL架構(gòu)設(shè)計(jì)可以同時(shí)支撐上百個(gè)包就是控制流,每一個(gè)控制流下可能又有上百個(gè)數(shù)據(jù)流的處理過程。之前寫過一篇技術(shù)文章,大家可以搜索下關(guān)鍵字 BIWORK ETL 應(yīng)該在網(wǎng)上還能找到到這篇文章。
這種框架設(shè)計(jì)不僅僅是ETL框架架構(gòu)上的設(shè)計(jì),還有很深的ETL項(xiàng)目管理和規(guī)范性控制器思想,包括后期的運(yùn)維,基于商業(yè)智能BI的商業(yè)智能BI分析,ETL的性能調(diào)優(yōu)都會(huì)在這些框架中得到體現(xiàn)。因?yàn)榇蟮?/span>商業(yè)智能BI項(xiàng)目可能同時(shí)需要幾十人來開發(fā)ETL,框架的頂層設(shè)計(jì)就很重要。