基于ADO MD的OLAP扩展应用实现.docx

上传人:b****3 文档编号:3856778 上传时间:2022-11-25 格式:DOCX 页数:6 大小:19.12KB
下载 相关 举报
基于ADO MD的OLAP扩展应用实现.docx_第1页
第1页 / 共6页
基于ADO MD的OLAP扩展应用实现.docx_第2页
第2页 / 共6页
基于ADO MD的OLAP扩展应用实现.docx_第3页
第3页 / 共6页
基于ADO MD的OLAP扩展应用实现.docx_第4页
第4页 / 共6页
基于ADO MD的OLAP扩展应用实现.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

基于ADO MD的OLAP扩展应用实现.docx

《基于ADO MD的OLAP扩展应用实现.docx》由会员分享,可在线阅读,更多相关《基于ADO MD的OLAP扩展应用实现.docx(6页珍藏版)》请在冰豆网上搜索。

基于ADO MD的OLAP扩展应用实现.docx

基于ADOMD的OLAP扩展应用实现

基于ADO/MD的OLAP扩展应用实现

摘要:

简要叙述了OLAP技术,分析了ADO/MD运行机理,并通过一个实例给出了基于ADO/MD实现OLAP扩展应用的方法步骤,为丰富OLAP应用提供了新的思路。

  关键词:

联机分析处理;多维数据查询;多维数据对象模型

  0引言

  数据仓库技术的迅猛发展,使得数据支持决策成为可能。

众多的数据库厂商,比如Microsoft、Oracle、IBM、Sysbase等都提出了自己的数据仓库解决方案。

其中Microsoft公司的AnalysisServices凭借其稳定的性能、相对低廉的价格和操作的简便性占据了一定的市场份额。

OLAP(OnLineAnalysisProcess,联机分析处理)是AnalysisServices提供的重要功能之一,它可以帮助用户从不同侧面分析数据,为决策提供支持。

然而,AnalysisServices的客户端工具虽然能够对分析结果进行简单的表格展现,但无论是数据展现的功能,还是展现的界面难以与各企业自身的业务信息系统实现集成,难以满足用户个性的需求。

庆幸的是Microsoft提供了操作多维数据集的接口ADO/MD(ActiveXDataObjects/Multi-dimensional,ActiveX数据对象/多维对象),通过这个接口可以实现客户端与OLAP服务器的无缝连接,实现多维分析功能与业务信息系统其它功能的集成。

本文基于ADO/MD技术,实现了OLAP客户端扩展应用的开发。

  1OLAP技术

  OLAP是联机分析处理,也有人称为在线分析处理,它通常基于数据仓库,通过建立面向主题的多维数据集,最终提供给用户一个直观数据展现工具,达到方便用户从多个角度分析数据的目的。

OLAP通过引入维、维分层、维属性、度量等概念,将数据在概念上视为一个数据立方体(也可称为多维数据集)。

通常,多维数据模型围绕中心主题组织,以“维表-事实表”结构形式体现,主题用事实表表示,而每个维都有一个表与之相关联,称为维表,它进一步描述维。

事实表是用于记录度量信息的关系表,维表是用于记录维度的关系表,多维数据立方体中每个坐标轴上的值,各记录在一个维表中,这样,一个n维的数据立方体,就有n张维表。

  进行多维数据模型构建时,通常将数据组织成多维,每维包含由概念分层定义的多个抽象层,这种组织结构为人们从不同角度观察分析数据提供了灵活性。

多维数据分析通常包括切片、切块、上卷、下钻和旋转等操作。

  

(1)切片:

切片操作对给定立方体的一个维进行选择,得到一个子立方体。

  

(2)切块:

切块操作通过对两个或多个维进行选择,得到一个子立方体。

  (3)上卷:

上卷(上钻)操作通过沿一个维的概念分层向上攀升或者通过维归约,对数据立方体进行聚集。

  (4)下钻:

下钻是上卷的逆操作,它由不太详细的数据到更详细的数据。

下钻可以通过沿维的概念分层向下或引入附加的维来实现。

  2ADO/MD运行机理

  ADO/MD是微软AnalysisServices提供给第三方访问服务端多维数据集的接口,通过ADO/MD接口可以方便快捷地编写OLAP应用程序。

