摘要:數據倉庫建設是一項巨大的工程,數據處理又是其中至關重要的一個環節。本文從數據處理過程中數據收集、數據清洗、數據轉換和數據質量評估幾方面說明數據處理過程中常出現的問題及其解決方法。系統已在銀行業務中予以實現。
關鍵詞:數據倉庫;數據處理;數據清洗和轉換
中圖分類號:TP399文獻標識碼:B文章編號:1009-3044(2008)36-2566-02
The Technology Research on Data Processing in Data Warehouse Developing
YU Xiao-ping, LIU Li-ya, XIAO Jing
(Collage of Computer Science and Technology, Shihezi University, Shihezi 832003, China)
Abstract: Building a data warehouse is a huge project and data processing is a important step in it. The article interpret the occurred problems and its resolve methods from some aspects such as data collection、data cleaning、data transformation and data quality check in data processing. The system has been realized in bank business.
Key words: data warehouse; data processing; data cleaning and transformation
1 引言
在當今快節奏的、以信息為基礎的經濟社會中,企業必須整合大量不同的異構數據源來支持其戰略決策,比如商業智能或企業績效管理。總體數據管理、數據倉庫和數據集市是實施這種戰略的基礎。建立一個企業級的數據倉庫(data warehouse)是一項巨大的工程,其中數據處理又占據其中50%-70%的工作量。數據處理包含很多方面:一是從多種數據源綜合數據倉庫所需要的數據,保證數據的綜合性、易用性、數據的質量和數據的時效性;另一方面就是如何從現有數據中衍生出所需要的指標。
數據的抽取(Extract)、轉換(Transform)和加載(Load)即ETL實施是數據處理的主要手段。ETL功能改造了源系統中的相關數據,將它們變成有用的信息存儲在數據倉庫中,是提供數據倉庫信息內容的前期工作。如果沒有對源數據進行正確的抽取、清洗和用正確的格式進行整合,作為數據倉庫中樞功能的查詢處理,就不能進行。
2 數據倉庫概述
2.1 數據倉庫的基本概念
數據倉庫(data warehouse)經過數十年的發展,人們對它的認識也逐步深入。數據倉庫的創始人W.H.Inmon給數據倉庫的定義是:數據倉庫是一個面向主題的、集成的、非易失的,隨時間變化的用來支持管理人員決策的數據集合。從數據倉庫的功能角度來看,將其定義為:數據倉庫是指企業中可查詢的數據源;數據倉庫是一種信息環境。根據數據倉庫的應用,數據倉庫可以分為:
數據倉庫將分散的日常操作數據加工處理、集成、綜合后,形成歸納總結數據乃至專業分析數據,從而成為歷史性詳細數據。
2.2 數據倉庫建設中的關鍵問題
數據倉庫的結構如圖1所示。
數據倉庫從多種數據源中提取數據,經過數據抽取、清洗、轉換等過程加載到數據倉庫系統中輸出供企業中各種不同層次的人員使用:普通用戶,使用查詢和報表功能;高級用戶,使用多維展現的在線分析功能( OLAP);專家級用戶,使用數據挖掘功能做決策分析。
數據倉庫中的數據源來自于多個數據庫子系統。這些數據庫子系統是面向不同應用建立的,彼此獨立。由于各種原因如數據輸入錯誤、不同來源數據引起的不同表示方法、數據間的不一致、數據的不完整、NULL值等導致數據倉庫中的數據不可避免地在數據的名稱、類型、描述、關聯、取值等方面出現問題,從而扭曲其獲得的信息,影響信息系統的運行效果,也為企業建立數據倉庫、建立決策支持系統、應用商務智能化帶來隱患。因此數據處理就成為數據倉庫建設中的關鍵。
3 數據處理的步驟
3.1 數據獲取
根據數據倉庫的主題確定哪些關聯數據源是分析的對象,這些數據源不僅包含企業中業務數據庫系統中的數據,還包括來自企業外部的數據,比如同業其他單位的信息、監管部門的信息、統計數據等。把這些數據源按照業務處理系統、業務管理系統、外部資源等等分類,同時也按照數據倉庫的主題進行分類,確定外部數據的實體、關系和屬性,形成數據采集文檔,構成數據倉庫系統的原始數據集。
3.2 數據清洗

