《Microsoft SQL Server 2008 MDX Step by Step》学习笔记一:MDX查询第一课

SQL Server 2008中SQL应用系列及BI笔记系列--目录索引

导读:本文介绍MDX查询的基础内容,已经了解的读者可以直接略过。

本文将包括以下内容:

■1、使用MDX查询编辑器构建并执行MDX查询。

本文所用数据库和所有源码,请到微软官网下载

1、SQL查询与MDX查询示例比较

在MdxStepByStep数据库中(后缀名为.SQL)查询

USE MdxStepByStep SELECT m.EnglishProductName, o.TotalSalesAmount FROM dbo.DimProduct m INNER JOIN ( -- TOP 10 PRODUCTS OF 2003 SELECT TOP 10 a.ProductKey, SUM(a.SalesAmount) AS TotalSalesAmount FROM ( SELECT x.productkey, x.salesamount FROM dbo.FactInternetSales x INNER JOIN dbo.DimDate y ON x.OrderDateKey=y.DateKey WHERE y.CalendarYear=2003 UNION ALL SELECT x.productkey, x.salesamount FROM dbo.FactResellerSales x INNER JOIN dbo.DimDate y ON x.OrderDateKey=y.DateKey WHERE y.CalendarYear=2003 ) a GROUP BY a.ProductKey ORDER BY TotalSalesAmount DESC ) n ON m.ProductKey=n.ProductKey LEFT OUTER JOIN ( --PRODUCT SALES IN 2004 SELECT a.ProductKey, SUM(a.SalesAmount) AS TotalSalesAmount FROM ( SELECT x.productkey, x.salesamount FROM dbo.FactInternetSales x INNER JOIN dbo.DimDate y ON x.OrderDateKey=y.DateKey WHERE y.CalendarYear=2004 UNION ALL SELECT x.productkey, x.salesamount FROM dbo.FactResellerSales x INNER JOIN dbo.DimDate y ON x.OrderDateKey=y.DateKey WHERE y.CalendarYear=2004 ) a GROUP BY a.ProductKey ) o ON m.ProductKey=o.productkey ORDER BY n.TotalSalesAmount DESC /* EnglishProductName TotalSalesAmount Mountain-200 Black, 38 1327957.4077 Mountain-200 Black, 42 1139429.4872 Mountain-200 Silver, 38 1136622.4928 Mountain-200 Black, 46 1011074.3685 Mountain-200 Black, 38 NULL Mountain-200 Silver, 42 1011486.1762 Touring-1000 Blue, 60 835290.1559 Road-350-W Yellow, 48 897217.9635 Mountain-200 Silver, 46 1029170.7639 Road-350-W Yellow, 40 840970.6467 */

而在维度数据库中对应的MDX查询(后缀名为.MDX)如下:

WITH MEMBER [Measures].[Total Sales Amount] AS ([Measures].[Internet Sales Amount]) + ([Measures].[Reseller Sales Amount]) SET [Top 10 Products of 2003] AS TOPCOUNT( {[Product].[Product].[Product].Members}, 10, ([Measures].[Total Sales Amount], [Date].[Calendar Year].[CY 2003]) ) SELECT {([Measures].[Total Sales Amount])} ON COLUMNS, {[Top 10 Products of 2003]} ON ROWS FROM [Step-by-Step] WHERE ([Date].[Calendar Year].[CY 2004]) ; /* Total Sales Amount Mountain-200 Black, 38 $1,327,957.41 Mountain-200 Black, 42 $1,139,429.49 Mountain-200 Silver, 38 $1,136,622.49 Mountain-200 Black, 46 $1,011,074.37 Mountain-200 Black, 38 (null) Mountain-200 Silver, 42 $1,011,486.18 Touring-1000 Blue, 60 $835,290.16 Road-350-W Yellow, 48 $897,217.96 Mountain-200 Silver, 46 $1,029,170.76 Road-350-W Yellow, 40 $840,970.65 */

从上面的这个例子我们领略了SQL与MDX语法的大致区别。

2、 用MDX 查询编辑器实现一个最简单的MDX的编写。

在SSMS界面登录Analysis Services,选择MDX Step By Step数据库:

对于MDX新手来说,最令人鼓舞的莫过于大部分MDX查询都可以借助拖拽来实现。

邀月工作室

邀月工作室

邀月工作室

邀月工作室

邀月工作室

邀月工作室

大家可以参考以下的MDX脚本完成本文开始提供的MDX查询。

WITH MEMBER [Measures].[Total Sales Amount] AS [Measures].[Internet Sales Amount] SELECT FROM [Step-by-Step] WHERE [Date].[Calendar Year].&[2004] ; WITH MEMBER [Measures].[Total Sales Amount] AS [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount] SELECT FROM [Step-by-Step] WHERE [Date].[Calendar Year].&[2004] ; WITH MEMBER [Measures].[Total Sales Amount] AS [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount] SET [Top 10 Products of 2003] AS TOPCOUNT( [Product].[Product],10) SELECT FROM [Step-by-Step] WHERE [Date].[Calendar Year].&[2004] ; WITH MEMBER [Measures].[Total Sales Amount] AS [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount] SET [Top 10 Products of 2003] AS TOPCOUNT( [Product].[Product].[Product].Members, 10, ([Measures].[Total Sales Amount], [Date].[Calendar Year].[CY 2003])) SELECT FROM [Step-by-Step] WHERE [Date].[Calendar Year].&[2004] ; WITH MEMBER [Measures].[Total Sales Amount] AS [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount] SET [Top 10 Products of 2003] AS TOPCOUNT( [Product].[Product].[Product].Members, 10, ([Measures].[Total Sales Amount], [Date].[Calendar Year].[CY 2003])) SELECT {([Measures].[Total Sales Amount])} ON COLUMNS, {[Top 10 Products of 2003]} ON ROWS FROM [Step-by-Step] WHERE [Date].[Calendar Year].&[2004] ;

参考资源:

1、MDX官方教程(http://msdn.microsoft.com/zh-cn/library/ms145506.aspx

邀月注:鉴于读者提出意见,本系列尽量简明,方便读者阅读。

邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助!
3w@live.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值