MDX:对同一维度的不同成员进行过滤和切片

Alw*_*ing 5 mdx filter slice iccube

我正在使用icCube的Sales cube来学习MDX.我想写一个MDX查询,以显示2009年销售收入超过80,000美元的国家的销售收入.我尝试了以下方法,但它返回了一个只有一列的空表([Amount]):

WITH
 SET [myset] AS Filter([Country].members, ([Measures].[Amount], [2010])>80000)
select [Country].members on 0, [Amount] on 1
from (select [myset] on 0, [Amount] on 1 from [sales])
where [2009]
Run Code Online (Sandbox Code Playgroud)

Fra*_*kPl 3

只需使用

WITH
 SET [myset] AS Filter([Country].members, ([Measures].[Amount], [2010])>80000)
select [myset] on 0, [Amount] on 1
from [sales]
where [2009]
Run Code Online (Sandbox Code Playgroud)

在 MDX 中,此类查询不需要子选择或WHERE. 你甚至可以省略集合myset,写作

select Filter([Country].members, ([Measures].[Amount], [2010])>80000) on 0,
       [Amount] on 1
from [sales]
where [2009]
Run Code Online (Sandbox Code Playgroud)

我在 Adventure Works 上尝试了类似的查询,它显示所有客户、澳大利亚、加拿大和美国,但不显示法国、德国和英国:

SELECT Filter([Customer].[Country].Members,
              ([Measures].[Internet Sales Amount], [Date].[Calendar Year].&[2006]) > 600000
             )
       ON 0,
       {[Measures].[Internet Sales Amount]}
       ON 1
FROM [Adventure Works]
WHERE [Date].[Calendar Year].&[2008]
Run Code Online (Sandbox Code Playgroud)