《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 面向數(shù)據(jù)倉庫和數(shù)據(jù)挖掘的ETL設(shè)計與應(yīng)用
面向數(shù)據(jù)倉庫和數(shù)據(jù)挖掘的ETL設(shè)計與應(yīng)用
付中偉1,張 浩2,陸劍峰1
(1.同濟大學(xué) CIMS研究中心,上海200092; 2.上海電力學(xué)院,上海200092)
摘要: 設(shè)計了一個具有良好的可擴展性、通用性、友好的JSP操作界面和統(tǒng)一的元數(shù)據(jù)管理等特點的數(shù)據(jù)ETL系統(tǒng)。結(jié)合實例介紹了此系統(tǒng)在石化企業(yè)中的應(yīng)用。
關(guān)鍵詞: ETL JSP界面 元數(shù)據(jù)
Abstract:
Key words :

摘   要: 設(shè)計了一個具有良好的可擴展性、通用性、友好的JSP操作界面和統(tǒng)一的元數(shù)據(jù)管理等特點的數(shù)據(jù)ETL系統(tǒng)。結(jié)合實例介紹了此系統(tǒng)在石化企業(yè)中的應(yīng)用。
關(guān)鍵詞: 數(shù)據(jù)倉庫  數(shù)據(jù)挖掘  ETL  JSP界面  元數(shù)據(jù)

  數(shù)據(jù)ETL是一個來源于數(shù)據(jù)倉庫的概念,指數(shù)據(jù)抽取(Extraction)、轉(zhuǎn)換(Transformation)、清洗(Cleaning)、裝載(Loading)的過程,是構(gòu)建數(shù)據(jù)倉庫的重要環(huán)節(jié)[1]。它從運作資源中抽取數(shù)據(jù)并按照一定的要求將數(shù)據(jù)進行轉(zhuǎn)換和清洗,最后將高質(zhì)量的數(shù)據(jù)裝載到數(shù)據(jù)倉庫或數(shù)據(jù)集市中,為更高層次的應(yīng)用提供決策分析。不同的運用領(lǐng)域,數(shù)據(jù)ETL有著不同的內(nèi)涵。因此通用的集成清洗方案受到了越來越多的重視。數(shù)據(jù)ETL在數(shù)據(jù)清洗工具的通用化、高效化和智能化上還有很多發(fā)展空間。
