今天這篇文章,給大家講述一下數(shù)據(jù)倉(cāng)庫(kù)的ETL基礎(chǔ)算法,作為我們一起探討的內(nèi)容。希望大家留言、評(píng)論,我們一起學(xué)習(xí)。
ETL定義:
是數(shù)據(jù)抽取()、轉(zhuǎn)換()、清洗()、裝載(Load)的過(guò)程。是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要一環(huán)數(shù)據(jù)倉(cāng)庫(kù)有幾種etl算法,用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)倉(cāng)庫(kù)模型,將數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)中去
一 ETL工具
首先我們來(lái)看下常用的ETL工具都有哪些,我說(shuō)一下我用過(guò)的ETL工具,,,,目前我接觸的有這三種,基本上都是基于圖形化開(kāi)發(fā)的工具,簡(jiǎn)單的拖拉拽就可以替代原先的SQL代碼,開(kāi)發(fā)效率高,運(yùn)行穩(wěn)定,但是這種太不易于后期的維護(hù)和擴(kuò)展,可讀性也不強(qiáng)。所以現(xiàn)在的銀行業(yè)大都慢慢地放棄了,現(xiàn)在都是基于大數(shù)據(jù)平臺(tái)開(kāi)發(fā)(A/O分離),然后通過(guò)ETL調(diào)度,編寫(xiě)存儲(chǔ)過(guò)程實(shí)現(xiàn)數(shù)據(jù)流動(dòng)。
二 ETL是數(shù)據(jù)倉(cāng)庫(kù)的基礎(chǔ)
數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)以事實(shí)發(fā)生數(shù)據(jù)為基礎(chǔ),自產(chǎn)數(shù)據(jù)較少。一個(gè)企業(yè)往往包含多個(gè)業(yè)務(wù)系統(tǒng),均可能成為數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)源。
三 ETL在BI架構(gòu)中的定位
四 源數(shù)據(jù)概況
1
流水事件表:此類源表用于記錄交易等動(dòng)作的發(fā)生,在源系統(tǒng)中會(huì)新增、大部分不會(huì)修改和刪除,少量表存在刪除情況。如定期存款登記簿;
常規(guī)狀態(tài)表:此類源表用于記錄數(shù)據(jù)信息的狀態(tài)。在源系統(tǒng)中會(huì)新增、修改,也存在刪除的情況。如客戶信息表;
代碼參數(shù)表:此類源表用于記錄源系統(tǒng)中使用到的數(shù)據(jù)代碼和參數(shù)
2
數(shù)據(jù)文件大多數(shù)以1天為固定的周期從源系統(tǒng)加載到數(shù)據(jù)倉(cāng)庫(kù)。數(shù)據(jù)文件包含增量,全量以及待刪除的增量。
增量數(shù)據(jù)文件:數(shù)據(jù)文件的內(nèi)容為數(shù)據(jù)表的增量信息,包含表內(nèi)新增及修改的記錄。
全量數(shù)據(jù)文件:數(shù)據(jù)文件的內(nèi)容為數(shù)據(jù)表的全量信息,包含表內(nèi)的所有數(shù)據(jù)。
待刪除的增量:數(shù)據(jù)文件的內(nèi)容為數(shù)據(jù)表的增量信息,包含表內(nèi)新增、修改及刪除的記錄,通常刪除的記錄以字段='D'標(biāo)識(shí)該記錄。
五 ETL算法概述
1 ETL標(biāo)準(zhǔn)算法
歷史拉鏈:根據(jù)業(yè)務(wù)分析要求,對(duì)數(shù)據(jù)變化都要記錄,需要基于日期的連續(xù)歷史軌跡;
追加(事件表):根據(jù)業(yè)務(wù)分析要求,對(duì)數(shù)據(jù)變化都要記錄,不需要基于日期的連續(xù)歷史軌跡;
(主表):根據(jù)業(yè)務(wù)分析要求,對(duì)數(shù)據(jù)變化不需要都要記錄,當(dāng)前數(shù)據(jù)對(duì)歷史數(shù)據(jù)有影響;
全刪全加算法(參數(shù)表):根據(jù)業(yè)務(wù)分析要求,對(duì)數(shù)據(jù)變化不需要都要記錄,當(dāng)前數(shù)據(jù)對(duì)歷史數(shù)據(jù)無(wú)影響;
2 ETL標(biāo)準(zhǔn)算法選擇
3 歷史拉鏈法
所謂拉鏈數(shù)據(jù)倉(cāng)庫(kù)有幾種etl算法,就是記錄歷史,記錄一個(gè)事務(wù)從開(kāi)始,一直到當(dāng)前狀態(tài)的所有變化信息(參數(shù)新增開(kāi)始結(jié)束日期)。
4 追加算法
一般用于事件表,事件之間相對(duì)獨(dú)立,不存在對(duì)歷史信息進(jìn)行更新。
5 算法
是和組合體,一般用于對(duì)歷史信息變化不需要進(jìn)行跟蹤保留、只需其最新?tīng)顟B(tài)且數(shù)據(jù)量有一定規(guī)模的表,如客戶資料表。
6 全刪全加算法
一般用于數(shù)據(jù)量不大的參數(shù)表,把歷史數(shù)據(jù)全部刪除,然后重新全量加載。
算法的復(fù)雜度比較:
具體算法概述1:
0210算法
0211算法
0212算法
具體算法概述2
0610算法
0611算法
0612算法
0613算法
0614算法
0615算法
0616算法
0617算法
0618算法
0619算法
總結(jié):
按照實(shí)際工作經(jīng)驗(yàn)來(lái)看,ETL算法常用的有:
歷史拉鏈 ----最常用,記錄事物變化
追加(事件表) ---根據(jù)業(yè)務(wù)需求
全刪全加算法(參數(shù)表) --根據(jù)業(yè)務(wù)需求
可以根據(jù)實(shí)際需求選擇不同的算法。