概述
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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!