设为首页 收藏本站
查看: 1040|回复: 0

[经验分享] 《Microsoft SQL Server 2008 MDX Step by Step》学习笔记一:MDX查询第一课

[复制链接]

尚未签到

发表于 2015-6-27 19:15:52 | 显示全部楼层 |阅读模式
  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
UNIONALL
SELECT
x.productkey, x.salesamount
FROM dbo.FactResellerSales x
INNER JOIN dbo.DimDate y
ON x.OrderDateKey=y.DateKey
WHERE y.CalendarYear=2003
) a
GROUPBY a.ProductKey
ORDERBY 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
UNIONALL
SELECT
x.productkey, x.salesamount
FROM dbo.FactResellerSales x
INNER JOIN dbo.DimDate y
ON x.OrderDateKey=y.DateKey
WHERE y.CalendarYear=2004
) a
GROUPBY a.ProductKey
) o
ON m.ProductKey=o.productkey
ORDERBY 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查询都可以借助拖拽来实现。
http://09yuxg.blu.livefilestore.com/y1p5P710_Co3468JtifYyFf34PvjYMxNcoWiuXSxet8Wdj_bicd0sl7ubPBkHTcpeQQpAigA2b01EL3QGZZe6EIuw8WMMPWlZZv/2011-6-12%2017-09-43.png?psid=1
http://09yuxg.blu.livefilestore.com/y1pvIgoxV_Wr22vznZX203S5RmbQbdv6AKjuPHLL_hhttj28Cl-4MQ-Pd91vSYdUEPVOpyE7DEDrbp71ApA7_rj8IP-ppIF5UBe/2011-6-12%2017-18-35.png?psid=1
http://09yuxg.blu.livefilestore.com/y1pvIgoxV_Wr23WbObsR7nByj1fao86ehOp27r0DymBxtuG00fj90PexbaR5D7E67_J9BqF4ODMHy0ikFoMY7497vK4pZktE-4L/2011-6-12%2017-21-24.png?psid=1
http://09yuxg.blu.livefilestore.com/y1pNxtD1IDqD_VUzmBQOkkN-iAE7xe_eG2eNxAKSRoqwCNCYudNRZYS0mrBtxJnkKb0Oc9WH4BmYOPuxgvpxcZoEPJxyjcNag21/2011-6-12%2017-24-49.png?psid=1
http://09yuxg.blu.livefilestore.com/y1pPNH_Q0K_klPYJ8PWu-i07OhWn-JMMoh1-UXEU_BpUWkX0-e3SwJCFu0YO7DR6qsRTk0SHCFTJKzEaF66mgQWflhQCrrN0S63/2011-6-12%2017-28-38.png?psid=1
http://09yuxg.blu.livefilestore.com/y1p_ItuBQbviBhcBcBuXETZeOt1c7kiMBoZ658osrmMXmT7h_EFK19DkEGQ2NelTZINBsGRftONqnpC3rr5dUQN12HlCrW8v5ZH/2011-6-12%2017-30-07.png?psid=1
  大家可以参考以下的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)
  邀月注:鉴于读者提出意见,本系列尽量简明,方便读者阅读。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81052-1-1.html 上篇帖子: SQL Server:把CSV文件导入到SQL Server表中 下篇帖子: 回首经典的SQL Server 2005
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表