用MSChart展示多維數據集

作者: 生魚片  來源: 博客園  發布時間: 2009-03-19 01:40  閱讀: 2747 次  推薦: 0   原文鏈接   [收藏]  

        之前談到過用MSChart可以比較直觀方便的實現對多維數據集的展示,做得比較粗略。這次詳細介紹下我的經驗,并提供主要的試驗代碼段。

       有必要強調一下,對多維數據集的展示,層次性是非常必要的。多維數據集本身就是帶有層次結構的,如何直觀而又不產生歧義的正確展示出其原本的數據集合結構,成為眾多據倉庫展示工具軟件開發商關心的問題。在選型方面,目前市場上已經有比較多的選擇,相當多的第三方圖形控件就已經直接支持多維數據集的展示,即直接把CellSet結果賦給該控件的DataSource即可。但是這些目前畢竟是市場化的東西,作為個人開發學習沒有必要去購買---試用版的由于其種種限制,給人感覺很不舒服。

       FoodMart 2000做例子,比如要分析第一季度(Q1)、第二季度(Q2)的食品(Food)、飲料(Drink)在加利福尼亞州(CA)、俄勒岡州(OR)、華盛頓(WA)的Store cost Store sales 的情況,使用如下的MDX語句分析:

SELECT

{ { { [Customers].[State Province].&[CA], [Customers].[State Province].&[OR], [Customers].[State Province].&[WA] } * { [Measures].[Store Cost], [Measures].[Store Sales] } } } ON COLUMNS ,

{ { { [Product].[Product Family].&[Drink], [Product].[Product Family].&[Food] } * { [Time].&[1997].&[Q1], [Time].&[1997].&[Q2] } } } ON ROWS 

FROM [Sales]

先看在FlexGrid的展示結果:

 

能夠非常清晰的產看各個區域的對應的值。

如果只是想要看一下趨勢,這個時候用圖形分析就顯得更加直觀:

 

而且圖形展示可以任意行列切換:

 

圖形展示的缺點是不能察看所有具體的值(全都在圖形上展示出來也可以,但是會顯得很擁擠),這個沒有關系,我們可以在選擇某個系列的時候顯示實該系列的所有值:

 

由于某些客觀因素,僅提供我的測試代碼,也就沒有用到CellSet

1.         首先設置行列標簽數和行列數

 

MSChart1.DataGrid.SetSize(rowLabelCount, columnLabelCount, rowCount, columnCount); 

 

2.       接下來就可以給MSChart賦值,賦值由兩種方式:

1)         各個單元分別賦值:

1int[,] a = new int[8,6];//備用
2            for (short i = 1; i <= 8; i++)
3            {
4                for (short j = 1; j <= 6; j++)
5                {
6                    MSChart1.DataGrid.SetData(i,j,Convert.ToDouble(i*2+j),0);
7                    a[i-1,j-1]= i+j*3-1;
8                }

9            }

 

 2)        直接賦一個二維的數組值:

MSChart1.ChartData = a;

這里有一點要注意,如果使用這種方式,必須先填充數據,再填充標簽,否則所填標簽會失效。

3.       填充標簽,如何體現多維數據集的層次結構,這是關鍵的一步。具體填充標簽的時候,可以先對各個級別的標簽進行分析,合并連續重復的文字標簽,進行金字塔式的填充。在我的試驗中沒有標簽分析的函數,而是在知道層次結構的情況下進行的填充,代碼都比較簡單。

填充標簽 填充標簽結束    

 

 

 

 

 

4.       試驗的圖片保存效果是這樣的:

 

   

3D效果:

 

 

0
0
 
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()