如何使用MDX获得最后一个非空的10个成员?

时间:2013-01-02 02:22:25

标签: mdx

我有一个MDX查询:

SELECT
NON EMPTY {Hierarchize({[Measures].[Rating]})} ON COLUMNS,
NON EMPTY {Hierarchize({[Response].[Response Name].Members})} ON ROWS
FROM [Ratings]

将响应名称表返回到响应计数。但是,此查询为所有响应返回一行,我只想要最近的10个响应。

我尝试使用HEAD这样做:

SELECT
NON EMPTY {Hierarchize({[Measures].[Rating]})} ON COLUMNS,
HEAD(NON EMPTY {Hierarchize({[Response].[Response Name].Members})}, 10) ON ROWS
FROM [Ratings]

但是它给出了错误“第3行第18列的语法错误,令牌'NON'”

如果我删除了NON EMPTY,那么它可以正常工作(只返回10个成员),但它包含空的评级。

如何一起使用NON EMPTY和HEAD? (或者用另一种方式完成同样的事情)

2 个答案:

答案 0 :(得分:5)

我认为答案已经有点迟了,但这是我使用的解决方案(我遇到了同样的问题):

select {[Measures].[Percentage Present]} ON COLUMNS, 
Head(Filter([Student].[Student].AllMembers, not isEmpty([Measures].[Percentage Present])),10) ON ROWS 
from [Attendance]

Head + Filter(不是isEmpty([measure]))就可以了!

答案 1 :(得分:0)

不确定理解'last'的含义,但这是使用NonEmpty函数而不是NON EMPTY关键字的声明:

SELECT

NON EMPTY [Measures].[Rating] ON COLUMNS,

HEAD( NonEmpty( 
         [Response].[Response Name].Members, 
         [Measures].[Rating] 
      ), 
      10
) ON ROWS

FROM [Ratings]