《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 面向數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)挖掘的ETL設(shè)計(jì)與應(yīng)用
面向數(shù)據(jù)倉(cāng)庫(kù)和數(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ù)倉(cāng)庫(kù)  數(shù)據(jù)挖掘  ETL  JSP界面  元數(shù)據(jù)

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

  因此,ETL系統(tǒng)應(yīng)該對(duì)以上各種數(shù)據(jù)源類型都能有很好的支持。
  一般的數(shù)據(jù)ETL工具較多針對(duì)數(shù)據(jù)倉(cāng)庫(kù),但這類ETL工具在其他領(lǐng)域中的應(yīng)用往往不夠靈活。為了實(shí)現(xiàn)ETL系統(tǒng)的通用型和實(shí)用性,需要在系統(tǒng)框架上進(jìn)行更靈活的設(shè)計(jì),使之既能針對(duì)數(shù)據(jù)倉(cāng)庫(kù)實(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類庫(kù)等進(jìn)行統(tǒng)一的管理和維護(hù),并溝通用戶與系統(tǒng)之間的交流。
1.2 ETL框架及模塊說(shuō)明
  針對(duì)上述設(shè)計(jì)思想,本文設(shè)計(jì)了一個(gè)ETL通用框架,如圖2所示?,F(xiàn)將其各部分功能詳述如下:

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