【大數據】數據倉庫之模型層和ETL介紹

概述


ETL是數據倉庫的後臺,主要包含抽取、清洗、規範化、提交四個步驟,傳統數據倉庫一般分爲四層模型。 

                         

分層的作用 

  

                                                                    

STG層


 在維度建模階段已經確定了源系統,而且對源系統進行了數據評估。STG層是根據CDC策略把各個源系統的數據抽取到數據倉庫中。STG層主要是面向批處理的形式,如果是根據日誌信息實時同步,可以跳過STG層直接進入ODS層。

STG的作用 
 

 

開發步驟 
確定CDC策略,根據源系統的數據狀況選擇一個合適的CDC策略。
設計Mapping文檔。
設計物理模型,STG的物理模型一般包括源系統的所有字段和審計字段,例如:源系統名稱,源表名稱,加載時間,加載方式。可以去掉其他約束條件,比如主鍵、索引,默認值。如果源表和目標表的數據庫類型不同,最好字段長度要進行擴充,一般目標表的數據類型就選擇幾種常用,長度就選擇幾個固定的長度。
抽取數據,STG層面向異構數據源,最好選擇用ETL工具,一般ETL工具都支持多種數據源。STG層不做數據轉換。
加載數據,STG層一般保留7天或一月的數據。


 ODS層


ODS層是把STG層數據進行歷史存檔,保留源系統的所有歷史數據,如果是流式的,可以跳過STG層,實時同步到ODS層。 

ODS層的作用 

                                                 

開發步驟 
設計Mapping文檔。
設計物理模型,ODS的物理模型一般包括源系統的所有字段和審計字段,但是和源系統最主要的區別是ODS層加了邏輯刪除標記和增量時間戳。因爲很多源系統都可能進行物理刪除數據,即使有邏輯刪除標記,但是也可以在後臺人工刪除數據。
抽取數據,ODS層從STG層抽取數據,在同一個數據平臺上,可以採用ETL工具,也可以手工編碼。
加載數據,進行數據比較,判斷是否有物理刪除情況,如果有打上刪除標記。ODS層保留全量數據。


DW層


DW層是清洗、規範化,提交一致化維度和事實的工作區,建立反規範化的維度模型。 

數據清洗


 數據清洗是發現數據質量問題並糾正數據的過程,通用的方法是戴明質量環

  

                                                           

主要步驟                                          
1.定義數據質量需求,根據業務需求和數據剖析結果確定數據質量需求的優先級。

2.制定數據質量測量類型

3.提交數據質量測量結果表,通常異常數據處理策略有 

 

                              

4.糾正數據

                                                                  

 

規範化
由於數據倉庫的數據來源各個業務系統,每個業務系統相對都是封閉的,他們在命名、取值上都有自己的特點。規範化就是經過標準化、去重、合併、拆分、整合等過程把各個業務系統的數據統一命名,統一取值,建立企業標準版本數據。 

主要步驟 
1.數據標準化

從數據的內容、格式、命名、計算規則等輸出爲唯一的版本數據,把各個源系統的相同描述對象但是不同取值進行統一,比如:性別字段,有的源系統用0和1或Man和Wonen。通過映射表統一命名爲M和F。

2.刪除重複數據

如果源系統中存在重複數據或者多個源系統維護了相同對象的數據,這時候就要根據保留規則,刪除重複數據,只保留唯一的一條數據。

3.數據共存

把各個業務系統的數據經過拆分、合併、整合。例如相同的客戶號,二個源系統都維護了這個客戶的聯繫方式,這時候就要根據業務規則來選擇保留哪那個源系統的值。 

提交維度表和事實表
 

提交維度表主要步驟 
1.確認粒度

維度表的粒度就是表的業務主鍵,根據業務主鍵來判斷記錄的唯一性。

2.選擇代理鍵生成器

ETL工具和數據庫都有設置字段自增長的功能。

3.選擇維度表類型