本文在開發(fā)某石油天然氣公司的決策支持系統(tǒng)和遠(yuǎn)程監(jiān)控數(shù)據(jù)挖掘分析系統(tǒng)的基礎(chǔ)上,針對數(shù)據(jù)倉庫和數(shù)據(jù)挖掘,設(shè)計并實現(xiàn)了一套通用的、可擴展的、具有可視化交互界面的ETL系統(tǒng)。
1  數(shù)據(jù)ETL工具通用框架
1.1 設(shè)計思想
  一個好的ETL系統(tǒng)應(yīng)該能適應(yīng)各種操作平臺,支持更多的數(shù)據(jù)源。一般企業(yè)都會面對并處理來自各種系統(tǒng)的數(shù)據(jù)源?,F(xiàn)存的操作數(shù)據(jù)又存在很多質(zhì)量問題,如:濫用縮寫詞和慣用語、數(shù)據(jù)輸入錯誤、重復(fù)記錄、缺損值、不同的計量單位和過時的編碼等等。因此,異構(gòu)多數(shù)據(jù)源的集成和數(shù)據(jù)清洗將是數(shù)據(jù)ETL所面臨的兩大問題。
  某流程型企業(yè)的數(shù)據(jù)源分布和數(shù)據(jù)集成過程如圖1所示。其中異構(gòu)數(shù)據(jù)源包括實時數(shù)據(jù)庫(Infoplus)、PMIS數(shù)據(jù)庫。生產(chǎn)實時數(shù)據(jù)來源于實時數(shù)據(jù)庫系統(tǒng)采集DCS上的現(xiàn)場數(shù)據(jù)。銷售管理數(shù)據(jù)來源于包含IFS的設(shè)備模塊、OA系統(tǒng)、生產(chǎn)管理系統(tǒng)、安全環(huán)保系統(tǒng)等整個企業(yè)的管理層應(yīng)用系統(tǒng)(PMIS)。另外,一部分歷史數(shù)據(jù)可能會以純文本的形式存放,同時,決策分析所用的一部分中間數(shù)據(jù)存放在Oracle數(shù)據(jù)庫中。隨著生產(chǎn)網(wǎng)絡(luò)化的日益發(fā)展,大量的數(shù)據(jù)也會以XML的形式存放。

  因此,ETL系統(tǒng)應(yīng)該對以上各種數(shù)據(jù)源類型都能有很好的支持。
  一般的數(shù)據(jù)ETL工具較多針對數(shù)據(jù)倉庫,但這類ETL工具在其他領(lǐng)域中的應(yīng)用往往不夠靈活。為了實現(xiàn)ETL系統(tǒng)的通用型和實用性,需要在系統(tǒng)框架上進行更靈活的設(shè)計,使之既能針對數(shù)據(jù)倉庫實現(xiàn)數(shù)據(jù)的轉(zhuǎn)化,又能針對數(shù)據(jù)挖掘解決數(shù)據(jù)預(yù)處理方面工作。
  同時,為了更好地管理和維護ETL系統(tǒng),也需要有完善的元數(shù)據(jù)對系統(tǒng)的支持。元數(shù)據(jù)能對整個系統(tǒng),包括數(shù)據(jù)抽取任務(wù)、數(shù)據(jù)ETL類庫等進行統(tǒng)一的管理和維護,并溝通用戶與系統(tǒng)之間的交流。
1.2 ETL框架及模塊說明
  針對上述設(shè)計思想,本文設(shè)計了一個ETL通用框架,如圖2所示?,F(xiàn)將其各部分功能詳述如下:

  (1)數(shù)據(jù)抽取。通用數(shù)據(jù)接口能夠跨平臺跨網(wǎng)絡(luò)訪問數(shù)據(jù),支持不同類型數(shù)據(jù)源間建立連接,通過它可以屏蔽各種數(shù)據(jù)源之間的差異,為后序工作提供一個統(tǒng)一的數(shù)據(jù)視圖。目前已有多種可選的通用數(shù)據(jù)訪問接口,如ODBC、OLEDB、JDBC等,其中JDBC支持跨平臺訪問及網(wǎng)絡(luò)訪問數(shù)據(jù)??紤]到實際情況,本文采用JDBC和ODBC相結(jié)合的技術(shù),使用SQL、PL/SQL和JAVA的完整功能,對外部數(shù)據(jù)源進行訪問。
  數(shù)據(jù)抽取通過通用數(shù)據(jù)訪問接口訪問各種異構(gòu)數(shù)據(jù)源,并將數(shù)據(jù)抽取成統(tǒng)一格式的標(biāo)準(zhǔn)數(shù)據(jù)集。標(biāo)準(zhǔn)數(shù)據(jù)集的設(shè)計是為了實現(xiàn)數(shù)據(jù)標(biāo)準(zhǔn)化,從而進一步實現(xiàn)ETL系統(tǒng)的通用性和可擴展性。
  (2)標(biāo)準(zhǔn)數(shù)據(jù)集。標(biāo)準(zhǔn)數(shù)據(jù)集是作為系統(tǒng)內(nèi)部交換的一種統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。有了標(biāo)準(zhǔn)數(shù)據(jù)集,ETL系統(tǒng)就更易于擴展。所有抽取出來的數(shù)據(jù)在系統(tǒng)內(nèi)部都表示成這種統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),而所有數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)清洗算法的輸入輸出數(shù)據(jù)都按這種數(shù)據(jù)結(jié)構(gòu)形式來組織。
  圖3中InputData類是本ETL系統(tǒng)的標(biāo)準(zhǔn)數(shù)據(jù)集結(jié)構(gòu)。Item類表示項,其中itemName指項名,itemValue表示項的值,是一個ArrayList格式的數(shù)組。InputData類與Item類屬于面向?qū)ο笾械囊蕾囮P(guān)系。InputData類中,name屬性是數(shù)據(jù)集的名字,owner屬性是數(shù)據(jù)集的用戶,createDate是數(shù)據(jù)集的創(chuàng)建時間,items是數(shù)據(jù)集的項,是由若干Item對象組成的一個HashMap。從中不難看出,Item對象對應(yīng)于數(shù)據(jù)表中的一列,而InputData對象對應(yīng)于由若干項組成的一個數(shù)據(jù)表。


  有了這樣的標(biāo)準(zhǔn)數(shù)據(jù)集結(jié)構(gòu),當(dāng)需要擴展更多的數(shù)據(jù)轉(zhuǎn)換、清洗、裝載類的時候,只要這些類能滿足標(biāo)準(zhǔn)數(shù)據(jù)集接口,就能夠無縫地擴展到ETL系統(tǒng)之中。
  (3)數(shù)據(jù)預(yù)處理、數(shù)據(jù)集成和數(shù)據(jù)歸約。這是ETL系統(tǒng)的核心部分,是數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)清洗的過程。