圖1數據倉庫的體系結構
3.2.1 數據清洗原因
數據清洗主要是針對系統的各個環節可能出現的數據二義性、重復、不完整、違反業務規則等問題,通過試抽取,將有問題的記錄先剔除出來,根據實際情況調整相應的清洗操作。主要問題如下
1)數據不完整:需提取字段的屬性缺值,或者只含有不可用的聚合數值;
2)數據不一致:字段編碼或名稱不一致,比如,定期存款表、活期存款表、內部賬、貸款表中對賬戶狀態的定義各不相同,數據匯總的時候就會出錯;再比如,age=‘42’,而birthday = 03/07/1997;
3)數據冗余:所謂冗余信息,就是指不同關系表中存在的同一含義的字段,而同一含義不僅指這些字段的取得或計算方式一樣,還指它們成立的條件一樣,例如截止某一時間同一地區的同一貸種的貸款余額。在OLTP系統中,這樣的字段往往是基于性能考慮而設計的,而在面向分析設計模型時,為了保證結果的唯一性和準確性,就必須用且只用其中之一的數據產生分析結果;
4)其他錯誤:比如2005/05/09銷戶的賬戶,2005/05/15居然又發生一筆交易,2005/04/30日的數據記錄中有2005/05開戶的數據記錄,這種錯誤會給數據統計帶來麻煩。
3.2.2數據清洗原則
1)不完整數據清洗:首先檢測出數據源中的不完整數據(主要是看數據倉庫開發中感興趣的字段值是否丟失或為缺省值),然后判斷數據的可用性,根據一條記錄的不完整程度和其他因素來決定這條記錄是保留還是刪除。最后推斷丟失屬性的值,人工補上或用自動的方法用常量或平均值或最可能的值補上;
2)改正不一致的數據,統一不同數據源或不同數據庫表中的同一個實體;
3)由于多個數據源的整合而產生的冗余數據可以在數據轉換階段解決;
4)出現在數據倉庫維中的字段以維表屬性為依據清洗。
3.3 數據轉換
數據轉換包括數據格式轉換、數據類型轉換、數據匯總計算、數據拼接等等,也是保證數據準確性的重要一環。
3.3.1 數據轉換的原則
1)建立源數據和目標數據的映射關系;
2)建立數據提取規則參數表,確定提取的源表;
3)制定數據抽取的方式:全量數據抽取還是增量數據抽取;
3.3.2 數據轉換注意事項
1)數據倉庫系統中各字段最好重新命名,體現數據的一致性。比如日期問題,不同的含義就要起不同的名稱,如狀態變動日期、余額變動日期等;
2)數據轉換過程本質上就是數據映射過程。正確的取數建立在對業務數據庫系統設計的準確理解及對企業業務的清晰了解基礎上。
比如數據倉庫中有“貸款余額”字段,貸款業務數據庫中“貸款本金信息表”,“本金異動表”和“放款主表”中都有“貸款余額”字段,究竟從哪個表中取值?如果這幾張表中這個字段的含義是相同的,那么取哪個都不會出錯。實際情況中往往是不同的。“貸款本金信息表”是每賬戶一筆紀錄,只保存最新的余額值;“本金異動表”是每賬戶每變動日期每變動時間一條記錄,保留變動的歷史軌跡;“放款主表”中也是每賬戶一條記錄,但是信息很多,數據量巨大,掃描一遍的時間長。究竟從哪個表中取數要看數據倉庫設計中此字段的具體含義;
另外,若某個字段值可以從業務系統的多個數據庫表中提取,那么提取的規則是看這幾張表中哪個表的數據記錄是最完備的就從中提取。比如存款業務的主檔表包含所有的存款賬戶,而明細檔表只包含發生交易的賬戶,也許有賬戶長期以來就沒有交易,統計賬戶數量或者賬戶余額時從主檔表中取出的數據才是齊全的。操作時可以根據業務源系統的類別及數據庫表之間的關系選定一個取數的優先級。
總之,當數據倉庫中同一表中的數據來自于源系統中不同的表,甚至不同的庫時,抽取時務必保證這些數據單位一致,而且都滿足同一時間條件。
3)數據倉庫中有些字段的值是由源系統綜合后得到的。比如:定期存款科目 = 存款種類+存期;貸款科目=貸款種類+賬戶狀態等;
4)數據量不大就采用全量數據抽取方式以簡化數據處理過程。否則就采用增量數據抽取方式。
數據轉換成功執行的前提條件是對操作型業務數據庫系統的充分理解。
3.4 數據質量評估
1)數據量評估:確定數據量,包括歷史數據和增量數據的數據量;
2)數據完整性評估:驗證數據庫實體的每個屬性都有明確的值,不存在“空”或“未知”的屬性;
3)數據準確性評估:數據庫中的實體應和現實世界中的實體一致,找出造成差異的原因和設計改進的方法,使數據的準確性達到允許的范圍之內;
4)數據有效性評估:根據業務系統中規則,評估系統中非法數據的數量和情況,并設計改進的方法;
以上對數據的評估需要在數據源和數據倉庫兩方面進行并寫出數據源評估的報告和數據倉庫數據評估的報告。各個階段形成的文檔資料構成數據倉庫元數據的一部分。
4 結束語
結合實際項目,總結概括了數據倉庫建設中數據處理的幾個方面。對企業的信息化建設具有積極的指導意義。
參考文獻:
[1] Kimball R.數據倉庫工具箱:維度建模的完全指南[M].2版.北京:電子工業出版社,2003.
[2] Inmon W H.數據倉庫[M].北京:機械工業出版社,2003.
[3] Fan W G, Lu H J, Stuart E, et al. Discovering and reconciling value conflicts for numerical data integration[J]. Information Systems,2001(26):635-656.
[4] 楊俊生.數據驅動方式下的數據源分析[J].中國金融電腦,2004,(5):41-43.
[5] 陳偉,丁秋林.數據清理中不完整數據的清理方法[J].微型機與應用,2005(2):44-45.
[6] 余曉平,甕正科.銀行數據倉庫的系統設計與實現[J].微計算機信息,2006,22(10-3):153-155.