摘 要: 設計了一個具有良好的可擴展性、通用性、友好的JSP操作界面和統一的元數據管理等特點的數據ETL系統。結合實例介紹了此系統在石化企業中的應用。
關鍵詞: 數據倉庫 數據挖掘 ETL JSP界面 元數據
數據ETL是一個來源于數據倉庫的概念,指數據抽取(Extraction)、轉換(Transformation)、清洗(Cleaning)、裝載(Loading)的過程,是構建數據倉庫的重要環節[1]。它從運作資源中抽取數據并按照一定的要求將數據進行轉換和清洗,最后將高質量的數據裝載到數據倉庫或數據集市中,為更高層次的應用提供決策分析。不同的運用領域,數據ETL有著不同的內涵。因此通用的集成清洗方案受到了越來越多的重視。數據ETL在數據清洗工具的通用化、高效化和智能化上還有很多發展空間。
本文在開發某石油天然氣公司的決策支持系統和遠程監控數據挖掘分析系統的基礎上,針對數據倉庫和數據挖掘,設計并實現了一套通用的、可擴展的、具有可視化交互界面的ETL系統。
1 數據ETL工具通用框架
1.1 設計思想
一個好的ETL系統應該能適應各種操作平臺,支持更多的數據源。一般企業都會面對并處理來自各種系統的數據源。現存的操作數據又存在很多質量問題,如:濫用縮寫詞和慣用語、數據輸入錯誤、重復記錄、缺損值、不同的計量單位和過時的編碼等等。因此,異構多數據源的集成和數據清洗將是數據ETL所面臨的兩大問題。
某流程型企業的數據源分布和數據集成過程如圖1所示。其中異構數據源包括實時數據庫(Infoplus)、PMIS數據庫。生產實時數據來源于實時數據庫系統采集DCS上的現場數據。銷售管理數據來源于包含IFS的設備模塊、OA系統、生產管理系統、安全環保系統等整個企業的管理層應用系統(PMIS)。另外,一部分歷史數據可能會以純文本的形式存放,同時,決策分析所用的一部分中間數據存放在Oracle數據庫中。隨著生產網絡化的日益發展,大量的數據也會以XML的形式存放。
因此,ETL系統應該對以上各種數據源類型都能有很好的支持。
一般的數據ETL工具較多針對數據倉庫,但這類ETL工具在其他領域中的應用往往不夠靈活。為了實現ETL系統的通用型和實用性,需要在系統框架上進行更靈活的設計,使之既能針對數據倉庫實現數據的轉化,又能針對數據挖掘解決數據預處理方面工作。
同時,為了更好地管理和維護ETL系統,也需要有完善的元數據對系統的支持。元數據能對整個系統,包括數據抽取任務、數據ETL類庫等進行統一的管理和維護,并溝通用戶與系統之間的交流。
1.2 ETL框架及模塊說明
針對上述設計思想,本文設計了一個ETL通用框架,如圖2所示。現將其各部分功能詳述如下:
(1)數據抽取。通用數據接口能夠跨平臺跨網絡訪問數據,支持不同類型數據源間建立連接,通過它可以屏蔽各種數據源之間的差異,為后序工作提供一個統一的數據視圖。目前已有多種可選的通用數據訪問接口,如ODBC、OLEDB、JDBC等,其中JDBC支持跨平臺訪問及網絡訪問數據。考慮到實際情況,本文采用JDBC和ODBC相結合的技術,使用SQL、PL/SQL和JAVA的完整功能,對外部數據源進行訪問。
數據抽取通過通用數據訪問接口訪問各種異構數據源,并將數據抽取成統一格式的標準數據集。標準數據集的設計是為了實現數據標準化,從而進一步實現ETL系統的通用性和可擴展性。
(2)標準數據集。標準數據集是作為系統內部交換的一種統一的數據結構。有了標準數據集,ETL系統就更易于擴展。所有抽取出來的數據在系統內部都表示成這種統一的數據結構,而所有數據轉換數據清洗算法的輸入輸出數據都按這種數據結構形式來組織。
圖3中InputData類是本ETL系統的標準數據集結構。Item類表示項,其中itemName指項名,itemValue表示項的值,是一個ArrayList格式的數組。InputData類與Item類屬于面向對象中的依賴關系。InputData類中,name屬性是數據集的名字,owner屬性是數據集的用戶,createDate是數據集的創建時間,items是數據集的項,是由若干Item對象組成的一個HashMap。從中不難看出,Item對象對應于數據表中的一列,而InputData對象對應于由若干項組成的一個數據表。
有了這樣的標準數據集結構,當需要擴展更多的數據轉換、清洗、裝載類的時候,只要這些類能滿足標準數據集接口,就能夠無縫地擴展到ETL系統之中。
(3)數據預處理、數據集成和數據歸約。這是ETL系統的核心部分,是數據轉換和數據清洗的過程。
數據預處理負責對抽取到的數據進行初步的清洗,解決一些數據的簡單變換問題,如數據類型轉換、日期時間格式轉換、字段解碼、數據缺失值的簡單處理等,也為后面的數據復雜轉換和數據集成做準備工作。
經過數據抽取后可以得到多個模式和多個實例數據集。然而數據倉庫和數據挖掘需要的是集成的、語義一致的數據。因此必須將多模式與數據集進行統一映射,轉換為單一的結果集。這就是數據集成的過程。在此過程中,首先應該將各種不同的數據進行元素化,得到格式統一的數據結構;繼而進行數據標準化,消除不一致的縮寫、簡寫等;然后進行數據的一致性校驗,在內容上修改各種錯誤。
經過數據集成后的數據集中還包含許多相似重復記錄,它將嚴重影響數據倉庫的語義一致性,因此必須消除。在數據規約過程中,首先針對數據集進行匹配,即發現重復異常,然后根據匹配結果進行處理,刪除部分記錄或者將多個記錄合并為一個更完整信息的記錄。
值得注意的是,數據轉換和數據清洗并不是孤立的,而是滲透在整個數據抽取、數據裝載甚至整個數據ETL過程中。
(4)數據裝載。數據裝載通過通用數據訪問接口將標準數據集裝載到目的數據庫中。
清洗后的數據結果集根據不同的需要,可以選擇裝載到數據倉庫中去,或者直接提供給數據挖掘做決策分析,或者存儲在中間數據庫中作為數據樣本集供日后數據分析所使用。
(5)ETL類管理。ETL類管理是數據ETL系統元數據管理的一部分。元數據管理將在下文中再做說明。
ETL類庫中包括了所有的數據抽取、數據轉換/數據清洗、數據裝載類,每一個類可以實現一定的功能。用戶就是通過調用ETL類庫中不同的數據抽取類、數據清洗類和數據裝載類來實現一次完整的ETL過程。
數據抽取類、清洗類和裝載類分別具有統一的接口。用戶可以根據數據抽取類接口、數據清洗類接口和數據裝載類接口來開發自己的數據ETL類,以實現更多的功能,并利用ETL類管理將新開發的類注冊到元數據庫中。
值得注意的是,在一次ETL過程中,可能需要多次數據清洗操作,每個數據清洗步驟之間可以通過數據清洗類的源數據(輸入)和目標數據(輸出)進行連接,即通過數據流進行彼此約束。
(6)流程控制與用戶可交互界面。一個好的ETL系統需要有友好的可視化工作界面。用戶通過可視化的工作界面,根據任務的需要和界面向導的提示,調用合適的ETL類,從而控制ETL工作流程,實現整個數據ETL工作過程。
2 ETL元數據管理
元數據是關于數據的數據,對于ETL來說尤其重要。ETL中大量的數據源定義、映射規則、轉換規則、裝載策略等都屬于元數據范疇。如何妥善地存儲并管理這些信息已經關系到ETL過程能否順利完成,而且影響到后期的使用和維護。
構造元數據主要包含兩方面:建立元數據模型和建立元數據管理系統。元數據管理系統主要完成二部分工作,一是維護元數據的物理存儲,二是提供定義、修改、訪問元數據的接口和工具[3]。本ETL系統的元數據模型包含數據元數據模型、ETL類元數據模型。使用Access數據庫作為元數據的物理存儲數據庫,這樣便于數據ETL系統的移植。
采用面向對象的方法設計ETL元數據。元數據對象類中包含了該對象的各種屬性和方法,屬性表達了該元數據的某方面特征值,而方法定義了對相關元數據的各種操作[4]。元數據類在實現上分為個體類和集合類二種。個體類主要設置或讀取元數據的各個屬性值,存取或更新元數據表中的單個記錄。集合類包含了個體類對象的集合,負責對整個源數據表進行存取和更新,并維護各元數據類之間的一致性。個體類對應于元數據表中的一條記錄,集體類對應于一個元數據表。一個元數據庫中通常包含多個元數據表,分別存儲各類元數據的詳細信息。
為了實現客戶端對元數據請求的快速響應,這里將主要的元數據都保存在服務器的內存中。當ETL系統服務器啟動時,系統就將主要的元數據從元數據庫中讀出,并常駐在內存中,直到服務器被關閉。
3 ETL流程控制與用戶可交互界面及應用
采用JSP網頁技術來開發可視化的工作界面。JSP技術具有系統的多平臺支持、強大的可伸縮性、通過網絡發布實現遠程監控等特點。在運行過程中,JSP服務器訪問元數據庫,向客戶端展示數據源類型并列出各種數據源所采用的不同的數據抽取函數類、數據清洗類和數據裝載類,用戶根據JSP頁面向導提示,選擇合適的ETL類,逐步完成數據ETL全部過程。
基于上述技術開發了某石油天然氣公司的決策支持系統和遠程監控數據挖掘分析系統。在其數據ETL部分,首先選擇數據源建立數據連接。JSP服務器訪問數據源,并向客戶端展示其數據結構,供用戶選擇需要抽取的數據表和數據列。當所需要的數據集抽取完后,服務器訪問元數據庫,調出當前ETL類庫中的所有數據清洗算法,每一個算法都配有相應的算法描述供用戶參考,用戶選擇適當的數據清洗算法對數據集進行轉換和清洗。清洗成功后,將最后的結果集保存到目的數據庫中。
4 結束語
本文從實際角度出發,設計出了一個面向數據倉庫和數據挖掘的數據ETL系統,提出了一個可擴展的通用數據ETL框架,利用JSP網頁技術來設計與用戶可交互的工作流程控制界面。實踐證明:本ETL系統是可用的、有效的,在數據倉庫和數據挖掘的應用中,顯示了其一定的靈活性和高效性。今后的工作重點將放在增量式的數據抽取、高效的數據異常檢測和清洗算法的研究上,不斷地充實并完善這個數據ETL系統。
參考文獻
1 張寧.數據倉庫中ETL技術的研究.計算機工程與應用,2002;38(24)
2 周宏廣,周繼承.數據ETL工具通用框架設計.計算機應用,2003;(12)
3 廖磷,王立剛,劉文煌.構造數據倉庫系統的元數據.計算機工程與應用,2001;(16)
4 賈自艷.面向數據質量的ETL過程建模與實現.系統仿真學報,2004;(5)
5 郭志懋,周傲英.數據質量和數據清洗研究綜述.軟件學報,2002;13(11)