顧娟,張楠楠
(大慶油田有限責任公司勘探開發研究院,黑龍江 大慶 163712)
油田開發生產管理對數據應用的深度和廣度不斷擴展,隨時出現大量的數據服務需求。對于信息人員來說,業務需求變更、數據結構變化,報表要不斷升級;對于業務人員來說裝不完的業務系統,各類報表散落在各個系統中,離散化嚴重,應用成本高,依然感覺不能滿足自己的需求。需要通過信息技術與管理模式、業務模式深度融合,充分挖掘和有效利用數據,提高開發生產管理指令執行效率、判斷依據精準率。
結構化數據應用服務常規模式是由信息人員提供固定的應用樣式,實現的主流方式有兩類:一類是信息人員與業務人員協作完成的編程定制方式,即自主開發方式,面對日益復雜多變的業務需求,自主開發方式效率低,已有系統應用功能高度耦合,程序代碼復用程度差;一類是基于面向通用性的BI(商業智能)報表工具,其功能雖然強大,但操作門檻高、學習成本高,只能面向信息人員。無論自主開發還是商業報表工具均需要信息人員專人維護開發,且都不能很好地適應和快速地響應業務需求。針對以上問題,結合兩種
數據服務模式的優勢,將需要信息人員進行的數據組織工作由基于模型驅動模式替代,利用抽取通用事件,分離邏輯與功能技術,設計開發基于Web的自定義報表工具,使得在信息人員完成數據資源目錄建設前提下,業務人員能夠借助報表工具,通過選擇樹型結構展示的數據資源,進行簡單的配置后即可獨立自主地定制出所需的統計或查詢報表。
功能上基于模型的報表定制工具要實現業務人員使用時不需要安裝任何軟件,通過支持的瀏覽器,在Web端實現報表定制和瀏覽。按照業務人員的角色查詢被授予訪問權限的數據、分配對應的操作權限,且能夠按照業務需求獨自完成報表定制工作。
基本功能需求有:
(1)數據挖掘過程中,業務人員不需要掌握數據庫相關技術,根據選擇的業務指標,動態生成訪問數據庫的SQL。自動獲取相關數據并呈現,支持多維度數據分類、匯總及鉆取。
(2)將數據庫中的分析指標,以業務人員熟悉的分類樹方式展示出來。業務人員可選擇自己關注的任一生產指標項,以零代碼、全可視化方式進行數據的多維度挖掘分析、統計,分析手段涵蓋分類統計、匯總、同比、環比、趨勢等。支持圖表混排、支持數據界限值預警,支持數據穿透,支持數據多維度統計,支持個性化調整。
報表定制工具采用B/S模式,通過可視化定制和數據挖掘有機結合,實現功能性、易用性及定制效率的均衡。報表以模型作為底層數據驅動,以報表控件作為展示方式,實現數據的挖掘功能。報表功能永遠不可能完全滿足業務要求,因此將報表組件作為整體控件,被外部模塊編程調用,報表本身提供接入接口,在報表控件無法滿足需求時,用戶可以掛接外部模塊,實現功能的擴展。
報表定制工具采用N層體系架構,具有易用性、良好的穩定性、安全性和可擴展性。體系結構圖如圖1所示。

圖1 報表體系結構圖
數據層:負責連接報表的各種數據源。可以是任意數據模型的關系型數據庫,多源異構數據庫可映射到項目庫中統一使用。數據映射的方式包括視圖、同義詞、數據遷移等不同的模式,實現數據的流轉控制。
模型層:數據源數據模型空間關系,即數據表信息、數據表所包含數據項信息、數據表間關聯關系、主從關系、維度信息等。定制報表時模型驅動引擎基于該空間關系,動態組織SQL驅動數據。
引擎層:報表定制功能的底層驅動,提供數據、邏輯、功能、界面的驅動,不同的引擎服務于不同的功能。引擎層可通過模型層訪問數據,也可直接訪問數據。
工具層:在引擎層和模型層基礎上,實現零代碼、全可視化方式進行圖表定制。
2.2.1 基于數據模型驅動
報表業務邏輯可用類似結構化查詢語言(:Structured Query Language, SQL)的形式描述,利用其數據查詢語言(Data Query Language, DQL)的查詢功能處理報表數據間的邏輯關系。要實現靈活的條件定制、分組統計,其數據核心就是對獲取SQL的重新組織,但SQL語句是一個非結構化對象,需要將報表數據源結構映射到一個空間數據結構中,建立數據模型對象關系,以此驅動后端報表實現SQL動態組織,即基于數據模型驅動。
空間數據模型是以計算機能夠接受和處理的數據形式,為了反映數據庫實體的某些結構特性和行為功能,按一定的方案建立起來的數據邏輯組織方式,是對實現數據庫結構及業務邏輯的抽象表達。技術思路是將數據模型中的字段、表、業務鏈、業務模型,轉換成點、線、面、體的空間數據模型,每一個數據表的字段為一個點,每一張數據表將點連成線,業務鏈將一張張表串起來組成一個面,多個業務鏈交叉平行組成業務模型體,實現數據模型空間化。空間數據模型實體關系圖如圖2所示。