根據業務系統的實際情況選擇合適的維度表類型,一般採用緩慢變化維類型1和類型2。

4.增量加載維度數據

維度表的每個字段都要設置默認值,不能爲空。首次加載的時候要有一條代理鍵爲-1的默認記錄,爲了防止事實表查找不到代理鍵。

緩慢變化維處理流程


5.生成代理鍵管道

爲了生成事實表的維度代理鍵,一般會建一個查找維表,查找維表包含業務主鍵和代理鍵的映射關係。 

提交事實表主要步驟 
1.選擇事實表類型 

根據業務需求選擇合適的事實表類型,一般會先建最細粒度的事務事實表,根據事務事實表建週期快照或累積事實表。

2.用代理鍵替換主鍵

根據事實表中維表的業務主鍵關聯查找維表替換成代理鍵,如果關聯不上設置爲-1。

 3.增量加載事實數據

事實表的每個字段不能爲空,事實表主要包含事實粒度的業務主鍵、維表業務主鍵、維表代理鍵、源表的主鍵、邏輯刪除標識和事實。便於重新加載事實表和問題跟蹤。由於事實表的數據量大,一般採用分區的方式進行存儲。

4.提交錯誤事實表

把加載事實表的拒絕記錄存儲在錯誤事實表中,以便進行數據質量跟蹤。

5.事實表合併

一級事實表都是根據單個業務過程建立的,爲了便於分析和重用,需要把多個業務過程的事實表進行合併,形成二級事實表。

6.事實表歸檔

隨着時間的推移,事實表中會存放大量的歷史數據,如果這些數據很少再出現在統計分析中,需要把這些數據遷移到其他表中或以文件格式存儲。

 維度和事實數據修正
1. 糾正事實

消除事實,新增一條和原紀錄的度量乘以-1的值,這樣就能消除原紀錄的彙總帶來的影響。

更新事實,直接在原紀錄上更新。

刪除事實,刪除事實包含物理刪除和邏輯刪除,一般採用邏輯刪除。

2.優化和更正事實表主要有

在事實表中新增事實,歷史數據設置爲默認值。

在事實表中新增維度,歷史數據設置爲-1。

維度表中新增屬性,歷史數據爲默認值。

修改維表和事實表的粒度大小。

3.處理延遲的事實

如果業務系統出現補錄的事務數據,這時候就要根據維度表中的開始日期和結束日期選擇合適的代理鍵。

4.維度重建

如果需要維度表重新加載,就要重新生成查找維表和更新事實表的代理鍵,因爲事實表已經存儲了維表的業務主鍵,可以根據查找維表生成代理鍵。

DM層


DM層根據業務需求把DW層數據進行聚合或生成寬表。 

1.創建聚合事實表 

前臺展現的數據一般都是聚合後的數據,聚合後的數據量比最細粒度的事實表小很多,查詢性也有很大的提升。

創建聚合表的方法 

1.增量加載,創建聚合表,增量加載聚合表。

2.聚合導航,用戶通過報表分析工具,根據用戶請求把基礎事實表自動生成聚合數據。

 3.物化視圖,創建物化視圖定時刷新聚合表。

 2.創建縮小維度表

由於聚合事實表的粒度和基礎事實表粒度不同,需要創建和聚合表相同粒度的維度表,這些維度表只是基礎維度表的縮小版。

ETL優化


 1.減少磁盤I/O

 關聯查詢的時候,儘可能把無效的數據過濾掉

只查出需要的列

大數據量儘量不要有排序

在加載數據時關閉日誌

 2.分區和並行

大數據量可以進行分區

查詢和任務調度都可以進行並行處理

 3.增量加載

 4.增加索引

5.大而化小,複雜的查詢可以分成多個子任務來執行。

6.重用結果集,把多個查詢任務的共用數據可以單獨建臨時表。
--------------------- 
作者:mark_wu2000 
來源:CSDN 
原文:https://blog.csdn.net/mark_wu2000/article/details/82730049 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章