摘要:本文以油水井工況宏觀控制圖管理系統的設計實現為例,對ETL過程中數據清洗、數據多重轉換以及應用ETL技術采取B/S/S系統架構進行了分析。提出了應用ETL技術進行數據挖掘改造原有系統時應注意的幾個問題。
關鍵詞:數據挖掘;ETL;工況控制;數據抽取;數據轉換
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)20-30366-03
Implementation of the Oil Water Wells Working Status Macroscopic Control Chart Management System Based on ETL
GUO Yu-Ming1,ZHANG Bao-an1,GUO Hai-ping2,WANG Wei1
(1.Department of Information Center,Dongxin Petroleum Production Plant,Shengli Oilfield, Dongying 257094, China;2. Xi'an Jiao Tong University,Xi'an 710049, China)
Abstract: This paper takes the design and implementation of Oil Water wells working status macroscopic control chart management system as an example, analyzed the ETL process of data cleansing, data multiple transformation and the application of ETL technology to B/S/S system architecture. It raised several issues about the ETL application of data mining technology when it transforms the original system.
Key words: Data mining; ETL; Working Status Control; Data extract; Data transform
1 引言
油水井工況宏觀控制圖是為了油水井生產和管理需要而繪制,用于反映油水井工作狀況的圖件。根據油水井在不同的工況區域的分布情況,來分析與決策下一步對油水井的管理采取的措施。上世紀90年代初,勝利油田東辛采油廠在借鑒大慶油田抽油機井工況控制管理技術的基礎上,結合東辛采油廠復雜斷塊油田的實際,自主開發了抽油機井工況控制圖繪制軟件。但由于受當時數據庫資源、硬件網絡環境、技術人員計算機應用能力等多種因素的影響,推廣應用的維護難度較大。90年代后期,工況控制圖繪制軟件停用,產生了一些不良的效果。由于缺少了對油井工況進行評價以及對各礦、采油隊工況管理指標進行考核的機制,油井的工況管理處于某種程度的失控狀態,造成方案設計、生產參數的調整方面的隨意性比較大,油井工況管理指標下滑,工況不合理的井明顯增多。
近幾年,隨著勝利油田數據庫建設的深入和完善,數據資源不斷豐富,硬件網絡環境也得到很大改善,尤其是基層技術人員計算機應用能力水平的不斷提高以及軟件開發工具的不斷更新。基于以上條件的具備,2006年—2007年,采取數據挖掘的ETL技術對油水井工況宏觀控制圖管理系統進行了重新設計與實現。
2 ETL技術介紹
數據ETL是一個來源于數據倉庫的概念,指數據抽取(Extraction)、轉換(Transformation)、清洗(Cleaning)、裝載(Loading)的過程,是構建數據倉庫的重要環節[1]。用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去[2]。
在ETL技術應用過程中,最困難部分是用戶需求分析和模型設計,而ETL規則設計和實施則是工作量最大的。這個過程非常繁雜,是整個數據倉庫建設過程中工作量最大的一部分[2]。約占整個項目的60%-80%,這是國內外從眾多實踐中得到的普遍共識。
數據預處理、數據集成和數據歸約[3]。這是ETL系統的核心部分,是數據轉換和數據清洗的過程。數據倉庫中有可能存在著大量的噪聲數據。引起的一般原因有:數據采集不規范、數據輸入錯誤、丟失值、行業標準數據信息變化與更新等,都有可能導致 “垃圾進,垃圾出”(garbage in, garbage out),系統根本就不可能為決策分析提供準確可靠的支持。為了清除噪聲數據,必須在數據庫系統中進行數據清洗。數據預處理負責對抽取到的數據進行初步的清洗,解決一些數據的簡單變換問題,必須將多模式與數據集進行統一映射,轉換為單一的結果集。這就是數據集成的過程。在數據規約過程中,首先針對數據集進行匹配,即發現重復異常,然后根據匹配結果進行處理,刪除部分記錄或者將多個記錄合并為一個更完整信息的記錄。值得注意的是,數據轉換和數據清洗并不是孤立的,而是滲透在整個數據抽取、數據裝載甚至整個數據ETL過程中。
一般來講:數據加載(L)也不是孤立的。與E、T過程相比較,技術難度不是很高;通常有兩種方式:邊轉換邊加載;轉換完畢后集中加載。可根據實際情況選擇合適的數據加載方式。
3 ETL技術在油水井工況宏觀控制圖開發中的實現
3.1 工況宏觀控制圖數據抽取(E)
抽取油水井工況宏觀控制圖所需數據采取的策略是:首先對所需要抽取的數據進行分類,一類是靜態數據,即一段時間內數據變化不大,或者很少變化的數據。如在油水井不改層生產的情況下,油井的原油物性參數:原油密度、原油粘度以及井號、單位代碼、油層中部數據、層位、泵徑、沖程、沖次、泵深、動液面(正常生產情況下波動不大可作為靜態數據處理)等;另一類是動態數據,即經常發生波動的數據,還包括對計算轉化結果產生影響比較大的數據,如日產液、含水、油氣比等,這部分數據主要來源于油水井生產的日報數據表。對于靜態數據的抽取采取按月份分單位進行抽取(對應下圖的工況基本數據管理),而動態數據則從日報數據表中抽取。抽取動態數據時與靜態數據關聯,得到最終的抽取數據結果集。
一般ETL過程,抽取數據過程中需要對不合適的數據進行清洗。但考慮油田油水井生產數據的特點,采取先抽取數據后清洗,此時需要人工對所抽取的數據進行校驗或是恢復,以保證每口生產井的數據經過轉換都必須進入工況結果數據表,滿足基層技術人員對該井工況控制的需要。
3.2 工況數據多重轉換(DT)
對于抽取的批量數據理論上講是可以一次性進行數據轉換,但考慮到當前的數據質量、多次轉換后的數據結果使用用戶層次不同等因素,在該系統中采取按油水井所屬單位代碼劃分方法,縮小轉換數據量,降低處理數據服務器的負載,實行多重數據轉換,這樣處理的優點是:在轉換中斷情況下可以人工校驗轉換初始數據。能很好地保障整個系統的安全性和性能。
以抽油機井數據轉換為例簡要介紹其步驟:
1)經過校驗數據的第一次轉換(First Transformation):即抽油機井批量數據工況點計算。包括原油物性參數、油氣水性質、多相垂直管流壓力曲線計算,最終計算每口井的泵吸入口壓力、泵效等。計算結果加載,至此第一次T過程完成。若計算過程中發生數據不合理造成異常,則返回轉換錯誤記錄,并定位到該記錄,提示用戶校驗抽取數據。直至所需轉換數據校驗合理,完成第一次數據加載為止。
2)以第一次轉換結果以及初始抽油機井邊界條件參數為基礎實現第二次數據轉換(Second Transformation):由邊界參數確定抽油機井圖版上的邊界線,由第一次轉換結果處理各井所處圖版的位置,并進行分區。實現第二次轉換數據的加載;第二次轉換結果顯示如圖1。
3)第三次轉換(third Transformation):根據第二次轉換結果(理論上工況宏觀控制圖可以每天進行),按月份、單位代碼進行統計分析,統計數據以該單位本月第二次加載結果最新數據為準。形成第三次轉換結果,前提是所有下級單位必須在該月進行第二次數據轉換,統計結果數據實現第三次加載。第三次數據轉換結果如圖2。
該系統中數據加載方式:由于數據是按單位代碼批量抽取,采取了批量加載的策略,即轉換一次完成后加載。其數據加載技術難度比較簡單,本文不探討數據加載問題。圖3是油水井工況宏觀控制ETL過程圖(參照參考文獻[4])。
3.3 多重ETL轉換結果使用層次對象
每次經過轉換結果數據都需要進行加載,以便提供給不同生產管理層次人員使用。第一次和第二次加載結果主要使用對象為采油隊(管理區)技術人員或地質、工藝設計人員,目的是對每口井采取相應的措施的依據;第二次轉換既是基層技術所需結果數據,也是向第三次轉換的中間過程。第三次加載結果使用對象主要是中層或高層管理人員使用。以便對所屬單位油水井生產情況以及管理水平有總體上的把握,為下一步油水井的管理工作做出更符合實際的決策。
其他采油方式(如電泵井)以及水井工況宏觀圖的ETL數據處理與抽油機實現過程相同。
3.4 采取ETL技術時有關系統架構設計
早期的工況宏觀控制繪制軟件是單機版,很難實現數據資源共享,其使用對象局限于基層技術人員,而且數據采集工作量比較大。為充分利用現有的數據資源,在架構該系統時采取B/S/S(Browser/Web Server/Oracle Server)架構。通常B/S/S系統架構下,用戶工作界面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,Web Server端處理用戶與Oracle Server端交互信息,主要事務邏輯在服務器端(Oracle Server)實現,形成所謂三層3-tier結構。這樣就大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本。
在進行油水井工況宏觀控制管理系統架構設計時,考慮到數據第一次轉換,其轉換計算量以及復雜程度是非常大,每口井在計算多相垂直管流時要多次反復迭代,當處理數據量較大時,全部負載由Oracle Server承擔會造成用戶響應時間過長,系統整體性能較差,實際生產中Oracle Server還提供其他應用系統數據服務。因此,在設計該系統架構時,為降低系統負載以及平衡Web服務器與Oracle數據庫服務器,除對抽取數據按單位分批量轉換外,部分計算工作分配在Web Server端進行,發揮Web Server與Oracle Server相互協作與各自對處理數據的優勢,對其數據ETL負載進行均衡與優化,使系統在比較穩定與優化的狀態下運行。
4 系統投入運行應用效果分析
系統投入運行得到生產管理部門的積極配合與支持,建立相關的工況運行管理規定與考核機制,并以此為依據開展工況分析。經運行前后結果對比分析,取得了比較好的應用效果。以抽油機井為例,其前后對比如圖4。
對比分析發現:合理區(A區)與優良區(F區)除一個單位工況變化不大外(分析該單位區塊以高壓低滲為主,邊界條件不太適合,系統需要針對該單位調整其邊界),其他五個單位所占比例均有不同程度提高。整體運行效果比較明顯。
5 認識和結論
借助現有的網絡環境與數據庫資源,對以往單機版軟件采取ETL技術進行改造和升級,有以下幾個方面需要注意:
1)對抽取數據進行合理的分類,該策略往往能降低數據抽取難度;還應盡量避免用戶數據的重復采集,抽取出的數據是清洗還是校驗應根據實際情況來決定。
2)在ETL過程中,通常T過程非常復雜,即使數據經過清洗或校驗,仍很難避免轉換過程中發生異常,導致轉換失敗;通常需要將T過程分解,分解為比較容易實現的幾個T過程,用戶與轉換結果數據進行交互,能很好改善轉換過程。當然,并不是分解的T過程越多越好,T過程太多,勢必會增加系統的其他開銷,用戶操作也會變得復雜,關鍵是分解T過程掌握一個適當的度。另外,當轉換數據過多,轉換過程過于復雜時,還可采取批量處理方式。
3)采取ETL技術設計應用系統架構時,不可生搬硬套某個系統架構的理論知識,要根據應用系統實際靈活變通;在油水井工況宏觀控制管理系統架構中,合理分配各服務器的負載,提高系統整體性能。
本文從實際角度出發,設計出了一個面向數據挖掘的數據ETL系統,提出了采取ETL技術改造原有系統需要注意的幾個方面。通過實際應用說明:該ETL系統是可用的、有效的,在數據挖掘的應用中,顯示了其一定的靈活性和實用性。
參考文獻:
[1] 張寧.數據倉庫中ETL技術的研究[J].計算機工程與應用,2002,38(24).
[2] 王克龍,王玲,王平立,宋斌.數據倉庫中ETL技術的探討與實踐[J].計算機應用與軟件,2005.
[3] 付中偉,張浩,陸劍峰.面向數據倉庫和數據挖掘的ETL設計與應用[J].微型機與應用,2005,(11).
[4] Rodney Gleghorn.Enterprise Application Integration:A Manager’s Perspective.November December 2005 IT Pro.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”