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

如何使用MDX获取最后一个非空的10个成员?,mdx,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

我有一个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’”

如果我删除非空的,那么它会像我期望的那样工作(只返回10个成员),但是它包括空的评级


我如何才能使用非空和头一起?(或以另一种方式完成相同的事情)

不确定您是否理解“last”的含义,但这里有一个使用函数而不是非空关键字的语句:

SELECT

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

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

FROM [Ratings]

我相信现在回答这个问题已经有点晚了,但下面是我使用的解决方案(我也遇到了同样的问题):


头+过滤器(,不是空的([measure])成功了

我正在使用Mondrian进行OLAP,当我使用此查询时,我得到一个错误“MondrianException:Mondrian error:No函数匹配签名‘NonEmpty(,)’”。不确定这是不是蒙德里安的问题还是别的什么。哎哟。。。蒙德里安似乎不支持这个功能。然后,您可以尝试Filter()和isEmpty(如果支持)的组合。
Head
将返回集合中的“前n个”元素,这些元素可能与“最近的”元素一致,也可能不一致。除了
Head
之外,您还可以使用
Order
功能可靠地返回您需要的内容。太棒了,我会尝试一下。
select {[Measures].[Percentage Present]} ON COLUMNS, 
Head(Filter([Student].[Student].AllMembers, not isEmpty([Measures].[Percentage Present])),10) ON ROWS 
from [Attendance]