今天這篇文章,給大家講述一下數據倉庫的ETL基礎算法,作為我們一起探讨的内容。希望大家留言、評論,我們一起學習。
ETL定義:
是數據抽取(Extract)、轉換(Transform)、清洗(Cleansing)、裝載(Load)的過程。是構建數據倉庫的重要一環,用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,将數據加載到數據倉庫中去
一 ETL工具
首先我們來看下常用的ETL工具都有哪些,我說一下我用過的ETL工具,KITTLE,DataStage,Informatica,目前我接觸的有這三種,基本上都是基于圖形化開發的工具,簡單的拖拉拽就可以替代原先的SQL代碼,開發效率高,運行穩定,但是這種太不易于後期的維護和擴展,可讀性也不強。所以現在的銀行業大都慢慢地放棄了,現在都是基于大數據平台開發(A/O分離),然後通過ETL調度,編寫存儲過程實現數據流動。
二 ETL是數據倉庫的基礎
數據倉庫系統以事實發生數據為基礎,自産數據較少。一個企業往往包含多個業務系統,均可能成為數據倉庫的數據源。
三 ETL在BI架構中的定位
四 源數據概況
1
流水事件表:此類源表用于記錄交易等動作的發生,在源系統中會新增、大部分不會修改和删除,少量表存在删除情況。如定期存款登記簿;
常規狀态表:此類源表用于記錄數據信息的狀态。在源系統中會新增、修改,也存在删除的情況。如客戶信息表;
代碼參數表:此類源表用于記錄源系統中使用到的數據代碼和參數
2
數據文件大多數以1天為固定的周期從源系統加載到數據倉庫。數據文件包含增量,全量以及待删除的增量。
增量數據文件:數據文件的内容為數據表的增量信息,包含表内新增及修改的記錄。
全量數據文件:數據文件的内容為數據表的全量信息,包含表内的所有數據。
待删除的增量:數據文件的内容為數據表的增量信息,包含表内新增、修改及删除的記錄,通常删除的記錄以字段DEL_IND='D'标識該記錄。
五 ETL算法概述
1 ETL标準算法
曆史拉鍊:根據業務分析要求,對數據變化都要記錄,需要基于日期的連續曆史軌迹;
追加(事件表):根據業務分析要求,對數據變化都要記錄,不需要基于日期的連續曆史軌迹;
Upsert(主表):根據業務分析要求,對數據變化不需要都要記錄,當前數據對曆史數據有影響;
全删全加算法(參數表):根據業務分析要求,對數據變化不需要都要記錄,當前數據對曆史數據無影響;
2 ETL标準算法選擇
3 曆史拉鍊法
所謂拉鍊,就是記錄曆史,記錄一個事務從開始,一直到當前狀态的所有變化信息(參數新增開始結束日期)。
4 追加算法
一般用于事件表,事件之間相對獨立,不存在對曆史信息進行更新。
5 Upsert算法
是update和insert組合體,一般用于對曆史信息變化不需要進行跟蹤保留、隻需其最新狀态且數據量有一定規模的表,如客戶資料表。
6 全删全加算法
一般用于數據量不大的參數表,把曆史數據全部删除,然後重新全量加載。
算法的複雜度比較:
具體算法概述1:
0210算法
0211算法
0212算法
具體算法概述2
0610算法
0611算法
0612算法
0613算法
0614算法
0615算法
0616算法
0617算法
0618算法
0619算法
總結:
按照實際工作經驗來看,ETL算法常用的有:
曆史拉鍊 ----最常用,記錄事物變化
追加(事件表) ---根據業務需求
全删全加算法(參數表) --根據業務需求
可以根據實際需求選擇不同的算法。
好了,這篇文章就給大家寫到這裡了,希望大家留言、評論。我們一起探讨,學習。大家喜歡的,可以點個關注 ,我會不定期更新文章,将自己的經驗分享出來。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!