[摘 要] 本文采用將OLAP技術與數據挖掘技術視為兩個不相交領域的劃分方法,認為數據挖掘技術是在OLAP技術基礎上更進一步的發展,但這并不意味著在任意領域數據挖掘技術總是比OLAP更為有效;在特定應用場合,例如在目前技術條件下的審計領域,OLAP的技術特點反而更適合審計業務要求,這正是區分OLAP技術與數據挖掘技術的意義所在;在此基礎上,進一步根據數據倉庫存儲方式對幾種不同的OLAP模式進行細分;最后詳細分析了基于MDX查詢的OLAP算法原理,并首次給出了一種完整的基于MDX查詢的OLAP算法的代碼實現。
[關鍵詞] MDX;審計;OLAP;算法
[中圖分類號]F239.1[文獻標識碼]A[文章編號]1673-0194(2008)03-0067-04
1 引 言
通常對OLAP技術與數據挖掘技術的關系有兩種劃分方法:
一種劃分方法是把OLAP技術與數據挖掘技術視為不相交的,數據挖掘比OLAP更進一步;
另一種劃分方法認為OLAP技術中的上鉆、下鉆、切片、切塊等操作都屬于數據挖掘技術的功能,OLAP是數據挖掘的一部分。
本文采用前一種劃分方法,即把聯機分析處理(OLAP)與數據挖掘視為不相交的:OLAP提供了數據匯總、聚集的技術方法,幫助簡化數據分析;而數據挖掘則能自動發現隱藏在大量數據中的隱含模式和知識。
與前面的分類相對應,OLAP工具的目標是簡化和支持交互數據分析,而數據挖掘工具的目標是盡可能自動處理。
在設定OLAP與數據挖掘不相交的前提下,本文通過討論OLAP的核心特征及典型應用,給出了特定條件下能實現OLAP核心特征的基于MDX查詢的OLAP完整算法。
2 OLAP技術的核心特征與典型應用場合
既然采用把OLAP技術與數據挖掘技術視為不相交的劃分方法,那么需要了解OLAP技術的核心特征及其典型應用場合,以揭示區分OLAP技術與數據挖掘技術的意義所在。
動態聯機分析(OLAP)處理技術有3個核心特征:多維觀察、數據鉆取、CUBE運算。借助對審計業務典型應用的分析,有助于清晰理解OLAP的這3個核心特征。
2. 1利用OLAP的多維觀察,對被審計數據進行多角度的觀察
對遇到的各種問題進行分析的時候,即使對同樣的現象,通常也會從多個角度去分析考慮,并且有時候還需要從幾個角度進行綜合分析。這是OLAP分析最基本、最核心的特征:從多個觀察角度的靈活組合來觀察數據,從而發現數據內在規律。
審計最重要的業務特征是需要對特定的被審計數據集合,通過多個不同角度的觀察,以找出數據集合中的可疑之處,即所謂的“雞蛋里面挑骨頭”。而OLAP的從多維角度進行數據分析的最核心特征,恰恰與審計最重要的業務特征相吻合,因此,可以說OLAP是現階段最適合用于支持審計業務的技術,而不是數據挖掘技術。
2. 2利用OLAP的數據鉆取,對可疑的被審計數據進行抽絲剝繭的深入追蹤,以獲得更為精確的信息
在對被審計數據的觀察分析過程中,可能需要在現有數據基礎上,對可疑的被審計數據進一步細化,以獲得更細致更準確的資料,幫助判斷是否有問題存在。審計的這種對可疑問題需要進行層層追蹤的業務特點,恰好可以由OLAP中的數據鉆取功能來滿足。
2. 3利用OLAP的CUBE計算,通過預先創建審計數據立方體,提高審計效率
如果需要順利地利用OLAP的多維觀察、數據鉆取功能提高審計效率,需要預先創建足夠多的被審數據立方體(CUBE),也就是說,需要預先為審計人員準備足夠多的各種形式的被審材料,供審計人員隨時調用。因為收集材料是審計過程中非常耗時的環節,要提高審計效率,必然需要由計算機代替人來完成這個步驟的工作。OLAP的預先創建數據立方體(CUBE)的技術特征也恰恰與審計的這種業務特點相吻合。
OLAP分析所需的原始數據量是非常龐大的,一個分析模型,往往會涉及數百萬條、數千萬條、甚至更多數據;而分析模型中包含多個維數據(即觀察的角度),這些維又可以由瀏覽者作任意的提取組合,結果大量的實時運算導致時間延滯。可以設想,一個對于1 000萬條記錄的分析模型,如果一次提取4個維度進行組合分析,那么實際的運算次數將達到4的1 000次方,將導致數十分鐘乃至更長的等待時間。如果審計人員對維組合次序進行調整,或者增加減少某些維度的話,又將是一個重新的計算過程。而這種可能存在的耗時環節,OLAP可以通過預先創建數據立方體(CUBE)的方法加以解決,保證審計人員無需花費時間等待數據計算結果。
從以上分析可以看到,OLAP的3個核心特征恰恰是與審計業務的特點相吻合的,而且值得注意的是,要充分利用OLAP的這幾個功能支持審計工作,依然需要高度依賴審計人員的判斷,因為OLAP只能提供高效、快捷、準確、詳細的數據,但不提供也無法提供對被審計數據的判斷,OLAP技術只有與審計人員的專業判斷相結合,才能發揮通過技術手段支持業務開展的功能。
這與一些宣稱可以通過數據挖掘技術,直接找到審計問題,基本上可以代替審計人員工作的觀點是完全不同的。認為“通過數據挖掘可以替代審計人員工作”的觀點假定了“數據挖掘技術”可以替代審計人員的專業判斷。事實上,由于對審計數據的專業判斷的因素非常復雜,尚無簡單的邏輯模型能直接加以模仿,這個道理如同目前條件下,不可能有簡單的技術代替“法官審理案件”、“中醫診治病人”的專業判斷一樣。
數據挖掘技術恰恰不應該直接用于替代審計人員的專業判斷上,而是應該通過對審計人員在審計過程的各種復雜行為進行詳細數據積累分析,并對積累得足夠充分的審計人員行為數據進行數據挖掘,以漸漸形成可以模擬審計人員思路的智能模型。
而要獲得這些有價值的審計人員行為數據,需要審計人員的判斷活動基本在一個被審計原始數據足夠充分的審計信息系統里進行,而且該系統有合適的途徑對這些數據進行記錄。一個只需要要提供基于動態聯機分析(OLAP)的審計信息系統便能完全滿足這些業務要求,并且為下一代能模仿審計人員思路的審計信息系統奠定了重要的數據基礎。
由此可見,區分OLAP技術與數據挖掘技術不僅僅是概念上的需要,而且將對具體的應用設計和效果產生巨大的影響。區分OLAP技術與數據挖掘技術可以使本文的討論范圍縮小到只限于OLAP技術的范疇。
3 根據數據倉庫存儲方式區分的OLAP模式
在對OLAP技術與數據挖掘技術進行區分的基礎上,需要對OLAP技術本身進一步細分,以利于具體算法實現的討論。
建立數據倉庫是OLAP實現的前提條件,OLAP有多種實現方法,根據數據倉庫存儲數據的方式不同可以分為ROLAP、MOLAP、HOLAP。通過以下分析,可以看到這幾種方式各有其優缺點。
3. 1ROLAP模式
ROLAP(Relational OLAP)表示利用關系數據庫實現數據倉庫中數據的存儲。即以關系數據庫為核心,利用關系型結構進行多維數據的表示和存儲。ROLAP將多維數據庫的多維結構劃分為兩類表:一類是事實表,用來存儲數據和維關鍵字;另一類是維表,即對每個維至少使用一個表來存放維的層次、成員類別等維的描述信息。維表和事實表通過主關鍵字和外關鍵字聯系在一起,形成“星型模式”。對于層次復雜的維,為避免冗余數據占用過大的存儲空間,可以使用多個表來描述,這種星型模式的擴展稱為“雪花模式”。
ROLAP的最大好處是可以實時地從源數據中獲得最新數據更新,以保持數據實時性;缺陷在于運算效率比較低,用戶等待響應時間比較長,其原因是ROLAP缺少了用MOLAP實現時所具有的內在索引功能。相反,給定表格中的每個記錄必須包括所有的屬性值任何集合的或摘要的數據,可能會抵銷掉一些節省出來的存儲空間,而隱式索引的缺少意味著必須提供手工顯式的索引。
3. 2MOLAP模式
表示基于多維數據組織的OLAP實現(Multidimensional OLAP)。即以多維數據組織方式為核心,也就是說,MOLAP使用多維數組存儲數據。多維數據在存儲中將形成“數據立方體(Cube)”的結構,此結構在得到高度優化后,可以最大程度地提高查詢性能。隨著源數據的更改,MOLAP 存儲中的對象必須定期處理以合并這些更改。兩次處理之間的時間將構成滯后時間,在此期間,OLAP對象中的數據可能無法與當前源數據相匹配。維護人員可以對 MOLAP 存儲中的對象進行不中斷的增量更新。MOLAP的優勢在于,由于經過了數據多維預處理,分析中數據運算效率高;主要的缺陷在于數據更新有一定延滯。
MOLAP數據立方體計算比ROLAP(基于記錄的關系)計算快得多。與ROLAP不同,MOLAP的數組結構不需要節省空間存放查找關鍵字。此外,MOLAP使用直接數組尋址,比ROLAP基于關鍵字尋址要快。
然而,這一結論僅對維數相對較少的數據立方體成立,因為要計算的立方體個數隨維數指數增長,從而出現所謂的維增長災難。對于非常大的多維數據集, MOLAP方案并不總是有效的。隨著維度數目的增加,立方體變得更稀疏,即表示某些屬性組合的多個單元是空的,沒有集合的數據。相對于其他類型的稀疏數據庫,數據立方體往往會增加存儲需求,有時會達到不能接受的程度。壓縮技術能有些幫助,但利用這些技術往往會破壞MOLAP的自然索引,從而大大降低相對于ROLAP的優勢。
3. 3HOLAP模式
表示基于混合數據組織的OLAP實現(Hybrid OLAP),用戶可以根據自己的業務需求,選擇哪些模型采用ROLAP,哪些采用MOLAP。一般來說,會將不常用或需要靈活定義的分析使用ROLAP方式,而常用、常規模型采用MOLAP實現。
原理可簡單描述為:常規模式下,采用MOLAP以獲取最大的應用效率;但是在用戶使用參數對數據進行實時的精確提取并創建分析時,或者OLAP Server未找到對應的MOLAPCUBE時,系統將實時地向源數據庫請求相關數據,并自動創建臨時CUBE供瀏覽端分析使用,即ROLAP模式。
通過以上兩者的結合,用戶不僅能快速地調用常用分析模型,同時對臨時的、個性化的精確數據提取也能有效支持,從而兼顧OLAP的效率和靈活性。這是一種非常有前途的模式,在實現上卻是最復雜的。
在前一小節對OLAP技術與數據挖掘技術進行區分的基礎上,本小節對OLAP技術本身進行進一步的細分,并可以確定本文后面討論的OLAP算法實現將基于ROLAP模式。
4 基于MDX查詢的OLAP算法研究
通過前面對數據挖掘技術及OLAP技術本身進行恰當細分后,本節討論基于MDX查詢的ROLAP算法及其具體實現。
MDX是一種功能完備、基于語句的腳本語言,用于定義、使用以及從多維對象中檢索數據。它的形式也有點類似SQL,同樣也包括DDL、DML、DCL等,但MDX不是SQL語言的擴展。事實上,MDX所提供的一些功能也可由SQL提供,盡管不是那么有效或直觀。
下面通過一個常見的“統計某年各個地區、各類產品的銷售情況”典型實例,對基于MDX查詢的OLAP算法工作原理做較詳細的分析。
顯然,本節討論的OLAP算法具有使用ROLAP模式的最大優點,即可以實時地從源數據中獲得最新數據更新,保持數據實時性;其缺陷在于運算效率比較低,等待響應時間比較長。
本文討論的基于MDX查詢的OLAP算法使用JAVA語言編寫,具有上鉆、下鉆、切片、切塊和鉆取元數據等分析功能,它解析MDX查詢語言,從關系數據庫聚合相關數據,并通過特定的JAVAAPI用多維的格式展現查詢結果。OLAP是通過各種MDX查詢滿足各種分析功能,所以其核心是解析MDX查詢語言,圖1是OLAP處理MDX查詢的事件流。
下面通過一個查詢例子說明其原理:

