强制计算成员在聚合前在叶级别进行评估

Force calculated member to evaluate at leaf level before aggregation

我找到了这个解决方案:

    with calculated member [Measures].[Test1] 
as 
 iif (isleaf([Time].[Calendar].currentmember)), 
[Measures].[Measure1]/[Measures].[Measure2], 
Sum([Time].[Calendar].currentmember.children, [Measures].[Test1]))

    select Test1 on 0,
    [Time].[Calendar]. members on 1
    from 
    [MyCube]

而且有效。

但我想知道是否可以有两个或更多的维度,并写成这样:

    with calculated member [Measures].[Test1] as 
    iif (isleaf([Time].[Calendar].currentmember)) and  isleaf([SecondDimension].[SecondDimensionHierarchy].currentmember), 
[Measures].[Measure1]/[Measures].[Measure2], 
**Sum([Time].[Calendar].currentmember.children, [Measures].[Test1])**)

   select Test1 on 0,
    [Time].[Calendar]. members on 1
    from 
    [MyCube]

我试过了,我得到了正确的叶子结果,但较高成员的值为空 - 当我有两个层次结构时,我不知道如何写这个总和Sum([Time].[Calendar].currentmember.children, [Measures].[Test1])。有可能吗?

我想我找到了解决方案:

with calculated member [Measures].[Test1] as 
    iif (isleaf([Time].[Calendar].currentmember)) and  isleaf([SecondDimension].[SecondDimensionHierarchy].currentmember), 
[Measures].[Measure1]/[Measures].[Measure2], 
Sum((DESCENDANTS([Time].[Calendar].currentmember, , LEAVES) * DESCENDANTS([SecondDimension].[SecondDimensionHierarchy].currentmember, , LEAVES), [Measures].[Test1]))

   select Test1 on 0,
    [Time].[Calendar]. members on 1
    from 
    [MyCube]