數(shù)據(jù)預(yù)處理負(fù)責(zé)對抽取到的數(shù)據(jù)進行初步的清洗,解決一些數(shù)據(jù)的簡單變換問題,如數(shù)據(jù)類型轉(zhuǎn)換、日期時間格式轉(zhuǎn)換、字段解碼、數(shù)據(jù)缺失值的簡單處理等,也為后面的數(shù)據(jù)復(fù)雜轉(zhuǎn)換和數(shù)據(jù)集成做準(zhǔn)備工作。
  經(jīng)過數(shù)據(jù)抽取后可以得到多個模式和多個實例數(shù)據(jù)集。然而數(shù)據(jù)倉庫和數(shù)據(jù)挖掘需要的是集成的、語義一致的數(shù)據(jù)。因此必須將多模式與數(shù)據(jù)集進行統(tǒng)一映射,轉(zhuǎn)換為單一的結(jié)果集。這就是數(shù)據(jù)集成的過程。在此過程中,首先應(yīng)該將各種不同的數(shù)據(jù)進行元素化,得到格式統(tǒng)一的數(shù)據(jù)結(jié)構(gòu);繼而進行數(shù)據(jù)標(biāo)準(zhǔn)化,消除不一致的縮寫、簡寫等;然后進行數(shù)據(jù)的一致性校驗,在內(nèi)容上修改各種錯誤。
  經(jīng)過數(shù)據(jù)集成后的數(shù)據(jù)集中還包含許多相似重復(fù)記錄,它將嚴(yán)重影響數(shù)據(jù)倉庫的語義一致性,因此必須消除。在數(shù)據(jù)規(guī)約過程中,首先針對數(shù)據(jù)集進行匹配,即發(fā)現(xiàn)重復(fù)異常,然后根據(jù)匹配結(jié)果進行處理,刪除部分記錄或者將多個記錄合并為一個更完整信息的記錄。
  值得注意的是,數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)清洗并不是孤立的,而是滲透在整個數(shù)據(jù)抽取、數(shù)據(jù)裝載甚至整個數(shù)據(jù)ETL過程中。
  (4)數(shù)據(jù)裝載。數(shù)據(jù)裝載通過通用數(shù)據(jù)訪問接口將標(biāo)準(zhǔn)數(shù)據(jù)集裝載到目的數(shù)據(jù)庫中。
  清洗后的數(shù)據(jù)結(jié)果集根據(jù)不同的需要,可以選擇裝載到數(shù)據(jù)倉庫中去,或者直接提供給數(shù)據(jù)挖掘做決策分析,或者存儲在中間數(shù)據(jù)庫中作為數(shù)據(jù)樣本集供日后數(shù)據(jù)分析所使用。
  (5)ETL類管理。ETL類管理是數(shù)據(jù)ETL系統(tǒng)元數(shù)據(jù)管理的一部分。元數(shù)據(jù)管理將在下文中再做說明。
