用ADOMD.NET访问OLAP多维数据集的应用研究

2011-09-22 03:42许小红
卷宗 2011年7期
关键词:选项卡语句应用程序

1 ADOMD.NET结构

ADOMD.NET是一个标准的.NET数据提供者,它主要用来与多维数据源进行通信。它使用 XML for Analysis version1.1标准的数据提供者连接数据源,使用TCP/IP或HTTP流传输和接受SOAP请求[1]。ADOMD.NET它提供了一种编程的方法来访问Analysis Services服务器,有了ADOMD.NET,客户应用程序可以查询Analysis Services服务器上的数据,还可以查看或操作Analysis Services数据库上的结构。ADOMD.NET包含如下对象:

(1)AdomdConnection

AdomdConnection管理客户端应用程序与多维数据服务器之间的连接,连接字符串形式与下类似:

DataSource=serverName;Catalog=AnalSvcsDB;Provider=msolap;

(2)AdomdCommand

AdomdCommand管理多维服务器上查询语句的执行。查询语句只能为CommandText或CommandStream属性,且必须是目标服务器上有效的MDX命令或者与XML/A兼容的命令。

AdomdCommand提供下面的方法来执行查询语句:

Execute:返回CellSet或AdomdDataReader对象。

ExecuteCellSet:返回CellSet对象。

ExecuteNonQuery:执行不返回结果的命令。

ExecuteReader:返回AdomdDataReader对象。

ExecuteXMLReader:返回XML/A格式对象,它可以使用XMLReader查看。

(3)AdomdDataReader

AdomdDataReader提供了一种从查询中读取只向前(forward-only)结果集的方法,读取结果集时,客户端应用程序与数据源必须保持连接状态,它要求更多的服务器开销。

(4)CellSet

与AdomdDataReader不同,CellSet利用了一种断开连接的结果集,它包含多维结果集的整个结构。应用程序不用与服务器保持连接就可以与结果集进行交互。

CellSet含有AXIS、SET、TUPLE、MEMBER等对象。

AXIS:轴是MDX查询中描述维度的概念,代表查询维度:列、行、页等,维的集合分为Axis维和Slicer维,Axis维决定多维结果集的边,Slicer维用来过滤多维数据。

SET:是任意个TUPLE的集合,在MDX查询中经常用来定义轴维和切片维。

TUPLE:用来定义立方体数据的一个切片,它由一个或多个维中的MEMBER集合组成。

MEMBER:是维中的一个条目,用于描述立方体中的单元数据。

CellS单元集:CellSet还包含一个叫CellS的单元集,CellS还有MDX查询中的度量,CellSet中,独立单元的度量通过Values属性来访问,如:CellSet.Cells(X,Y,Z).Value。

2 MDX

多维表达式MDX(Multi-Dimensional Expressions)在功能上类似于关系数据库查询语言SQL,是一种操纵Analysis Services多维信息的语言。MDX语句可分为数据定义和数据查询两种类型。数据定义主要用来定义多维结构和对象(如立方体、维度等),就像使用SQL语句可以定义视图和表等对象一样[2]。

多维表达式(MDX)查询采用如下方式进行构造[2]:

[WITH][,]

SELECT[[,…]]

FROM[]

[WHERE[]]

WITH语句:命名集,为可选项,当MDX中的集长而复杂、维护时冗长且难处理时,用户可创建命名集来提高易懂性。

SELECT语句:用来选择维度和成员,称之为“轴维度”。允许用户指定128个轴,前5个分别用COLUMNS,ROWS,PAGES,SECTIONS和CHAPTERS表示,后面的轴用数字来表示,一般情况下,用户不会使用超过5个以上的轴。

FROM:决定MDX查询的多维数据集,由单个多维数据集的名称完成,通常不允许连接。但用户可以使用LookupCube函数从多维数据集以外的多维数据集检索数据。

WHERE语句:为可选项,用来将返回的数据限定为特定维度和成员条件,称之为“切片维度”,切片维只能有一个。

3 用ADOMD.NET访问多维数据集应用实例

