基于ADO MD的OLAP扩展应用实现Word下载.docx
- 文档编号:19172678
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:6
- 大小:19.12KB
基于ADO MD的OLAP扩展应用实现Word下载.docx
《基于ADO MD的OLAP扩展应用实现Word下载.docx》由会员分享,可在线阅读,更多相关《基于ADO MD的OLAP扩展应用实现Word下载.docx(6页珍藏版)》请在冰豆网上搜索。
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<
axis>
[,<
]FROM<
cube>
WHERE<
Slice>
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;
Defs:
=Catalog1.CubeDefs;
fori:
=0toDefs.Count-1do
CubeDef1:
=Defs.item[i];
CubeCombox.Items.Add(CubeDef1.Name);
//数据集的名称
②遍历多维数据集的维并获得它们的名字:
procedureGetDimens(CubeDef:
varaint);
varDimensions,Dimension,Levels,Level1,Members,Member1:
i,j:
Dimensions:
=CubeDef.Dimensions;
//数据集的维度集合
=0toDimensions.count-1do
Dimension:
=Dimensions.item[i];
ifDimension.Name=’Measures’then//是度量值的情况
Levels:
=Dimension.Hierarchies[0].Levels;
Level1:
=Levels.item[0];
Members:
=Level1.Members;
forj:
=0toLevel1.Members.Count-1do
Member1:
=Members.item[J];
MeasureCheckListBox.Items.Add(Member1.Name);
endelse//是维度的情况
DimensionList.Items.add(Dimension.Name);
③遍历维度的级别并获得它们的成员:
procedureGetDimensionMember(Dimension:
varLevels,Level1,Members,Member1:
pnode:
TTreeNode;
=Dimension1.Hierarchies[0].Levels;
//维度的级别集合
=Levels.item[0];
=Level1.Members;
//级别的成员集合
=0toMembers.Count-1do
=Members.item[i];
displayMember(MemberTreeView,nil,Member1);
//显示下级成员
proceduredisplayMember(tv:
TTreeView;
Node:
member:
Variant);
vari,j:
member1:
=tv.Items.AddChild(Node,Member.Name);
fori:
=0tomember.Children.count-1do
=member.Children.item[i];
displayMember(tv,pnode,member1);
(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).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于ADO MD的OLAP扩展应用实现 基于 ADO MD OLAP 扩展 应用 实现