如何使用MDX获取最后一个非空的10个成员?
我有一个MDX查询:如何使用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
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]