ETL類庫中包括了所有的數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換/數(shù)據(jù)清洗、數(shù)據(jù)裝載類,每一個類可以實現(xiàn)一定的功能。用戶就是通過調(diào)用ETL類庫中不同的數(shù)據(jù)抽取類、數(shù)據(jù)清洗類和數(shù)據(jù)裝載類來實現(xiàn)一次完整的ETL過程。
  數(shù)據(jù)抽取類、清洗類和裝載類分別具有統(tǒng)一的接口。用戶可以根據(jù)數(shù)據(jù)抽取類接口、數(shù)據(jù)清洗類接口和數(shù)據(jù)裝載類接口來開發(fā)自己的數(shù)據(jù)ETL類,以實現(xiàn)更多的功能,并利用ETL類管理將新開發(fā)的類注冊到元數(shù)據(jù)庫中。
  值得注意的是,在一次ETL過程中,可能需要多次數(shù)據(jù)清洗操作,每個數(shù)據(jù)清洗步驟之間可以通過數(shù)據(jù)清洗類的源數(shù)據(jù)(輸入)和目標(biāo)數(shù)據(jù)(輸出)進行連接,即通過數(shù)據(jù)流進行彼此約束。
  (6)流程控制與用戶可交互界面。一個好的ETL系統(tǒng)需要有友好的可視化工作界面。用戶通過可視化的工作界面,根據(jù)任務(wù)的需要和界面向?qū)У奶崾?,調(diào)用合適的ETL類,從而控制ETL工作流程,實現(xiàn)整個數(shù)據(jù)ETL工作過程。
2  ETL元數(shù)據(jù)管理
  元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),對于ETL來說尤其重要。ETL中大量的數(shù)據(jù)源定義、映射規(guī)則、轉(zhuǎn)換規(guī)則、裝載策略等都屬于元數(shù)據(jù)范疇。如何妥善地存儲并管理這些信息已經(jīng)關(guān)系到ETL過程能否順利完成,而且影響到后期的使用和維護。
  構(gòu)造元數(shù)據(jù)主要包含兩方面:建立元數(shù)據(jù)模型和建立元數(shù)據(jù)管理系統(tǒng)。元數(shù)據(jù)管理系統(tǒng)主要完成二部分工作,一是維護元數(shù)據(jù)的物理存儲,二是提供定義、修改、訪問元數(shù)據(jù)的接口和工具[3]。本ETL系統(tǒng)的元數(shù)據(jù)模型包含數(shù)據(jù)元數(shù)據(jù)模型、ETL類元數(shù)據(jù)模型。使用Access數(shù)據(jù)庫作為元數(shù)據(jù)的物理存儲數(shù)據(jù)庫,這樣便于數(shù)據(jù)ETL系統(tǒng)的移植。
  采用面向?qū)ο蟮姆椒ㄔO(shè)計ETL元數(shù)據(jù)。元數(shù)據(jù)對象類中包含了該對象的各種屬性和方法,屬性表達(dá)了該元數(shù)據(jù)的某方面特征值,而方法定義了對相關(guān)元數(shù)據(jù)的各種操作[4]。元數(shù)據(jù)類在實現(xiàn)上分為個體類和集合類二種。個體類主要設(shè)置或讀取元數(shù)據(jù)的各個屬性值,存取或更新元數(shù)據(jù)表中的單個記錄。集合類包含了個體類對象的集合,負(fù)責(zé)對整個源數(shù)據(jù)表進行存取和更新,并維護各元數(shù)據(jù)類之間的一致性。個體類對應(yīng)于元數(shù)據(jù)表中的一條記錄,集體類對應(yīng)于一個元數(shù)據(jù)表。一個元數(shù)據(jù)庫中通常包含多個元數(shù)據(jù)表,分別存儲各類元數(shù)據(jù)的詳細(xì)信息。
  為了實現(xiàn)客戶端對元數(shù)據(jù)請求的快速響應(yīng),這里將主要的元數(shù)據(jù)都保存在服務(wù)器的內(nèi)存中。當(dāng)ETL系統(tǒng)服務(wù)器啟動時,系統(tǒng)就將主要的元數(shù)據(jù)從元數(shù)據(jù)庫中讀出,并常駐在內(nèi)存中,直到服務(wù)器被關(guān)閉。
