Принудительное вычисление члена для оценки на уровне листа перед агрегацией - PullRequest
0 голосов
/ 10 апреля 2019

Я нашел это решение:

    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]), когда у меня есть две иерархии.Возможно ли это вообще?

1 Ответ

0 голосов
/ 11 апреля 2019

Я думаю, что нашел решение:

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]
...