ADO/MD是传统ADO对象模型的扩展,能够更好地支持多维数据模型,它不仅功能强大,而且应用简单。

它主要提供了两方面的功能,一是能够对OLAP数据库中多维数据集层次结构信息进行访问;二是支持通过MDX(Multi-dimensionalExpressions,多维表达式)语句获取结果数据集。

  为了能够描述多维数据集,ADO/MD的模型结构如图1所示。

它包括两个分支,一个分支用来存储数据立方体元数据;第二个分支用来获取由OLAP立方查询产生的存储在数据集中的数据。

  ADO/MD的Catalog(目录)对象用来获得元数据,它可以包含一个或多个CubeDef(立方体定义),任何在这个集合中的元素都是一个CubeDef对象。

每个CubeDef对象拥有一个Dimensions(维)集合,里面包含了所有的Dimension,维的数据是有分级结构的。

相应地,Dimension对象包括Hierarchies(层次)集合,这个集合里面包含了全部的Hierarchy对象;维的分级结构可以包括一个或多个级别,因此Hierarchy对象还包括Levels(级别)集合,每个Level对象还可以包括一个或多个Members(成员)对象。

  ADO/MD对象模型的另一个分支就是CellSet(单元集)对象可以用来获得数据立方体的数据透视表。

它通过多维表达式(MDX)来查询相关数据。

MDX在语法上与SQL十分相似,只不过MDX可能更简单一些,它基本上只支持几个操作,比如SELECT等。

每个MDX查询都可以简化成类似的结构:

  SELECT[,]FROMWHERE

  3OLAP扩展应用

  3.1服务端多维数据集的创建

  要进行多维分析处理,首先需要在服务端建立多维数据集。

建立多维数据集就是要根据业务需要建立以主题为中心的事实表,并围绕主题建立以数据分类为基础的维度,维度能反映数据组织的分类和层次结构,用户将基于维度中的分类和层次进行分析。

在建立多维数据集时,还需要确定度量值,度量值通常是事实表中数值类型的列,它是数据聚合和分析的数值。

维度和度量值就组成了一个多维数据集。

  确定好维度和度量值后,还需要创建数据的物理存储结构。

在考虑多维数据集存储问题时会涉及到数据聚合的问题,理想情况下,事先将各维度层次上的度量值计算好,以便分析服务可以随时接受分析客户端的请求响应,而不是在收到请求后才进行数据聚合计算,这样可以提高服务效率和用户体验。

但这种方式也存在缺点:

一是要占用大量的存储空间来存储聚合的数据;二是聚合的数据源是聚合以前的数据,数据的时效性相对要差一些。

因此,实际方案要根据需要进行取舍。

AnalysisServices提供了3种OLAP存储方式,分别是MOLAP:

“M”代表多维(Multidimensional),即以多维方式进行存储,也就是聚合数据与源数据是独立存储的,这种存储方式响应速度最快,存储空间要求也最大;ROLAP:

“R”代表关系(Relational),即关系OLAP,将聚合数据存储于源数据库中,这种存储方式响应速度最慢,无论是否聚合,都需要访问源数据库;还有一种是HOLAP:

“H”代表混合(Hybrid),即混合OLAP,它结合了前两种方式的优点,HOLAP数据库存储了聚合的数据,而把单元级别的数据保留在源数据库中,这样当检索聚合数据时,响应速度与MOLAP一样,当检索单元级别的数据则需要访问源数据库,响应速度与ROLAP一样。

3.2客户端数据展现功能开发

  客户端的数据展现是在AnalysisServices服务引擎的支持下,以表格和图表的方式展现数据分析的结果,并提供与用户交互的功能。

OLAP客户端程序的开发过程与传统数据库应用系统的开发过程是一致的,总的步骤包括三步:

①连接数据库;②获取数据;③处理展现数据。

所不同的是这些步骤都是在ADO/MD接口模型的支持下完成。

下面简要介绍客户端的开发过程:

  

(1)连接OLAP服务器。