3  ETL流程控制與用戶可交互界面及應(yīng)用
  采用JSP網(wǎng)頁技術(shù)來開發(fā)可視化的工作界面。JSP技術(shù)具有系統(tǒng)的多平臺支持、強大的可伸縮性、通過網(wǎng)絡(luò)發(fā)布實現(xiàn)遠(yuǎn)程監(jiān)控等特點。在運行過程中,JSP服務(wù)器訪問元數(shù)據(jù)庫,向客戶端展示數(shù)據(jù)源類型并列出各種數(shù)據(jù)源所采用的不同的數(shù)據(jù)抽取函數(shù)類、數(shù)據(jù)清洗類和數(shù)據(jù)裝載類,用戶根據(jù)JSP頁面向?qū)崾?,選擇合適的ETL類,逐步完成數(shù)據(jù)ETL全部過程。
  基于上述技術(shù)開發(fā)了某石油天然氣公司的決策支持系統(tǒng)和遠(yuǎn)程監(jiān)控數(shù)據(jù)挖掘分析系統(tǒng)。在其數(shù)據(jù)ETL部分,首先選擇數(shù)據(jù)源建立數(shù)據(jù)連接。JSP服務(wù)器訪問數(shù)據(jù)源,并向客戶端展示其數(shù)據(jù)結(jié)構(gòu),供用戶選擇需要抽取的數(shù)據(jù)表和數(shù)據(jù)列。當(dāng)所需要的數(shù)據(jù)集抽取完后,服務(wù)器訪問元數(shù)據(jù)庫,調(diào)出當(dāng)前ETL類庫中的所有數(shù)據(jù)清洗算法,每一個算法都配有相應(yīng)的算法描述供用戶參考,用戶選擇適當(dāng)?shù)臄?shù)據(jù)清洗算法對數(shù)據(jù)集進行轉(zhuǎn)換和清洗。清洗成功后,將最后的結(jié)果集保存到目的數(shù)據(jù)庫中。
4  結(jié)束語
  本文從實際角度出發(fā),設(shè)計出了一個面向數(shù)據(jù)倉庫和數(shù)據(jù)挖掘的數(shù)據(jù)ETL系統(tǒng),提出了一個可擴展的通用數(shù)據(jù)ETL框架,利用JSP網(wǎng)頁技術(shù)來設(shè)計與用戶可交互的工作流程控制界面。實踐證明:本ETL系統(tǒng)是可用的、有效的,在數(shù)據(jù)倉庫和數(shù)據(jù)挖掘的應(yīng)用中,顯示了其一定的靈活性和高效性。今后的工作重點將放在增量式的數(shù)據(jù)抽取、高效的數(shù)據(jù)異常檢測和清洗算法的研究上,不斷地充實并完善這個數(shù)據(jù)ETL系統(tǒng)。
參考文獻
1   張寧.數(shù)據(jù)倉庫中ETL技術(shù)的研究.計算機工程與應(yīng)用,2002;38(24)
2   周宏廣,周繼承.數(shù)據(jù)ETL工具通用框架設(shè)計.計算機應(yīng)用,2003;(12)
3   廖磷,王立剛,劉文煌.構(gòu)造數(shù)據(jù)倉庫系統(tǒng)的元數(shù)據(jù).計算機工程與應(yīng)用,2001;(16)
4   賈自艷.面向數(shù)據(jù)質(zhì)量的ETL過程建模與實現(xiàn).系統(tǒng)仿真學(xué)報,2004;(5)
5   郭志懋,周傲英.數(shù)據(jù)質(zhì)量和數(shù)據(jù)清洗研究綜述.軟件學(xué)報,2002;13(11)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。