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 в общем определении,

Другие вопросы по тегам