利用ADO/MD接口模型中的TCatalog类可以实现与OLAP服务器的连接,连接字符串必须包括OLEDBProvider名字、计算机名和数据库名,示意代码如下:

  ProcedureSetConnection();

  varDS:

string;

  begin

  DS:

='Provider=MSOLAP.2;DataSource=localhost;InitialCatalog=FoodMart2000';

  Catalog1:

=CoCatalog.Create;

  Catalog1._Set_ActiveConnection(OleVariant(DS));

  end;

  

(2)获取多维数据集信息。

正确连接到OLAP服务器后,就可以获取服务器上的所有多维数据集(数据立方体)、每一个数据集的维度、级别、成员等信息。

  ①遍历多维数据集并获得对应的名字:

  procedureGetCubes();

  vari:

integer;

  CubeDef1,defs:

Variant;

  begin

  Defs:

=Catalog1.CubeDefs;

  fori:

=0toDefs.Count-1do

  begin

  CubeDef1:

=Defs.item[i];

  CubeCombox.Items.Add(CubeDef1.Name);//数据集的名称

  end;

  end;

  ②遍历多维数据集的维并获得它们的名字:

  procedureGetDimens(CubeDef:

varaint);

  varDimensions,Dimension,Levels,Level1,Members,Member1:

Variant;

  i,j:

integer;

  begin

  Dimensions:

=CubeDef.Dimensions;//数据集的维度集合

  fori:

=0toDimensions.count-1do

  begin

  Dimension:

=Dimensions.item[i];

  ifDimension.Name=’Measures’then//是度量值的情况

  begin

  Levels:

=Dimension.Hierarchies[0].Levels;

  Level1:

=Levels.item[0];

  Members:

=Level1.Members;

  forj:

=0toLevel1.Members.Count-1do

  begin

  Member1:

=Members.item[J];

  MeasureCheckListBox.Items.Add(Member1.Name);

  end;

  endelse//是维度的情况

  DimensionList.Items.add(Dimension.Name);

  end;

  end;

  ③遍历维度的级别并获得它们的成员:

  procedureGetDimensionMember(Dimension:

varaint);

  varLevels,Level1,Members,Member1:

Variant;

  i,j:

integer;

  pnode:

TTreeNode;

  begin

  Levels:

=Dimension1.Hierarchies[0].Levels;//维度的级别集合

  Level1:

=Levels.item[0];

  Members:

=Level1.Members;//级别的成员集合

  fori:

=0toMembers.Count-1do

  begin

  Member1:

=Members.item[i];

  displayMember(MemberTreeView,nil,Member1);//显示下级成员

  end;

  end;

  proceduredisplayMember(tv:

TTreeView;Node:

TTreeNode;member:

Variant);//显示下级成员

  vari,j:

integer;

  pnode:

TTreeNode;

  member1:

Variant;

  begin

  pnode:

=tv.Items.AddChild(Node,Member.Name);

  fori:

=0tomember.Children.count-1do

  begin

  member1:

=member.Children.item[i];

  displayMember(tv,pnode,member1);

  end;

  end;

  (3)展现分析结果。

多维数据集结构信息获取以后,就要根据用户的操作,利用MDX查询语句获取聚合数据。

比如,从多维数据集Sales中查询Store维度,以及UnitSales和StoreCost两个度量值的数据,其MDX语句如下:

  Select{[UnitSales],[StoreCost]}ONCOLUMNS,{[Store].[AllStores].children}ONROWSfromSales

  获取聚合数据以后,就可以根据用户需要以表格、图形等多种方式进行展现,这里不再赘述。

示例代码的界面如图2所示。

  4结语

  通过ADO/MX接口,可以实现OLAP应用的扩展,这种扩展不仅可以丰富OLAP的应用,更为OLAP与其它应用系统的集成提供了方便。

本文从理论与实践的角度给出了OLAP扩展应用的方法步骤,为其工程化应用奠定了基础。

  参考文献参考文献:

  [1]叶得学,韩如冰.浅谈数据仓库与OLAP技术[J].甘肃科技纵横,2009

(2).

  [2]叶德谦,孙泽林.使用ADOMD开发OLAP应用程序[J].电脑与信息技术,2001(5).

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1