3.1 开发环境

硬件平台:主频2.3G,内存1G,64位双核处理器

操作系统:Windows 2003 server

数据库:SQL Server 2005 数据库引擎

应用平台:SQL Server 2005 分析服务

开发平台:Visual Studio 2005

3.2 需求分析

创建一个的简单应用程序,访问SQL Server 2005分析服务器上的多维数据集,显示电信商业客户分析系统中针对不同类型的客户,在不同销售区域,各类产品的话费收入情况。

3.3 部分代码实现

(1)连接OLAP服务器

通过 Imports Microsoft.AnalysisServices.AdomdClient添加对AdomdClient引用

//连接服务器

Conn = new AdomdConnection("provider=msolap;Data Source=StrServer ;Catalog =StrDatabase;");

Conn.Open();

(2)执行MDX查询

strMdxQuery ="SELECT [Dim Channels].[Channels Name].members on pages, " &_

" [Dim Area].[Area Name].Members on rows, " &_

" [Dim Product].[Product Name].Members on columns, "&_

"FROM [SalesDM] "&_

"WHERE [measures].[SalesIncome]"

cmd = new AdomdCommand(strMdxQuery, Conn)

cSet = cmd.ExecuteCellSet();

Return cSet ;

(3)解析数据

在三维查看器中解析数据。第一步,循环获得Axis(2)的内容,即页维度成员,根据每个成员创建一个选项卡页面。每个选项卡页面有一个DataGridView,控制选项卡上行和列的显示。第二步,循环获得Axis(0)中的内容,即列维度成员,在DataGridView中创建列,第三步,循环获得Axis(1)中的内容,即行维度成员,在DataGridView中创建行,最后,获得CellSet中的单元,将其填充到每个选项卡页面的DataGridView,部分代码如下:

//设置页标题

TabForPages.TabPages.Add(cSet.Axis(2).Set.Tuples(i).Members(0).Caption);

//设置列标题

DataGridViewColumn=new System.Windows.Forms.DataGridViewTextBoxColumn

For j=0 to cSet.Axis(0).Set.Tuples.Count-1

DataGridViewColumn.HeaderText=cSet.Axis(0).Set.

Tuples(j).Members(0).Caption

DataGridViewColumn.Add(DataGridViewColumn)

//设置行标题

DataGridView.RowCount=cSet.Axis(1).Set.Tuples.Count

For k=0 to cSet.Axis(1).Set.Tuples.Count-1

DataGridView.Rows(k).HeaderCell.Value=cSet.Axis(1).Set.Tuples(k).Members(0).Caption

//将CellSet中的单元值填充到每个选项卡页面的DataGridView

For j=0 to cSet.Axis(0).Set.Tuples.Count-1

For k=0 to cSet.Axis(1).Set.Tuples.Count-1

DataGridView(j,k).Value=cSet.Cells(j,k,i).Value

//循环填充每页数据

For i=0 to cSet.Axis(2).Set.Tuples.Count-1

TabForPages.TabPages(i).Controls.Add(DataGridView)

3.4 结果分析

需求中有客户类型、销售区域、产品三个维度,在实例中客户类型用页选项卡显示,产品、销售区域用列、行显示,话费收入为度量值,实践证明,用ADOMD.NET技术能很好的把MDX查询结果与应用程序结合起来。

参考文献

[1]王彩.基于数据仓库和OLAP技术的故障分析应用研究[D].西安交通大学硕士学位论文.2007.05

[2]黄金钗.OLAP中查询优化以及多维数据模型研究[D].湖南大学硕士学位论文.2009.04

作者简介:

许小红(1979-),女,汉,江西万安人,硕士,主要从事信息安全与数据挖掘方面的研究。

猜你喜欢
选项卡语句应用程序
重点:语句衔接
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
禁用一切 优化无限
如何搞定语句衔接题
鼠标滚轮隐藏在IE浏览器中的快捷操作
三星电子将开设应用程序下载商店
作文语句实录
微软软件商店开始接受应用程序
显示或隐藏“大纲”或“幻灯片”选项卡