(1)建立Connection連接對象
Connection對象是一個連接到多維數據庫的對象,通過Driver Manager對象創建,其包含兩類信息:一是數據庫的連接信息,例如數據庫IP、賬號和密碼等,通過讀取相關配置文件獲得;二是數據倉庫元數據對象,例如立方體、維表、度量和計算成員等信息,這些信息定義在XML文件中。
(2)轉換MDX查詢語句為Query查詢對象
通過Connection對象將MDX查詢語句轉換為Query查詢對象。通過使用支持JAVA的語法解析器,預先定義MDX語法的規則(規則中包含了MDX語法中各元素所對應的對象),把MDX語句轉換為包含若干元素對象的Query對象,并通過Connection對象中的元數據對象檢驗Query中的對象,判斷其是否是一個正確的、可執行的MDX語句。
在這個例子里,Query對象中包括列軸、行軸、切片軸和立方體(Sales)信息。列軸也就是度量軸,包括Unit Sales、Store Cost和Store Sales 3個成員;行軸也就是維軸,其由Crossjoin函數組成,Crossjoin函數的作用是求其兩個參數的笛卡兒積,其兩個參數都是Children函數,Children函數是代表當前成員的所有子成員;切片軸定義了切片的條件,這里是時間維的成員2006。

(3)解析Query查詢對象,返回查詢結果ROLAP Result
Query查詢對象被檢驗有效后,可通過Connection對象對其進行解析。
首先確定度量維、Promotion Region維、Product維和時間維的當前成員,也就是確定MDX查詢所用到的維的當前成員,在這個例子里,度量維和時間維的成員已直接定義,Promotion Region維和Product維的當前成員則根據Children函數通過查詢維表確定。
確定成員后,然后確定成員的位置,主要是確定列軸和行軸上的成員位置。根據列軸的定義,可知道有3個位置,每個位置上有一個成員,分別對應那3個度量;行軸上的位置由Crossjoin函數決定,該函數將Promotion Region維和Product維上的成員做笛卡兒運算,結果有N*M個位置,每個位置上有兩個成員,分別是Promotion Region維和Product維的成員。
位置確定后,求計算單元的值。列軸上的位置相當于y坐標,行軸上的位置相當于x坐標,每個(y,x)就決定了一個計算單元,而計算單元的值就由位置上的成員決定。例如在廣州地區銷售的飲料的銷售數量這個計算單元就由“地區”、“飲料”和“銷售數量”這3個成員決定,根據定義的元數據生成相關的統計SQL查詢語句,再根據數據庫的配置信息執行SQL查詢,從而計算出該計算單元的值。用同樣的方法求出每個計算單元的值。
由于每次MDX查詢都需要大量的SQL查詢,所以為了減少查詢次數,加快運行的效率,使用了Cache機制,Cache每個計算單元的值以便重用,Cache的關鍵字是查詢SQL,這樣每次計算單元的值時,先根據生成的SQL在Cache中查找,若有符合的直接返回Cache中的值,否則再執行該SQL,同時將執行結果放到Cache。
所有的計算單元值可以存放到ROLAP Result對象中,并返回給客戶端,客戶端通過特定的API將ROLAP Result對象中的數據展現出來。
5 結束語
本文所討論的基于MDX查詢的OLAP算法,在大型審計應用項目中得到成功應用。研究更加高效的、不依賴具體數據庫類型以及MDX查詢的OLAP算法將是下一階段的主要努力方向。
主要參考文獻
[1] W H Inmon著. 數據倉庫[M]. 王志海等譯. 北京:機械工業出版社,2003.
[2] Jiawei Han,Micheline Kamber.Data Mining[M]. 北京:高等教育出版社,2005.
[3] 毛國君等. 數據挖掘原理與算法[M]. 北京:清華大學出版社,2005.
[4] Ian H Witten,Eibe Frank. 數據挖掘:實用機器學習技術[M]. 董琳等譯. 英文版. 第2版. 北京:機械工業出版社,2006.
[5] 中國標準出版社. 《信息技術會計核算軟件數據接口GB/T19581-2004》實施指南[M]. 北京:中國標準出版社,2005.
[6] 中華人民共和國財政部. 企業會計準則[S]. 2003.