《數據倉庫ETL工具箱》讀書筆記
數據倉庫是一個將源系統數據抽取、清洗、規格化、提交到維度數據存儲的系統,為決策的制定提供查詢和分析功能的支撐與實現。
數據倉庫的總體目標是,以簡單的、可操作的格式將數據提交給最終用戶和分析應用系統。
對於數據倉庫項目來說,自動ETL處理顯然是需要的,但是如何做呢?表加載的順序和依賴關系是加載數據倉庫成功的關鍵因素。
幾個常用關鍵字:
數據倉庫(Data Warehouse)
數據集市(Data Mart)
操作型數據存儲(ODS, Operational Data Store)
企業數據倉庫(EDW, Enterprise Data Warehouse)
集結區(Staging Area)
展現區(Presentation area)
每個ETL系統都必須將數據集結為各種永久性的或準永久性的格式。當我們提到“集結(Staging)”時,意味著寫數據到磁盤,也正是由於這個原因,ETL系統有時稱為集結區(staging area)。你可能註意到我們建議在每一格ETL主要步驟(抽取、清洗、規格化和提交)後都有幾種形式的集結。
清洗的意思是確認和修復數據中的錯誤和缺失。規格化的意思是解決潛在不一致的數據間的標記(Labeling)沖突,以便它們能夠在企業數據倉庫中一起使用。
1 介紹
抽取-轉換-加載(Extract-Transform-Load)系統是數據倉庫的基礎。一個設計良好的ETL系統從源系統抽取數據,執行數據質量和一致性標準,然後規格化數據,從而使分散的源數據可以集中在一起使用,最終再以可以展現的格式提交數據,以便應用開發者可以創建應用系統,也使最終用戶可以制定決策。ETL能夠:
- 消除數據錯誤並糾正缺失數據
- 提供對於數據可信度的文檔化衡量
- 為保護數據獲取相互作用的數據流程
- 把多個源數據整合到一起
- 將數據進行結構化供最終用戶使用
ETL的規劃和設計主線:
數據流主線:
2
需求、現狀和架構
2.1
需求可以分為:
業務需求、合規需求、數據評估、安全需求、數據集成、數據延遲、數據歸檔和數據線性化、最終用戶提交界面、可用的技能、已有的許可證。
一切圍繞需求
業務需求是數據倉庫最終用戶的信息需求。我們使用業務需求這個術語來狹義地表示最終用戶作出決策所需的信息內容。
業務需求直接決定了數據源的選擇。ETL小組的核心工作就是不斷地理解和檢驗業務需求。
從更廣泛的意義上講,業務需求和數據源的內容都是不斷變化的,需要不斷地進行檢驗和討論。
2.2架構需要考慮:
選用ETL工具還是編碼?
數據倉庫的前臺和後臺:
2.3 數據倉庫的任務:
數據倉庫的任務是發布企業的數據資產,用於支持更加有效的決策制定。該任務描述中的關鍵詞是發布。正如傳統的雜誌發行,其成功的起點和終點是讀者,數據倉庫成功的起點和終點是其最終用戶。由於數據倉庫是一個決策支持系統,因此主要的成功標準是數據倉庫是否為企業的最重要的決策制定過程提供了幫助。
數據倉庫的吸引人之處就在於它具有真正集成的數據,同時也讓用戶從他們的角度查看維度。一致的維度和事實是企業數據倉庫的基石。
3 ETL數據結構
數據倉庫的後臺部分經常被稱為集結區(Staging Area)。在這裏的上下文中,數據的集結過程指的是寫入磁盤,並且我們建議在ETL數據流的四個主要檢查點都要有數據集結。ETL小組需要不同的數據結構來滿足不同的數據集結需求。
ETL系統中可能使用的幾種重要數據結構類型:
平面文件
XML數據集
關系表
獨立的DBMS工作表
三範式實體/關系模型
非關系數據源
維度數據模型:從後臺提交到前臺的成果
事實表
維表
原子事實表和聚合事實表
代理鍵映射表
4 抽取
確認抽取是非常有價值的部分!可以通過一個數據評估工具來決定做或不做這一工作,工具將告訴你是否數據質量滿足了業務目標。下一個大的步驟是準備連接到初始源數據到最終數據的邏輯數據映射。也許邏輯數據映射最重要的部分是應用在輸入和輸出之間的轉換規則描述。當實際執行ETL系統時將會發生一些變化,因此應該經常檢查並定期更新邏輯數據映射。如果維護的好,它可能是ETL系統中最有價值的描述。
只導出新數據、變化的數據甚至是已經刪除的數據的方法。
5 清洗和規範化
清洗和規範化在ETL系統中是最富價值的的步驟。
建立三份重要的可提交內容:數據評估報告(data-profiling report),錯誤事件事實表(error event fact table),審計維(audit dimension)。圍繞著這三份提交內容,你可以建立一個功能強大的清洗和規範化系統。
數據清洗和規範化的目標在於減少數據中的錯誤,提高數據的質量和可用性,並標準化整個企業共享的關鍵描述屬性和量化度量。
數據質量技巧涵蓋了從數據庫級別校驗單個字段的定義檢查(列屬性約束),到校查字段到字段之間的一致性(結構約束),再到數據的特定業務規則的檢查(數據和值規則約束)。數據質量處理的最後階段(規範化和去重復)也就實現了,在這一階段解決跨越多個數據源的數據差異問題。
6提交維表
維表提供了事實表的上下文。雖然維表通常比事實表小得多,但它卻是數據倉庫的核心,因為它提供了查看數據的入口。我們經常說建立數據倉庫其實就是建立維度。因此ETL團隊在提交階段的主要任務就是處理維表和事實表,將最有效的應用方式提交給最終用戶。
7提交事實表
事實表裝有企業的度量數據。事實表與度量的關系非常簡單。如果存在一個度量,則它可以被模型化為事實表的行。如果事實表的行存在,則它就是一個度量。那麽什麽是度量呢?一個關於度量通用的定義是:通過工具或比例等級可以測量觀察的數量值。
在維度建模時,我們有意識地圍繞企業的數字度量創建我們的數據庫。事實表包含度量,維表包含關於度量的上下文。這種關於事物的簡單視圖被一次又一次的證明是最終用戶直觀理解我們的數據倉庫的方式。
事實表可以歸入三種基礎類型。我們強烈推薦在每次設計的時候堅持使用這三種簡單的類型。
這三種事實表類型是:交易粒度,周期快照和聚合快照。
交易粒度表示的是在特定時間、空間點上的一次瞬間的測量。典型的例子是零售交易。
周期快照事實表表現的是一個時間段,或者規律性的重復。這類表非常適合跟蹤長期的過程,例如銀行賬戶和其他形式的財務報表。
聚合快照事實表用於描述那些有明確開始和結束的過程,例如合同履行,保單受理以及常見的工作流。聚合快照不適合長期連續的處理,如跟蹤銀行賬戶或者描述連續的生產制造過程,如造紙。
一些繼續學習的資料:
- 《數據倉庫(第四版)》
- 《數據倉庫工具箱:維度建模權威指南》,作者Ralph Kimball and Margy Ross,Wiley出版社
- 《數據倉庫工具箱:建立基於web的數據倉庫》,作者Ralph Kimball and Richard Merz ,Wiley出版社2000年
- 點擊流數據倉庫的更多信息請參考一本優秀的圖書《Clickstream Data Warehousing》,作者是Mark Sweiger, Mark R. Madsen, Jimmy Langston, and Howard Lombard,Wiley出版社2002年出版。
目標數據倉庫優化:
Gary Dodge和Tim Gorman寫的<<Essential Oracle8i Data Warehousing:Designing,Building,and Maintaining Oracle Data Warehuses>>一書。
參考資料:
http://blog.sina.com.cn/s/blog_7836e7a30100vzml.html
《數據倉庫ETL工具箱》讀書筆記