片、切块、旋转等各种分析动作,以求剖析数据,最对小.维通常是有层次的,例如,时间维可以具有多维数据集的存储模式有三种型和雪花模型.星形模型和雪花模型的多维结构第41卷第6期厦门大学学报(自然科学版)Vol.41No.62002年11月JournalofXiamenUniversity(NaturalScience)Nov.2002文章编号:04380479(2002)06069704数据仓库的多维数据分析器设计与实现段江娇,薛永生,令狐荣珊(厦门大学计算机科学系,福建厦门361005)摘要:实现多维数据分析是数据仓库系统需要具备的一个主要功能,它接受用户的多维数据查询请求,生成多维数据集,为建立数据挖掘模型提供基础数据.本文讨论了基于MicrosoftSQLServer2000的多维数据分析器的实现.简要介绍了多维数据分析的基本原理,并在DSO、ADOMD及MDX(多维数据表达式)等技术的基础上,构造了一个多维数据分析器.最后,给出了多维分析器的实现实例.关键词:数据仓库;OLAP;多维数据集;多维分析中图分类号:TP311.131联机分析处理OLAP(On_LineAnalyticalProcessing)是数据仓库技术的一个重要组成部分.OLAP技术是通过OLAP服务器,将数据仓库的数据抽取和转换为多维数据结构,以反映用户所能理解的企业的真实的维,然后通过多维分析工具对信息的多个角度、多个侧面,进行快速、一致和交互的存取,从而使分析人员、经理和管理人员能够对数据进行深文献标识码:A多维分析对多维形式组织起来的数据采取切[1]终用户能从多个角度、多侧面地观察数据库中的数据.在进行多维分析时,分析的目标数据称为事实数据,如销售量、销售额等.这些数据日积月累,数量庞大.事实数据的属性称为维,如销售的时间、客户、产品、地区等.它们的内容一般变化不大,数量也相入的分析和观察[1].其中,数据抽取和转换工具将数[2]据按照一定的要求,导入到多维数据仓库中,数据仓库的使用者通过前端访问和分析工具,对多维数据分析产生的数据集按照一定的方式进行显示输出.而多维数据分析,则根据前端工具输入的数据查询日月年这三个层次,地区维可以具有城市省地区三个层次.在数据仓库中维可以具有不同的粒度级,例如,年对应于高粒度级,日对应于低粒度级.请求获取数据,并生成一定格式的数据集.[3,4]:多维OLAP上述多维数据分析过程是由多维数据分析器操作而成,本文着重讨论基于MicrosoftSQLServer2000的多维数据分析器的设计以及基于DSO、ADOMD及MDX(多维数据表达式)等技术的实现方法.(MOLAP)、关系OLAP(ROLAP)和混合OLAP(HOLAP).本文中所讨论的多维数据分析是基于ROLAP,在ROLAP体系结构中,数据的组织方式分为星形模1多维数据分析的基本原理[1,5]都划分为两类表:一类是事实(fact)表,用来存储事联机分析处理OLAP是对数据的一系列交互查询过程,这些查询过程要求对数据进行多层次、多阶段的分析处理,在OLAP中,多维数据集(cube)是分析的基本单位.一个多维数据集代表了一个特殊的可查询区域,是由一定数目的维度和度量结合而成的整体存储单位.收稿日期:20020513作者简介:段江娇(1972-),女,讲师.实的度量(measure)值及各个维的码值;另一类表是维表,即维的描述信息,包括维的层次及成员类别等.基于关系数据库的OLAP的维表和事实表都是用二维关系表的方式存放的.进行多维数据分析的几个基本步骤如下:1)创建一个分析服务数据库,并指定该数据库的数据源;2)创建多维数据集,创建事实表、维度表,定义度量的数据列,并根据业务要求,设定维度的粒度;3)选择存储方式:MOLAP,ROLAP或HOLAP;4)处理多维数据集,创建多维数据集的聚合.库开发技术,使得用户可以根据需要开发自己的!698!厦门大学学报(自然科学版)2002年本文所描述的多维数据分析器即是实现以上步骤的一个集成器.2基于SQLServer2000的多维数据分析器实现的关键技术2.1SQLServer2000对多维数据分析开发的支持MicrosoftSQLServer2000提供了相关的数据仓[3]应用程序.多维表达式MDX(MultidimensionalExpress)支持对多维数据集的操作.ADOMD是ADO的扩展,它允许基于COM的应用程序通过用于OLAP的OLEDB接口实现对多维数据源的操作.包括在OLAP数据库中对多维数据集层次结构的只读图1基本的DSO对象模型访问;查询处理和数据检索功能.DSO(DecisionSupportObject,决策支持对象)提供了对OLAP数据库的管理能力.基本的DSO对象模型如图1所示.本文所讨论的多维分析器在实现时具体要用到的技术:1)利用DSO对象模型访问分析服务器,提供有关分析服务器中多维数据库和多维数据集的信息;2)利用ADOMD对象模型对OLAP数据库中多维数据集层次结构的只读访问;3)利用ADOMD对象模型对OLAP数据库中的多维数据进行查询处理和数据检索,支持MDX语句的执行以及对结果数据集的分析;4)程序内部动态生成MDX查询语句,对多维Fig.1ModelforbasicDSO己选择分析服务的提供者、分析服务器的位置、以及多维数据库和多维数据集.同时系统也将本地多维数据集列表显示,用户可直接选择一个多维数据集作为多维数据分析的数据源.在多维分析模块中,通过ADOMD对象模型和PivotTableService提供的服务,访问多维数据集.列表显示出多维数据集的所有维度和度量值.由用户自己选择数据显示的维度和度量值,根据用户选择的维度和度量值,构造MDX查询语句进行多维查询分析,利用ADOMD对象模型的Cellset对象存储多维分析结果,最后显示多维数据,供用户查看数据.数据集中的数据进行查询,根据用户选择的行维和2.3创建分析服务数据库列维,对数据进行多维分析,并平面化的显示多维分析结果.通过VisualBasic开发工具与SQLServer密切结合,可以通过访问其基本的DSO对象而实现对SQLServer的二次开发.在Server对象的MDStores集合上调用AddNew方法创建分析服务数据库.语法形式如下:dsoServer.MDStores.AddNew数据库名调用DataSources集合的AddNew方法,添加包括连接字符串在内的相关属性,为分析数据库指定2.2多维分析器的设计一个新的数据源,如下:多维分析器的功能结构如图2所示.本系统主要是在分析服务器和数据透视表服务的基础上,对多维数据集当中的数据进行多维分析.本系统提供一个由用户自己选择数据源的向导:可以由用户自DimdsoDataSrcAsDSO.DataSourceSetdsoDataSrc=dsoDb.Datasources.AddNew(服务器名+数据库名)DsoDataSrc.ConnectionString=Provider=SQLOLEDB.1;&DataSource=服务器名;InitialCatalog=数据库名;&IntegratedSecurity=SSPI下面使用VisualBasic编程语言以数据的多维第6期段江娇等:数据仓库的多维数据分析器设计与实现表2多维数据集处理常量Tab.2ProcessconstantofMDset!699!常量含义ProcessBuildStructureProcessDefaultProcessFullProcessReaggregate建立多维数据集结构,但不产生数据多维数据集已存在则刷新数据否则完全处理它从头开始重新建立多维数据集重新建立所有MOLAP分区图2多维数据分析器的功能结构Fig.2StructureofMDanalyzerProcessRefreshDataProcessRefreshDataAndIndex只刷新数据刷新数据并重新建立分2.4创建分析服务多维数据库区索引在Database.MDStores集合上创建多维数据集:创建一个多维数据集名:SetdsoCube=dsoDb.3实现范例MDStores.AddNew;设置多维数据集的数据源:dsoCube.DataSources.AddNewdsoDb.DataSources(数据源名).Name;指定事实表:dsoCube.SourceTable=事实表名在多维数据集中增加维度:dsoCube.Dimensions.AddNew维度名在多维数据集中创建度量,首先需要指定度量在源数据库中的位置、类型和大小;其次,需要指出度量怎样被聚合.[6]分析和显示为例来说明:3.1对数据进行多维分析1)创建一个新的Cellset对象,设置Cellset对象的Activeconnection为一个现有的ADOMD对象模型中的Catalag对象的ActiveConnection属性DimcstAsNewADOMD.CellsetSetcst.ActiveConnection=CreatGridForm.cat.ActiveConnection2.5选择存储方式2)动态构造MDX查询语句,为Cellset设置数在Server对象的MDStores集合上设置OlapMode属性.dsoServer.MDStores.(数据库名).OlapMode=∀∀,表1列出了可选的存储模式:据源属性cst.Source=MDXSource.Text3)在Cellset对象上调用Open方法,来执行查询,进行多维分析表1多维数据集的存储模式Tab.1ThestoremodeofMDset3.2cst.open利用MSHFlexgrid控件显示多维数据存储模式OlapmodeMolapIndexOlapmodeRolapOlapmodeHybridIndex解释多维OLAP关系OLAP混合OLAP利用MSHFlexgrid控件显示多维数据,由于ADOMD模型的Cellset对象不能直接作为它的数据源,所以需要在程序中将ADOMD模型中的Cellset的维度和多维分析的结果通过赋值的方式拷贝到MSHFlexgrid的相应维度轴上和数据单元中去.2.6处理多维数据集这个方法对多维数据集处理进行了初始化,包WithMSHFlexGrid1.Cols=cst.Axes(0).Positions.Count+CreatGridForm.RowList.ListCount括所有成员或设计聚合的计算.可以通过向Process方法指定一个可选参数来选择多维数据集的处理方式.常见多维数据集处理常量如表2..Rows=cst.Axes(1).Positions.Count+1+CreatGridForm.ColumnList.ListCount.FixedCols=CreatGridForm.RowList.ListCount!700!厦门大学学报(自然科学版)2002年.FixedRows=CreatGridForm.ColumnList.ListCount#设置多维数据分析结果显示的列维Form=0ToCreatGridForm.ColumnList.ListCount-1EndWithNextintRowNextintCol.TextMatrix(0,m+.FixedCols)=CreatGridForm.ColumnList.List(m)4结束语NextmForm=0ToCreatGridForm.ColumnList.ListCount-1ForintCol=0Tocst.Axes(0).Positions.Count-1.TextMatrix(m+1,intCol+.FixedCols)=cst.Axes(0).Positions(intCol).Members(m).CaptionNextintCol一个数据仓库的应用系统必须实现多维数据分析,因为它接受用户的多维数据查询请求,生成多维数据集,为建立数据挖掘模型