更新時間:2021-06-08 來源:黑馬程序員 瀏覽量:
ETL是英文Extract-Transform-Load的縮寫,用來描述將數(shù)據(jù)從源端經(jīng)過抽取(extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過程,它能夠?qū)Ω鞣N分布的、異構(gòu)的源數(shù)據(jù)(如關(guān)系數(shù)據(jù))進(jìn)行抽取,按照預(yù)先設(shè)計的規(guī)則將不完整數(shù)據(jù)、重復(fù)數(shù)據(jù)以及錯誤數(shù)據(jù)等“臟"數(shù)據(jù)內(nèi)容進(jìn)行清洗,得到符合要求的“干凈”數(shù)據(jù),并加載到數(shù)據(jù)倉庫中進(jìn)行存儲,這些“干凈”數(shù)據(jù)就成為了數(shù)據(jù)分析、數(shù)據(jù)挖掘的基石。
ETL是實(shí)現(xiàn)商務(wù)智能(Business Intelligence,BI)的核心。一般情況下,ETL會花費(fèi)整個BI項(xiàng)目三分之一的時間,因此ETL設(shè)計得好壞直接影響B(tài)I項(xiàng)目的成敗。
企業(yè)中常用的ETL實(shí)現(xiàn)有多種方式,常見的方式如下。
(1)借助ETL工具(如Pentaho Kettle、Informatic等)。
(2)編寫SQL語句。
(3)將ETL工具和SQL語句結(jié)合起來使用。
上述3種實(shí)現(xiàn)方式各有利弊,其中第1種方式可以快速建立ETL工程,屏蔽復(fù)雜的編碼任務(wù)、加快速度和降低難度,但是缺少靈活性:第2種方式使用編寫SQL語句的方式優(yōu)占是靈活,可以提高ETL的運(yùn)行效率,但是編碼復(fù)雜,對技術(shù)要求比較高;第3種方式綜合了前面兩種方法的優(yōu)點(diǎn),可以極大地提高ETL的開發(fā)速度和效率。
ETL體系結(jié)構(gòu)
ETL主要是用來實(shí)現(xiàn)異構(gòu)數(shù)據(jù)源數(shù)據(jù)集成的。多種數(shù)據(jù)源的所有原始數(shù)據(jù)大部分未作修改就被載人ETL,因而,無論數(shù)據(jù)源在關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫,還是在外部文件.集成后的數(shù)據(jù)都將被置于數(shù)據(jù)庫的數(shù)據(jù)表或數(shù)據(jù)倉庫的維度表中,以便在數(shù)據(jù)庫內(nèi)或數(shù)據(jù)倉庫中作進(jìn)一步轉(zhuǎn)換(因此,一般會將最終的數(shù)據(jù)存儲到數(shù)據(jù)庫或者數(shù)據(jù)倉庫中)。ETL的體系結(jié)構(gòu)如圖下所示。
ETL體系結(jié)構(gòu)
在上圖中,若數(shù)據(jù)源1和數(shù)據(jù)源2均為功能較強(qiáng)大的DBMS(數(shù)據(jù)庫管理系統(tǒng)),則可以使用SQL語句完成一部分?jǐn)?shù)據(jù)清洗工作。但是,如果數(shù)據(jù)源為外部文件,就無法使用SQL語句進(jìn)行數(shù)據(jù)清洗工作了,只能直接從數(shù)據(jù)源中抽取出來,然后在數(shù)據(jù)轉(zhuǎn)換的時候進(jìn)行數(shù)據(jù)清洗的工作。因此,數(shù)據(jù)倉庫中的數(shù)據(jù)清洗工作主要還是在數(shù)據(jù)轉(zhuǎn)換的時候進(jìn)行。清洗好的數(shù)據(jù)將保存到目標(biāo)數(shù)據(jù)庫中,用于后續(xù)的數(shù)據(jù)分析、數(shù)據(jù)挖掘以及商業(yè)智能。
猜你喜歡: