Симуляция LastChild в MDX - несколько иерархий - PullRequest
1 голос
/ 02 ноября 2011

У меня есть куб SSAS, в котором есть мера, которая должна быть распределена через процент, расположенный в другой мере.У меня все это настроено как выражение меры в моей мере «Сумма капитала», и она прекрасно работает.

Моя проблема в том, что эта мера «Сумма капитала» на самом деле является снимком, поэтому мне нужно, чтобы она была агрегирована с использованиемфункция LastChild.Оказывается, вы не можете иметь выражение меры в полуаддитивной мере, поэтому я пытаюсь подделать функцию LastChild в MDX.

Я видел множество примеров в Интернете, и все, но ни один из них не говорил о наличии нескольких иерархий в измерении даты.У меня есть иерархии «календарный год» и «финансовый год».

Мой MDX работает для одной иерархии, но как только я добавлю вторую иерархию, первая будет перезаписана.Я предполагаю, что мне нужно обрабатывать обе иерархии в одном выражении, но мне очень трудно заставить его работать.

Вот мой MDX для одной иерархии.Может кто-нибудь помочь изменить его для нескольких иерархий или есть какой-то другой способ решить мою проблему?

Scope([Measures].[Equity Value]);
    This = iif(isleaf([Calendar].[By Calendar Year].CurrentMember),
                [Measures].[Equity Value],
                ([Calendar].[By Calendar Year].CurrentMember.LastChild,[Measures].[Equity Value]));
End Scope;

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

David

1) Вы используете область действия в качестве вычисляемого члена. Вы можете избавиться от своего iif, объявив область действия, работающую только во вложенном кубе:

 scope ([Measures].[Equity Value],[Calendar].[By Calendar Year].levels(0).... )
  This = (the expression)

2) Не уверен, что понял вашу проблему, но кортеж с двумя членами двух иерархий одного измерения может быть пустым по построению: например, ваш первый день в календаре (01.01.2010) и первый день вашего финансового календаря (например, 1/6/2020) не тот же день, поэтому на самом деле ноль. Две иерархии одного и того же измерения - это только способы представления одних и тех же координат (здесь дней), вы делаете пересечение, объявляя кортеж.

Не уверен, что помогаю тебе ...

0 голосов
/ 05 ноября 2011

Спасибо за попытку! Я понимаю, что вы имеете в виду (я думаю). MDX - один жесткий язык!

Я закончил выполнять распределение с помощью представления, являющегося источником для моей меры, и сохранил функцию агрегации LastChild для меры. В конце концов, это намного проще, а также лучше для производительности запросов.

Спасибо в любом случае:)

...