Parallerperiod YTD MDX

У меня MDX для YTD:

YTD( StrToMember(" [Time].[Year -  Month -  Date]   .&[" + Format(now(), "yyyy-MM-" + "01T00:00:00") + "]"))

И это прекрасно работает.

Теперь я пытаюсь сделать YTD в прошлом году MDX так:

PARALLERPERIOD([Time].[Year -  Month -  Date].[Year],1,YTD)

Но это не работает.

Любые предложения, как я должен действовать?

0
nl ja de
Ум, вы имеете в виду PARALLELPERIOD правильно? Предполагая, что это просто опечатка - вы можете описать, что на самом деле «не работает».
добавлено автор Jamiec, источник
Извините, что я не слишком понятен, почему я не могу использовать этот набор (YTD) при создании другого набора?
добавлено автор user1800552, источник
процесс будет терпеть неудачу: 'функция ожидает член и кортеж был использован'
добавлено автор user1800552, источник

2 ответы

В соответствии с MSDN ParallelPeriod принимает Member_Expression как третий аргумент. Это означает, что вы можете использовать такой код:

  • [Time].[Year - Month - Date].CurrentMember
  • Tail(EXISTING [Time].[Year - Month - Date].[Year].allmembers,1).Item(0)
  • YTD(Tail(EXISTING [Time].[Year - Month - Date].[Year].allmembers,1).Item(0)).Item(0)

Но вы не можете использовать выражение SET или фактическое SET (например, {A: B} или ссылку на ось) в качестве аргумента ParallelPeriod

0
добавлено

Лучшим выбором будет определение вашей меры PY следующим образом:

CREATE MEMBER CURRENTCUBE.[Measures].[Value PY] AS Null

и добавьте этот код в скрипт

([Measures].[Value PY] , [Time].[Year - Quarter - Month - Week - Day].MEMBERS) = Sum(Existing [Time].[Year - Quarter - Month - Week - Day].[Day].MEMBERS,  (ParallelPeriod([Time].[Year - Quarter - Month - Week - Day].[Year]), [Measures].[Value]))

Это решение будет работать во всех ваших запросах и не имеет значения, хотите ли вы использовать один член времени или набор членов в вашем запросе.

0
добавлено