IIF(SUM
(
[Calendar].[Month].CurrentMember.Lag(11) :
[Calendar].[Month].CurrentMember,
[Measures].[Qty]
) = 0, 0,
SUM
(
[Calendar].[Month].CurrentMember.Lag(11) :
[Calendar].[Month].CurrentMember,
[Measures].[Num]
) /
SUM
(
[Calendar].[Month].CurrentMember.Lag(11) :
[Calendar].[Month].CurrentMember,
[Measures].[Qty]
) )
Це формула з багатовимірної моделі, я намагаюся перетворити цю формулу MDX у формулу DAX для використання в трубчастій моделі.
12 Month Avg :=
IF (
CALCULATE (
SUM ( [QTY] ),
FILTER (
ALL ( Calendar[Month] ),
Calendar[Month] - 11
= ( Calendar[Month] - 11 )
)
)
= 0,
BLANK (),
CALCULATE (
SUM ( [Num] ),
FILTER (
ALL ( Calendar[Month] ),
Calendar[Month] - 11
= ( Calendar[Month] - 11 )
)
)
/ CALCULATE (
SUM ( [QTY] ),
FILTER (
ALL ( Calendar[Month] ),
Calendar[Month] - 11
= ( Calendar[Month] - 11 )
)
)
)
Тому я зробив цю формулу DAX для перетворення формули MDXна вершині. Однак, здається, не працює належним чином, коли я вибираю місяць у зведеній таблиці. Ці дві формули не відповідають, коли я фільтруюсь за місяцем. Як я можу вирішити цю проблему?
Відповіді:
2 для відповіді № 11) Створіть три базові заходи:
TotalNum := SUM([Num])
TotalQty := SUM([Qty])
Avg := DIVIDE ( [TotalNum], [TotalQty], 0 )
2) Створіть обчислену міру для обчислення середнього значення за попередній рік, включаючи поточний обраний місяць:
AvgLastYear:= CALCULATE (
[Avg] ,
DATESINPERIOD (
Calendar[Date] ,
MAX(Calendar[Date]),
-1, year
)
)
Пояснення:
По-перше, вам не потрібно, щоб ділити на нульовий ригмарол, і MDX, і DAX мають функцію DIVIDE (), яка обробляє це неявно.
По-друге, для DAX ідея полягає в тому, щоб побудувати базовий показник, а потім використовувати CALCULATE () для зміщення контексту цього заходу за необхідності - у цьому випадку проміжок часу.
Тут ми переглядаємо поточний обраний місяць (представлений як MAX(Calendar[Date])
, хоча ви можете використовувати будь-яку функцію агрегації), а потім використовувати DATESINPERIOD()
вибрати набір дат у нашому Calendar
таблиця, яка представляє часовий період T-1 року до поточного місяця.