1 ETL基本概念和術語
1.1 ETL
Extract-Transform-Load的縮寫,數據抽取(Extract)、轉換(Transform)、裝載(Load)的過程。
1.2 DW
DataWarehousing,根據Bill.Inmon的定義,“數據倉庫是面向主題的、集成的、穩定的、隨時間變化的,主要用於決策支持的數據庫系統”。
1.3 MetaData
元數據,就是描述數據的數據,指在數據倉庫建設過程中所產生的有關數據源定義、目標定義、轉換規則等相關的關鍵數據。
1.4 ETL在數據倉庫中的位置
1.5 數據質量
- 正確性(Accuracy):數據是否正確體現在現實或可證實的來源
- 完整性(Integrity):數據之間的參照完整性是否存在或一致
- 致性(Consistency):數據是否被一致的定義或理解
- 完備性(Completeness):所有需要的數據是否都存在
- 有效性(Validity):數據是否在企業定義的可接受的範圍之內
- 時效性(Timeliness):數據在需要的時間是否有效
- 可獲取性(Accessbility):數據是否易於獲取、易於理解和易於使用
1.6 數據質量原因
- 業務系統不同時期數據模型不一致
- 業務系統不同時期業務過程有變化
- 各個源系統之間相關信息不一致
- 遺留系統和新業務、管理系統數據集成不完備帶來的不一致性
- 源系統缺少輸入驗證過程,不能阻止非法格式的數據進入系統
- 可以驗證但不能改正數據,驗證程序不能發現格式正確但內容不正確的錯誤
- 源系統不受控制的更改,而這種更改不能及時的傳播到受影響的系統
- 數據由多個交叉的訪問界面,難以統一管理數據質量問題
- 缺少參照完整性檢查低劣的源系統設計
- 數據轉換錯誤,比如ETL過程錯誤或數據遷移過程的錯誤
- 源系統與數據倉庫系統的數據組織方式完全不同
1.7 數據轉換
- 空值處理
- 規範化數據格式
- 拆分數據
- 驗證數據合法性
- 數據替換
- 實現數據規則過濾
- 數據排序
- 數據類型統一轉換
2 邏輯架構圖
2.1 Extract
- 設計原則
- 爲提高ETL效率,數據在進入ETL系統後的EXF文件都將轉換爲Flat Text文件格式
- 從ETL程序設計的靈活性和整體結構的一致性考慮,儘量採用Pull的方式,減少對源系統的影響和對其他開發隊伍的依賴,並減少網絡壓力
- 由於Batch Windows的限制,如果日源數據量大於5GB則必須考慮採用Push的方式以提高傳送速度,如,可以由源系統將數據轉換爲Flat Text文件後,由ETL程序採用FTP的方式進行傳送
- EXF的文件格式接近數據源的數據結構定義
- 在Extract過程中過濾數據倉庫不需要的數據記錄和字段
- Push和Pull
- Push
在源系統上根據定義的數據格式將每日增量數據生成數據文件,再通過FTP或文件拷貝的方式傳送給ETL程序處理。 - Pull
由ETL程序通過DRDA或ODBC等數據庫協議直接訪問源數據庫獲取所需數據進行處理。
- Push
2.2 數據轉換過程中產生的文件
- EXF (Extracted Format)
由數據源Extract產生的文件,文件結構與Source相似,經過過濾,部分字段被忽略。 - CIF (Common Interface Format)
CIF是ETL經過C/S/S過程產生的中間數據文件。 - PLF (Pre-Load Format)
經過數據轉換,用於直接加載到數據倉庫的文本文件,其數據結構與數據倉庫中的表定義一致。
3 數據處理流程圖
4 數據對照開發流程
- 收集整理所有數據源,定義源數據結構(與EXF相同)
- 根據物理模型設計定義數據倉庫數據(與PLF相同)結構
- 設計源數據表(文件)與數據倉庫數據表對應關係(Table Mapping),確定Pilot的數據源範圍
- 設計源數據字段與數據倉庫字段的數據對照
- 設計CIF的數據結構
- 設計源數據字段-EXF-CIF-PLF-數據倉庫數據字段的數據對照
參考:
http://blog.itpub.net/11423276/viewspace-979743/
http://wenku.baidu.com/link?url=6OCkGyP0-X6Qzu8JJnBwz05P6qc8Khs6yutAmNZM2WEQWZxVm658H7UL3wYk2L_Ub7eE8GjznVBu16IpRg_IiP75TMS9s49WhJiGudiVgXC