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