MDX topcount与';其他';过期维度

MDX topcount与';其他';过期维度,mdx,olap,mondrian,Mdx,Olap,Mondrian,使用mondrian获得一个月内前2名成员的列表,并将“其他”分组为单个成员。这在这里已经讨论过了,但是蒙德里安没有现有的功能 我提出的查询(缺少topcount成员,但这只是在GENERATE中向交叉连接添加一个联合的问题)是: 但是,此查询返回月份总数,不排除topcount成员。单独查询ExceptSet似乎给出了正确的解决方案,当然,这些成员没有分组到单个“(其他)”成员中 以下是制作AdvWrks版本的尝试: WITH SET ExceptSet AS EXCEPT( [Emplo

使用mondrian获得一个月内前2名成员的列表,并将“其他”分组为单个成员。这在这里已经讨论过了,但是蒙德里安没有现有的功能

我提出的查询(缺少topcount成员,但这只是在GENERATE中向交叉连接添加一个联合的问题)是:

但是,此查询返回月份总数,不排除topcount成员。单独查询ExceptSet似乎给出了正确的解决方案,当然,这些成员没有分组到单个“(其他)”成员中

以下是制作AdvWrks版本的尝试:

WITH SET ExceptSet AS
EXCEPT(
  [Employee].[Employee].[Employee].MEMBERS ,
  TOPCOUNT(
      CROSSJOIN(
        [Date].[Calendar].CurrentMember,
        [Employee].[Employee].[Employee].MEMBERS 
      ),
    2,
    [Measures].[Reseller Sales Amount]
  )
)
MEMBER [Employee].[Employee].[Others] AS
AGGREGATE(ExceptSet, [Measures].[Reseller Sales Amount])

SELECT NON EMPTY {[Measures].[Reseller Sales Amount]} ON 0,
NON EMPTY GENERATE({[Date].[Calendar Year].[CY 2006], [Date].[Calendar Year].[CY 2007]},
  CROSSJOIN([Date].[Calendar].CurrentMember, {[Employee].[Employee].[Others]})
)
ON 1 FROM [Adventure Works]

自定义集通常不支持上下文。
我的意思是在
例外集内
您有:

...
`[Date].[Calendar].CurrentMember`
...
不幸的是,这可能是解析为All成员,而不是解析行上的
。因此,在您引用的解决方案中,使用
EXISTING
将上下文带入所有
WITH
子句中


如何在不使用现有
的情况下实现一个简单的解决方案我不确定。

这是一个相对复杂的问题-你能转换成
AdvWrks
让我们都可以玩吗?@whytheq完成了,希望它能起作用,因为我无法测试它。很好的一个:我以后会玩;请您的
dba
安装
AdvWrks
-
msdn
上的所有
mdx
示例都是针对此多维数据集的,因此它是一个很好的示例
...
`[Date].[Calendar].CurrentMember`
...