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

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

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

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

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


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

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