1 引 言
隨著信息化時代的到來,企業(yè)紛紛建立起了自己的數(shù)據(jù)庫應用系統(tǒng),由計算機管理代替手工操作,以此來收集、存貯、管理業(yè)務操作數(shù)據(jù),改善辦公環(huán)境,提高操作人員的工作效率。這類系統(tǒng)主要是傳統(tǒng)的數(shù)據(jù)庫應用系統(tǒng),是面向業(yè)務操作設(shè)計的。但在面對越來越激烈的市場競爭時,企業(yè)必須把業(yè)務經(jīng)營同市場需求聯(lián)系起來,在此基礎(chǔ)上作出科學、正確的決策,以求生存和發(fā)展。越來越多的企業(yè)認識到,只有靠充分利用、發(fā)掘其現(xiàn)有數(shù)據(jù),才能實現(xiàn)更大的效益。面向業(yè)務操作的系統(tǒng)越來越難以滿足這種需求,因此面向分析操作的數(shù)據(jù)倉庫系統(tǒng)應運而生,在此基礎(chǔ)上為了提高面向分析的操作性能發(fā)展起了在線聯(lián)機分析處理(OLAP)技術(shù),它目標是提供給用戶從多種角度快速、穩(wěn)定、交互地存取數(shù)據(jù),以便深入觀察數(shù)據(jù),為決策提供支持。OLAP以多維的方式來組織和顯示數(shù)據(jù),它的一個重要特點是多維數(shù)據(jù)分析,多維分析是指對以多維形式組織起來的數(shù)據(jù)采取切片、切塊、旋轉(zhuǎn)、上卷、下鉆等各種分析動作,以求剖析數(shù)據(jù),使最終用戶能從多個角度、多側(cè)面地觀察數(shù)據(jù)庫中的數(shù)據(jù),從而深入地了解包含在數(shù)據(jù)中的信息、內(nèi)涵。
該文提出了一種多維數(shù)據(jù)的二維表格形式展現(xiàn)的設(shè)計,并給出了實現(xiàn)的算法,通過此工具可以支持多維分析的各種分析動作,將數(shù)據(jù)直觀地展現(xiàn)在最終用戶面前。
2 數(shù)據(jù)倉庫與聯(lián)機分析處理技術(shù)
2.1 數(shù)據(jù)倉庫
著名的數(shù)據(jù)倉庫專家W.H.Inmon在其著作《Building the Data Warehouse》一書中給予如下描述:數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrate)、相對穩(wěn)定的(Non-Volatie)、反映歷史變化(Time Variant)的數(shù)據(jù)集合,用于支持管理決策。整個數(shù)據(jù)倉庫系統(tǒng)是一個包含數(shù)據(jù)源,數(shù)據(jù)的存儲與管理,OLAP服務器,前端工具四個層次的體系結(jié)構(gòu),具體如圖1所示。
圖1 數(shù)據(jù)倉庫系統(tǒng)體系結(jié)構(gòu)
2.2 聯(lián)機分析處理(OLAP)
關(guān)系數(shù)據(jù)庫之父E.F.Codd提出了多維數(shù)據(jù)庫和多維分析的概念,即OLAP。維就是人們觀察數(shù)據(jù)的角度,維存在細節(jié)程度不同的多個描述方面,維的多個描述方面稱為維的層次。例如,時間維有日、月、季、年等層次來描述。多維數(shù)據(jù)一般都以數(shù)據(jù)立方體的結(jié)構(gòu)存放。它用三維或更多的維數(shù)來描述一個對象,每個維彼此垂直。數(shù)據(jù)的測量值發(fā)生在維的交叉點上,數(shù)據(jù)空間的各個部分都有相同的維屬性。如圖2所示。
圖2 數(shù)據(jù)立方體
2.3 多維數(shù)據(jù)分析
多維數(shù)據(jù)分析是OLAP的一個重要屬性,是指對以多維形式組織起來的數(shù)據(jù)采取切片、切塊、旋轉(zhuǎn)、上卷、下鉆等各種分析動作,以求剖析數(shù)據(jù),使最終用戶能從多個角度、多側(cè)面地觀察數(shù)據(jù)庫中的數(shù)據(jù)。
(1)切片(Slice)與切塊(Dice):切片是指在多維數(shù)組的某一維上選定一維成員的動作稱為切片,切塊在多維數(shù)組的某一維上選定某一區(qū)間的維成員的動作稱為切塊,即限制多維數(shù)組的某一維的取值區(qū)間。顯然,當這一區(qū)間只取一個維成員時,即得到一個切片。
(2)旋轉(zhuǎn):是改變一個報告或頁面顯示的維方向。例如,交換行和列,或是把行維移到列維中去,或是把頁面顯示中的一個維和頁面外的維進行交換。
(3)上卷(Roll Up)與下鉆(Drill Down):上卷是在某一維上將低層次的細節(jié)數(shù)據(jù)概括到高層次的匯總數(shù)據(jù),或者減少維數(shù);而下鉆則相反,它從匯總數(shù)據(jù)深入到細節(jié)數(shù)據(jù)進行觀察,或增加新維。這兩者都是改變維的層次和變換分析的粒度的操作。
3 二維形式表格工具的設(shè)計思想
數(shù)據(jù)倉庫是按主題組織數(shù)據(jù)的,每個主題可以看作是一個數(shù)據(jù)立方體,一般每個數(shù)據(jù)立方體都有好幾個維,每個維內(nèi)又有一些層次。復雜的數(shù)據(jù)立方體在展現(xiàn)上缺乏直觀性,尤其當維度超出三維后,數(shù)據(jù)的表示就比較困難,因此這里采用一種二維表格的形式來表示整個數(shù)據(jù)立方體,并在此之上進行多維分析操作。數(shù)據(jù)立方體中的維都被劃分到行維或列維兩種維度中去,在二維表的固定行和固定列中用樹型結(jié)構(gòu)體現(xiàn)維的層次結(jié)構(gòu)和層次關(guān)系,在行維和列維交織成的二維表中顯示相應的度量數(shù)據(jù),實現(xiàn)以二維表格反映多維特征,提供數(shù)據(jù)立方體的可視化表示。
該設(shè)計的關(guān)鍵在于要在二維表中的固定行和固定列中用樹型結(jié)構(gòu)體現(xiàn)維的層次結(jié)構(gòu)和層次關(guān)系。實現(xiàn)的方法是在固定行和固定列的每個單元格對象中加入能反映層次關(guān)系的屬性,并在單元格的一端留出適當?shù)目瞻,在空白中用加減號顯示有沒有下一級層次和下一級層次有沒有展開,并畫出反映層次的樹枝。在單元格中添加方法,使程序能響應用戶鼠標的點擊,完成下一級層次單元格的收放,這樣的單元格稱為樹型單元格。在此類單元格支持的基礎(chǔ)上,將固定行和固定列中的單元格統(tǒng)一管理,形成樹型固定行和樹型固定列對象,提供獲取單元格類型、插入或刪除子樹、設(shè)置擴展一層單元格、設(shè)置收起下面所有層單元格等方法。通過樹型單元格對象與樹型固定行和固定列對象的配合實現(xiàn)用戶的上卷和下鉆操作。如圖3所示。
圖3 樹型列單元格與樹型固定列對象
由于用戶的切片、切塊和旋轉(zhuǎn)操作涉及大量數(shù)據(jù)的檢索和計算,因此客戶端將用戶的選擇變成相應的查詢請求提交給后臺的OLAP服務器進行,然后通過記錄集或多維數(shù)組的形式接收服務器返回的結(jié)果,然后再顯示到二維表格中。客戶端向后臺的OLAP服務器發(fā)出的查詢請求中包括用戶選擇了哪些維中的哪些層次,選擇了什么值,以什么樣的順序進行分組。本質(zhì)上就是一個具有如下形式的多維查詢:
Select 某變量 from 某數(shù)據(jù)立方
Where 切片層次 1=Value1 and … 切片層次 n=ValueN
Group By 層次 1,…,層次n
4 二維形式表格工具的實現(xiàn)
樹型列單元格和固定列對象配合在列的方向上實現(xiàn)樹型結(jié)構(gòu)。
樹型列單元格的定義為:
Object TreeFixedColumnCell{
Int iRow,iCol;//單元格所在的行和列的編號
Int iHeight,iWidth;//單元格的高度和寬度
Int iLevel;//單元格所在的層次在樹中的層號,層號從1開始
Bool IsVisible;//是否可見
String strText;//單元格的內(nèi)容
DrawTreeGragph()//設(shè)置單元格左邊的空白,并在空白中畫出表示下一層狀態(tài)的+/-號和反映層數(shù)的樹枝
}
樹型固定列的對象的定義為:
Object TreeFixedColumn{
Int iRowCount;//被其管理的樹型列單元格的個數(shù)
TreeCellHasPlusMinus(iRow);//判斷指定行是否有下一級的層次
InsertTreeBranch(iRow,TreeStru);//在指定行下插入一個TreeStru結(jié)構(gòu)的子樹
TreeExpandOrCollapse(iRow);//判斷下一步是擴展還是收起下面的層次
TreeExpandOneLevel(iRow);//在指定行下展開下一層的單元格
TreeCollapseAllSubLevel(iRow);//將指定行下所有層次的單元格收起
TreeDisplayLines(n);//設(shè)置處是顯示時展開到第& 層
TreeRefreshRows();//按照樹型單元格的可見屬性調(diào)整被其管理的樹型列單元格的高度后重畫整個表格
}
樹型行單元格和固定行對象配合在行的方向上實現(xiàn)樹型結(jié)構(gòu),它們的定義與列上的基本一致,只不過是將行和列的操作對換了一下。當重畫整個表格時,系統(tǒng)自動根據(jù)每個單元格的長和寬重新在客戶端的屏幕上繪制出來。
可以看到,這種實現(xiàn)方法中上卷操作實際上并不刪除行或列,而是使它們的高度或?qū)挾仍O(shè)為0,使用戶看不到它們,當用戶再次作下鉆操作時可再將它們顯示出來,而不用再次發(fā)起查詢請求。這樣就節(jié)省了系統(tǒng)的各種開銷,如網(wǎng)絡(luò)帶寬、服務器和客戶端CPU利用率等。此方法并不保存一個樹型的結(jié)構(gòu),而是通過對相鄰單元格的層號和可見屬性的計算,設(shè)置相應的可見屬性,再通過單元格自身的繪制方法在用戶面前展示出樹型的結(jié)構(gòu)。這種方法具有復雜度低、運算量小等優(yōu)點。
5 數(shù)據(jù)的填充
5.1 填充算法
由以上結(jié)構(gòu)的表格可知,表格里將顯示用戶所選維的所有不同層次的不同粒度的數(shù)據(jù)。因此服務器端將返回給客戶端包含各種粒度的聚集數(shù)據(jù)的一組記錄集或一組多維數(shù)組,這一組記錄集根據(jù)所有層次在固定行和固定列中的分布情況進行編號,聚集程度越高編號越小。如固定列的維的層次分別是a,b,固定行的維的層次分別為d,e,f,M代表變量,則記錄集的編號順序如下:
記錄集[0]的字段順序為a,d,M
記錄集[1]的字段順序為a,d,e,M
記錄集[2]的字段順序為a,d,e,f,M
記錄集[3]的字段順序為a,b,d,M
記錄集[4]的字段順序為a,b,d,e,M
記錄集[5]的字段順序為a,b,d,e,f,M
在此基礎(chǔ)上,填充算法如下:
根據(jù)所選維的層次關(guān)系從記錄集中讀取數(shù)據(jù)在表格的第一行上用樹型行單元格和樹型固定行對象構(gòu)造樹型結(jié)構(gòu),在第一列上用樹型列單元格和樹型固定列對象構(gòu)造樹型結(jié)構(gòu):
FOR 每一行 DO
FOR 行中的每列 DO
獲取所在行的樹型列單元格的層號i
獲取所在列的樹型行單元格的層號j
從編號為[(i-1)*固定行對象的層次總數(shù)+j-1]的記錄集中讀取一條記錄
IF 該條記錄的維的層次值與該單元格所在的行和列上樹型結(jié)構(gòu)的值一致
THEN
將記錄中的變量值填入單元格中,該記錄集的指針向下移一條
ELSE
在單元格中填入默認值
END IF
END FOR
END FOR
5.2 數(shù)據(jù)的動態(tài)填充
上面介紹的填充算法要求將用戶選定的所有維的所有層次的數(shù)據(jù)一次性的填充進表格中,這需要后臺的OLAP服務器返回各種程度聚集操作的結(jié)果,需要進行大量的查詢和計算。當數(shù)據(jù)量很大時,在性能上就會變得很差,很難保證能在較短時間內(nèi)返回的查詢結(jié)果。而與此同時,最終用戶在通過二維表格觀察數(shù)據(jù)時,很少需要從最開始就看到所有層次的數(shù)據(jù),而是先看聚集程度較高的層次,然后根據(jù)自己關(guān)心的領(lǐng)域和程度,有選擇地進行下鉆操作,直到最后也不一定將所有層次的數(shù)據(jù)都看到。這就允許在返回查詢結(jié)果時,不返回全部層次的結(jié)果,而只是返回一部分聚集程度較高的結(jié)果,只把這部分數(shù)據(jù)填入表格,而展現(xiàn)給用戶的層次也最多只到有數(shù)據(jù)填充的層次。當用戶進行進一步下鉆操作時,將用戶所作的選擇提交給OLAP服務器進行查詢, 返回結(jié)果后再填充進相應的單元格中。由于下鉆時只擴展一層,因此查詢量很小,所花費的時間在可承受范圍之內(nèi),當系統(tǒng)性能好時,用戶基本感覺不到。這種填充方式稱為動態(tài)填充。
6 結(jié)束語
文章提出了一種多維數(shù)據(jù)用二維表格形式展現(xiàn)的方法,實現(xiàn)以二維表格反映多維特征,提供數(shù)據(jù)立方體的可視化表示。并考慮大數(shù)據(jù)量時,查詢性能可能產(chǎn)生的問題,采用動態(tài)填充技術(shù),在不影響用戶觀察數(shù)據(jù)的情況下,大大提高了數(shù)據(jù)查詢速度。目前已代碼實現(xiàn)了此方法,展現(xiàn)結(jié)果如圖4所示,并在中科院計算技術(shù)研究所智能信息處理重點實驗室開發(fā)的多策略通用數(shù)據(jù)采掘工具MSMiner中獲得應用,取得了較好的效果。
圖4 多維數(shù)據(jù)展現(xiàn)結(jié)果
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領(lǐng)域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:數(shù)據(jù)倉庫中多維分析的數(shù)據(jù)展現(xiàn)
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1082056127.html