在日期范围之间使用 TOPCOUNT 的 MDX 查询返回带有一些空值的顶部
Posted
技术标签:
【中文标题】在日期范围之间使用 TOPCOUNT 的 MDX 查询返回带有一些空值的顶部【英文标题】:MDX query with TOPCOUNT between date range returning a top with some empty values 【发布时间】:2014-05-14 13:49:46 【问题描述】:我正在使用 MDX 查询来获取两个日期之间最喜欢的 10 个产品。奇怪的是,结果是由一些在该日期范围内点赞的产品组成的,而有些则根本没有任何点赞。这是查询:
SELECT
[Measures].[Likes] ON COLUMNS,
TOPCOUNT([Products].[Name].Members, 10, [Measures].[Likes]) ON ROWS
FROM [Likes]
WHERE ( [Date].[2014].[3].[29]:[Date].[2014].[4].[5] )
结果如下:
[Measures].[Likes]
[Product].[XX]
[Product].[XX]
[Product].[XX] 139
[Product].[XX]
[Product].[XX] 1
[Product].[XX]
[Product].[XX]
[Product].[XX] 125
[Product].[XX] 111
[Product].[XX] 1
如果我将上限更改为 20,例如,结果将有更多的产品有喜欢但也有更多的空产品,并且没有排序(就像顶部通常那样)。
使用 NON EMPTY 使查询只返回 5 个结果而不是 10 个,并且仍然没有排序。
谢谢!
【问题讨论】:
【参考方案1】:试试这个查询
SELECT
[Measures].[Likes] ON 0,
Head(ORDER([Products].[Name].Members,[Measures].[Likes], DESC), 10) ON 1
FROM [Likes]
WHERE ( [Date].[2014].[3].[29]:[Date].[2014].[4].[5] )
【讨论】:
哇,这行得通,谢谢!但我不明白为什么 TOPCOUNT 没有。有什么线索吗?还有,HEAD(ORDER 的表现是不是和 TOPCOUNT 差不多? 与 BottomCount 函数一样,TopCount 函数总是会破坏层次结构。来源technet.microsoft.com/en-us/library/ms144792.aspx 头部更快(来源social.msdn.microsoft.com/Forums/sqlserver/en-US/…) 如果我做对了,这意味着它不会正确考虑层次结构,而是按指定的数值表达式排序。但在我的示例中,它不是按数字表达式排序的。我在这里想念什么?只有当日期在不同月份时才会发生这种情况。以上是关于在日期范围之间使用 TOPCOUNT 的 MDX 查询返回带有一些空值的顶部的主要内容,如果未能解决你的问题,请参考以下文章