MDX查询语言

本文介绍了MDX查询的基本结构和多种应用场景,包括单维度单度量、单维度多度量、多维度多度量等查询方式,并展示了如何使用NOT EMPTY、HAVING、WHERE等条件进行数据过滤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MDX查询
1、基本结构
    MDX查询与SQL查询类似,都是用SELECT  FROM
    MDX使用SELECT [维度名称].[层次名称].[级别].Members ON COLUMNS,[Measures].[度量名称] ON ROWS FROM [CUBE名称]
2、常用查询
    (1)一个维度和一个度量:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members SET [~ROWS ] AS [Measures].[度量名称] SELECT [~COLUMNS] ON COLUMNS,[~ROWS ] ON ROWS FROM [CUBE名称]
    (2)一个维度和多个度量:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members SET [~ROWS ] AS {[Measures].[度量名称1],[Measures].[度量名称2]} SELECT [~COLUMNS] ON COLUMNS,[~ROWS ] ON ROWS FROM [CUBE名称]
    (3)多个相同层次维度和多个度量:WITH SET [~COLUMNS] AS {[维度名称].[层次名称].[级别1].Members,[维度名称].[层次名称].[级别2].Members} SET [~ROWS ] AS {[Measures].[度量名称1],[Measures].[度量名称2]} SELECT [~COLUMNS] ON COLUMNS,[~ROWS ] ON ROWS FROM [CUBE名称]
    (4)多个不同层次维度和多个度量:WITH SET [~COLUMNS] AS CrossJoin({[维度名称1].[层次名称1].[级别1].Members,[维度名称1].[层次名称1].[级别2].Members},{[维度名称2].[层次名称1].[级别1].Members,[维度名称2].[层次名称2].[级别2].Members}) SET [~ROWS ] AS {[Measures].[度量名称1],[Measures].[度量名称2]} SELECT [~COLUMNS] ON COLUMNS,[~ROWS ] ON ROWS FROM [CUBE名称]
    (5)多个不同层次维度和多个度量:WITH SET [~COLUMNS] AS CrossJoin({[维度名称1].[层次名称1].[级别1].Members,[维度名称1].[层次名称1].[级别2].Members},{[维度名称2].[层次名称1].[级别1].Members,[维度名称2].[层次名称2].[级别2].Members}) SET [~ROWS ] AS {[Measures].[度量名称1],[Measures].[度量名称2]} SELECT [~COLUMNS] ON COLUMNS,[~ROWS ] ON ROWS FROM [CUBE名称]
    (6)使用NOT EMPTY去掉对应行(列)度量为空的数据:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members SET [~ROWS ] AS [Measures].[度量名称] SELECT NOT EMPTY [~COLUMNS] ON COLUMNS,NOT EMPTY [~ROWS ] ON ROWS FROM [CUBE名称]
    (7)使用HAVING过滤:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members HAVING [Measures].[度量名称]>1000 SET [~ROWS ] AS [Measures].[度量名称] SELECT NOT EMPTY [~COLUMNS] ON COLUMNS,NOT EMPTY [~ROWS ] ON ROWS FROM [CUBE名称]
    (8)使用WHERE条件:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members SET [~ROWS ] AS [Measures].[度量名称] SELECT NOT EMPTY [~COLUMNS] ON COLUMNS,NOT EMPTY [~ROWS ] ON ROWS FROM [CUBE名称] WHERE [维度名称].[层次名称].&[具体值]
    (9)使用WHERE条件将不同层次结构的多个成员添加到 WHERE 子句:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members SET [~ROWS ] AS [Measures].[度量名称] SELECT NOT EMPTY [~COLUMNS] ON COLUMNS,NOT EMPTY [~ROWS ] ON ROWS FROM [CUBE名称] WHERE ([维度名称1].[层次名称1].&[具体值],[维度名称2].[层次名称2].&[具体值])
    (10)使用WHERE条件将同一层次结构的多个成员添加到 WHERE 子句,需要在 WHERE 子句中包括一个集:WITH SET [~COLUMNS] AS [维度名称].[层次名称].[级别].Members SET [~ROWS ] AS [Measures].[度量名称] SELECT NOT EMPTY [~COLUMNS] ON COLUMNS,NOT EMPTY [~ROWS ] ON ROWS FROM [CUBE名称] WHERE ({[维度名称1].[层次名称1].&[具体值],[维度名称1].[层次名称2].&[具体值]},[维度名称2].[层次名称2].&[具体值])
    (11)IIF函数判断:
WITH MEMBER [Product].[Beer and Wine].[BigSeller] AS IIf([Product].[Beer and Wine] > 100, "Yes","No") SELECT {[Product].[BigSeller]} ON COLUMNS, Store.[Store Name].Members ON ROWS FROM Sales
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值