張健+張建琳



摘 要: 企業的信息系統是一個由傳統系統、不兼容數據源、數據庫與應用所共同構成的復雜數據集合,各部分之間彼此獨立。為了保證智能決策的需要,對數據源中的源數據按照一定的數據轉換原則進行映射和轉換,通過對異構數據源的抽取、轉換、裝載,從已有傳統環境與平臺中采集數據進而形成目標數據源,并使用存儲過程、觸發器、中間表和動態SQL語句進行查詢優化,采用哈希表存儲解析后的數據,初步建立數據倉庫,實現數據聚合。結合角色控制的方法對目標數據源進行多維度報表展示,將海量的應用數據轉換為有價值的信息,為企業智能決策提供有效的數據支持。
關鍵詞: 數據源; 元數據; 數據抽取; 智能決策
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2015)12?0025?04
0 引 言
隨著軍工行業科研任務的逐漸增加、科研隊伍的持續壯大以及信息化進程的不斷推進,每天都會產生大量的科研數據和管理數據,因此如何通過系統、高效的手段分析并利用這些數據就顯得尤為重要,這需要通過合理的手段對數據進行加工分析、提煉升華。
目前,由于企業業務系統開發有一個較長的時間跨度,這就造成同一種數據在業務系統中有多種完全不同的存儲格式,形成不同的數據源[1]。在這種情況下,本文提出使用ETL工具將數據從各種原始的業務系統中讀取出來,按照預先設計好的規則將抽取的數據進行轉換,將分布的、異構數據源中的數據抽取到中間表,使本來異構的數據格式能統一起來,并將轉換后的數據倒入到數據倉庫中,最終進行報表展示。通過報表服務處理科研和管理數據,結合角色管理的方法實現用直觀的方式展現數據,進而發現數據變化規律,提煉有價值的數據信息,為更好的管理和決策提供一種數據參考。
1 數據抽取、轉換、裝載
1.1 數據抽取、轉換、裝載模型
目前,因為現有業務數據源多,為保證數據的一致性,真正理解數據的業務含義,保證跨越多平臺、多系統的數據整合,最大可能提高數據的質量,滿足業務需求不斷變化的特性,需將各子系統上的數據進行抽取、清洗和轉化處理,然后加載到目標數據庫。數據抽取、轉換、裝載模型如圖1所示。
數據抽取過程為從數據源開始通過數據清洗過濾掉數據源中不需要的源數據字段,清洗后的數據通過源數據映射將各局部數據視圖按照源數據映射的方式轉換成語義語法一致的數據[2],通過映射,源數據定義了數據源的位置及數據源的屬性、確定從源數據到目標數據的對應規則、確定相關的業務邏輯后插入臨時數據庫中[3],并通過定義的業務規則進行格式和類型轉換獲取符合需要的數據,轉換完的數據仍存放在臨時數據庫中,然后通過SQL語句進行裝載將數據從臨時數據庫遷移到目標數據庫。
1.2 數據轉換原則
數據轉換是按照數據倉庫的數據結構,對源數據源每條記錄進行處理,轉換后寫入目標數據源。在進行數據轉換時,由于數據源之間存在不一致的問題[4],通過數據轉換統一數據名稱和格式,同時對于數據源中不存在的數據創建新的視圖并進行相應的轉換。
在整個過程中堅持原則為:
(1) 直接引用:數據源字段和目標字段格式和名稱相同,不做任何轉換;否則,按以下第(2)~(8)條處理。
(2) 字符串操作:從數據源的數據列中獲取部分數據作為目標數據庫的某個字段,需對字符串作轉換數據類型、截取字符串、連接字符串等操作。
(3) 列間運算:對于數值型數據列來說,有時需數據源的一個或多個數據列進行數學運算生成目標數據,并對生成的目標數據進行格式轉換。
(4) 空值轉換:對于數據源字段中的空值,可能在轉換過程中出現異常,因此必須把空值轉換成指定的數據類型和固定的值。
(5) 統一日期格式:若目標數據源與數據源日期格式不同,需通過日期格式轉換,轉換成相同的日期格式。
(6) 聚合運算:對目標數據源需要展示的匯總數據,一般需要通過對數據源中一個或多個數據列運用聚合函數來實現,如sum,avg,count,max,min等函數。
(7) 取固定值:目標字段取一個固定的或是依賴系統的值,如系統時間、常數值等,與數據源數據無關。
(8) 增量裝載:根據源系統的更新時間或其他標識來記錄那些自上次裝載以后發生變化的數據,增量加載到目標數據庫中。
1.3 數據映射及轉換過程
為了實現數據的轉換,通過接口提取數據源,首先使用JDBC連接和存取數據庫的應用程序接口(API)[5],通過建立數據源、裝入JDBC驅動程序、建立連接、執行SQL語句、檢索結果等過程最終實現數據庫的訪問。然后通過預先建好到各平臺的“數據庫鏈接(Database link)”,最終實現數據的抽取。JDBC功能結構圖如圖2所示。
通過JDBC與不同數據源進行連接,進而訪問相應數據,然后通過解析器對數據進行解析。采取哈希表來存儲解析后的數據,因哈希算法的算法復雜度為常數,即在常數時間內可找到目標數據,相比一般線性表N(log2N)的復雜度有明顯優勢。從而提供高性能的元數據映射,形成各類數據源信息的數據映射表,主要屬性包括數據源類型、數據源標識、目標數據源標識、表名、字段名。具體映射步驟為:
(1) 讀取生成的哈希表;
(2) 遍歷整個哈希表的關鍵字;
(3) 對每個關鍵字從數據映射表中找到匹配的數據源類型和數據源標識;
(4) 根據匹配項轉化成以目標數據源標識為關鍵字的記錄項。
完成上述操作之后,使用convertDataToSQL函數將表名、字段名,還有數據特征值動態的拼裝成SQL語句,然后通過JDBC將動態生成的SQL語句插入到數據庫。代碼實現如下:
public class SQLTool{
String convertDataToSQL(String TableName, ArrayList
……
return TableName;
}
數據從抽取、轉換到裝載的整個過程基本是通過控制用SQL語句編寫的存儲過程和函數的方式來實現對數據的直接操作,SQL語句的效率將直接影響到數據倉庫后臺的性能[6]。本文從以下幾個方面提高工作效率。
(1) 使用存儲過程和觸發器。與數據的更新頻率相比,統計報表一般間隔時間較長,如年報表等。針對這類情況,一般通過后臺的存儲過程實現報表統計,這樣既在一定程度上減少了查詢統計時間,又保證了前臺應用程序的響應速度。
create procedure proc1( ) //創建存儲過程
create trigger tr1 //創建觸發器
insert on datetime1 //根據設定時間, 增量更新數據
referencing create1 as newcreate
for (i=0; i { execute procedure pro1( ) //觸發存儲過程,生成報表統計 }; (2) 新建中間表和視圖。當對源數據庫進行操作時,為了保證源數據庫的穩定和數據安全,使用中間表存儲映射后的數據。如果只需對數據表中的部分數據進行報表展示,可為相關的數據表建立視圖,項目統計時操作中間表或新建視圖,從而保證了數據安全有效,大大提高報表生成速度。 (3) 使用動態查詢語句并進行優化。各數據表之間存在很大的相似之處,報表統計的查詢語句相差不多,通常只是部分條件語句有所差異。此時,使用動態的查詢語句來實現。條件語句可以在執行時才傳遞相應的參數值,這樣就可以把幾個報表統計通用查詢語句合寫為一個動態查詢語句,進而提高程序代碼的可維護性、實現代碼復用、增加可讀性,一定程度上也提高了統計查詢的相應速度。為了提高統計查詢效率,當在數據表中進行數據的增刪改等操作時,優化查詢語句。 2 報表展示示例 為了實現各報表在企業門戶中集中展示,首先將現有的人力資源、OA、協同平臺、網上報銷、工資查詢等系統的多種類型的數據源通過數據的抽取、轉換、裝載形成目標數據源,然后通過角色控制的方式對報表進行多維度展示。企業門戶系統的報表展示模型如圖3所示。 2.1 角色控制 根據業務需求,并不是每個人看到的報表內容均相同。為了區分展示權限,將用戶分為單位領導、總師、部門領導和一般員工4種角色,采用角色管理的方式控制展示內容,各角色對應的展示內容如圖4所示。 2.2 報表設計 以項目完成情況為例,根據角色定義圖,一般員工只能看到個人項目情況,單位領導則關注所有項目進度。個人項目情況展示時,首先通過物理表之間的關系,通過人員表中的員工編號與項目完成情況表中的員工編號進行查詢預過濾,最后形成個人參與項目完成情況報表統計,展示過程如圖5所示。所有項目進度展示時,把目前所有項目進展狀況展示即可。 3 結 語 本文提出通過數據的抽取、轉換、裝載及報表展示的方法,將不同數據來源的異構數據充分整合,解決了數據有效性和一致性的問題,初步建立數據倉庫。實現了多數據源多數據類型的數據聚合,將人力資源、OA、協同平臺、網上報銷、工資查詢等系統中相關報表數據在門戶中集成展現或圖形化展現,方便用戶直觀、全面地了解各系統中相關信息。同時,通過角色控制的方式對業務進行不同維度建模展示,形成分析對比,將科研數據轉化為有用的知識,為企業智能決策提供直觀的業務數據支持。 參考文獻 [1] 申利民,袁立松,李峰.基于SOA的報表服務模型設計[C]//2010年全國現代制造集成技術(CMIS)學術會議論文集.北京:計算機集成制造系統編輯部,2010:1020?1024. [2] 岳亮,孫涌,張書奎.基于Web的報表系統通用開發平臺的設計與實現[C]//中國信息技術應用學術研討會論文集.北京:中國信息產業商會,2009:130?135. [3] 李興勇,袁兆山,汪正海.復雜報表生成系統實現技術研究[J].計算機應用,2007(7):1821?1824. [4] 高鵬.基于動態DW+Formula1技術的集成式通用報表模型研究[J].計算機應用,2009(11):137?140. [5] 李芝興,楊瑞龍.Java EE Web編程(Eclipse 平臺)[M].北京:機械工業出版社,2008. [6] LARSON Brian, 薛瑩,董梁.Microsoft SQL Server 2005 Reporting Services 專家教程[M].北京:清華大學出版社,2008.