MDX выражение для агрегирования по сумме на один уровень выше самого низкого?
У меня есть два измерения A,B и мера M, которая суммируется.
Если бы я применил оба измерения, я мог бы получить таблицу, которая могла бы выглядеть следующим образом:
Теперь проблема, с которой я сталкиваюсь, состоит в том, что я хотел бы суммировать по столбцам (или по строкам), чтобы я мог вычислить по столбцам отношение значения:
Я пробовал выражения вроде [Measures].[M] / SUM([Measures].[M])
или же [Measures].[M] / ([All], [Measures].[M])
- но безрезультатно.
Я хотел бы добавить, что формула должна быть динамичной и не использовать конкретную развертку. Выражается словами - знаменатель должен быть суммой меры, если в процессе развертки будет отсутствовать последний шаг.
Я использую Mondrian 4.6 BTW, который не полностью совместим с MDX для этой версии.
1 ответ
Вы можете попробовать что-то вроде этого:
With
SET ROWSET as [Dimension 1].[Some Level].Members
SET COLSET as [Dimension 2].[Other Level].Members
MEMBER [Measures].[Total] as Aggregate( ROWSET, [Measures].[M] )
MEMBER [Measures].[Ratio] as [Measures].[M] / [Measures].[Total]
Select
ROWSET on Rows,
COLSET * { [Measures].[M], [Measures].[Ratio] } on Columns
From [My Cube]
Параметры вашего запроса будут использоваться только в определениях ROWSET и COLSET.
Чтобы получить сумму по строкам, просто замените ROWSET на COLSET в общем определении,