圖2 空間數據模型實體關系圖
數據模型空間化是通過建立底層規則一步步收斂不確定性的過程。一是定義數據字典,解耦專業術語與數據庫結構,解決表自身的不可描述性問題;二是建立主維度,通常是報表數據源模型描述的基本實體,在油田開發生產管理中主要是指組織機構、開發單元、集輸實體、井等,是數據分析、統計的基本對象;三是構建維度鏈,通過維度鏈可以將某專業相關數據表基于主維度對象串聯起來,實現基于某個維度、跨數據表間的直接數據關聯,即以基本對象為關鍵字的活動數據與主維度的關系;四是級聯數據字典,解決項與項之間的關系。
舉例來說,以井為基本對象的應用,報表表頭如圖3所示。

圖3 某單位采出井日生產數據表
建立空間數據模型流程及有關說明如圖4所示。

圖4 空間數據模型建立流程圖
2.2.2 基于事件驅動
使用基于事件驅動模式確保報表定制工具的高可擴展性,更容易定制且對動態處理有更好的響應。基于事件去驅動報表、圖形及相關功能的調度,方便與用戶界面交互。基于事件驅動模式如圖5所示。

圖5 事件驅動模式
基于事件驅動模式是將單一目的事件定義為基礎組件,具有一定執行順序的組件構成將多個事件串聯使用,適用于報表定制的各類實際應用場景。事件的處理轉換為業務功能處理,當事件處理器A將事件傳遞給事件處理器B時,A不會與該事件的后續處理發生任何聯系,事件處理器組件相互獨立無關聯,事件部署、調度相對容易。
報表定制工具抽取的通用事件如表1所示。

表1 通用事件列表
2.2.3 界面與數據相分離模式
由于B/S架構模式,界面與后臺程序有許多關聯,為了使報表定制工具能夠適配各種業務數據的自動集成,降低界面與數據間的耦合度,提高報表工具的穩定性,同時保障數據的安全性,將界面與數據驅動獨立封裝,設計時實時綁定實現數據庫及數據結構的松耦合。通過報表中提供的數據將格式合理分離,直觀感受報表數據的具體化、格式化與靈活性。當報表定制工具與數據庫交互時,對界面和數據進行解析、組合,從而令數據和界面完全分離,能夠提高軟件開發代碼的復用度,降低數據結構變化和界面改變的相互影響。
報表定制工具通過使用數據與界面相分離模式,實現整體報表完全的結構化處理。界面可以實時根據用戶點擊的對象,按其對應的數據表、數據項、條件,借助模型引擎動態裝配相關圖表數據,實現常規數據挖掘圖表的展示支持,模型引擎動態裝備數據如圖6所示。

圖6 模型引擎動態裝配數據
當用戶通過界面點擊穿透數據項時,依據用戶點擊的數據列、當前列綁定的模型節點、關聯條件、所屬數據表、所屬字段均能準確感知,后臺數據訪問引擎可以按照界面基于數據模型引擎自動生成穿透條件,并根據穿透表目標動態創建穿透報表,或者調用用戶預設的穿透模板,實現自動穿透支持。
2.2.4 邏輯與功能相分離模式
市面上報表定制工具大都為低代碼平臺,做不到無代碼是由于無法支持復雜多變的業務邏輯功能。采用邏輯、功能相分離的原則,將常規功能脫離業務需求單獨封裝,以樹型模式實現邏輯的可視化定制,設計報表時根據用戶需求靈活組合,適配業務邏輯的復雜性與不確定性。
編程架構包含邏輯模塊、功能模塊。確定業務邏輯和通用功能的分工,邏輯完成報表業務數據統計算法,功能實現通用功能比如報表樣式定制。當業務人員使用報表定制工具定義自己的統計算法,設計自己的報表樣式時更清晰、更便利、更易操作。自定義統計算法如圖7所示。

圖7 自定義統計算法
業務人員根據需要隨時添加主維度(如井)中的任意屬性(單位、驅動方式、開發單元等)作為查詢條件,不必定義新的報表或開發新的應用,如圖8所示。

圖8 定義查詢條件
基于模型的報表定制工具,可以由業務人員根據自己的需求獨立完成報表定制,不但降低對人員的要求,統計指標的變化無須定義新的報表,大幅降低工作量,而且面對新的業務需求響應更快,能夠滿足今后一個時期油田開發管理的多變性、復雜性的功能增長需求,同時實現了各專業數據的共享,為結構化數據應用服務提供了新的方向。