MDX入门实例参考.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

???????在关系数据库中使用SQL语言来查询、管理和操作数据库中的数据。在SQLServer中使用MDX语句来进行多维数据库的操作和管理,MDX不但可以用在SSAS中进行多维数据库的查询管理,也可使用在SSIS和SSRS中分别辅助处理ETL过程和报表开发过程。因为MDX语句没有标准化,不同的BI解决方案提供使用不同的多维数据查询技术,所以SQLServer中的MDX语言只能在SQLServer中使用,如果要进行其它数据库如ORACLE,Hyperion的查询,就要了解与其相对应的MDX,可能在语法或一些用法上不同于SQLServer中的MDX。本文针对的是SQLServer中的MDX。

本文以一个简单的MDX查询开始,分别解析这个查询的各个局部,以此来学习MDX语法。但是在这之前首先要介绍使用的案例多维数据集。

一.案例所使用的多维数据集

维度:

??

图一:维度信息

度量值:

?

图二:度量信息

?

其中MaxUnitsOrdered和TotalUnitsOrdered两个度量是导出度量,即通过命名计算得到的度量。

维度结构:

?

图三:Product维度结构

?

图四:Store维度结构

?

图五:TimeByDay维度结构,即时间维度

?

图六:多维数据集总体结构

?

二.一个完整的MDX查询

?例一:一个简单的MDX语句?

SELECT

NONEMPTY{

[Product].[ProductCategory-ProductClass].[产品目录]

}ONCOLUMNS,

NONEMPTY{

[Store].[SalesCountry-SalesRegion-SalesDistrictId-Region].[地区]

}ONROWS

FROM[Foodmart多维数据立方]

WHERE[TimeByDay].[month_of_year].[3]

?

图七:例一的MDX查询得到的结果

?

a)????????SELECT子句

SELECT子句在MDX中也叫做查询器轴,在SELECT语句中总共支持128个轴〔即编号从0到127〕。其中前五个轴〔即编号0-4〕有内置命名,分别是:COLUMNS、ROWS、PAGES、CHAPTERS、SECTIONS。除了这五个轴可以通过命名和编号来访问以外,其它的轴〔5-127〕都只能通过编号来访问。在SSAS中通过MDX只能直接查看两个轴的信息,也就是说在SSAS中执行MDX的时候,这个MDX只能有两个轴,即COLUMNS和ROWS,如果有更多的轴在SSAS中是无法显示的。只能通过透视数据表或通过编程的方式来浏览。

?

在例一的MDX中,包含COLUMNS和ROWS两个轴。在COLUMNS轴中,[Product].[ProductCategory–ProductClass].[产品目录]表示了访问的元组,这个元组的含义是:Product维度的名为ProductCategory–ProductClass的层次下的名为“产品目录”这个等级所包含的所有成员。[Product]是维度名称,[ProductCategory–ProductClass]是层次名称,[产品目录]是等级名称。最外面的大括号表示集合,即所有[Product].[ProductCategory–ProductClass].[产品目录]元组所组成的集合。由此可以看出MDX中轴的访问顺序是:维度?层次?等级?成员。NONEMPTY的作用是过滤空值结果。查询结果如图七。

?

ROWS轴的结构与COLUMNS相同,所有128个轴的根本访问规那么都是一样。每个轴之间用逗号分隔。另外,在同一个轴中不能出现不同维度的元组。如下:

?

例二:错误的MDX〔一个轴中包含两个维度的元组〕?

SELECT

NONEMPTY{

[Product].[ProductCategory-ProductClass].[产品目录],

[Store].[StoreName].[StoreName]

}ONCOLUMNS,

NONEMPTY{

[Store].[SalesCountry-SalesRegion-SalesDistrictId-Region].[地区]

}ONROWS

FROM[Foodmart多维数据立方]

WHERE[TimeByDay].[month_of_year].[3]?

??????????????????????????????????????????????

文档评论(0)

199****8042 + 关注
实名认证
文档贡献者

相信自己,相信明天

1亿VIP精品文档

相关文档