Казалось бы, простое вычисление многомерных выражений, но с использованием одного и того же измерения дважды с разными переменными.

Стол:

X             Y             wins  losses
Apples        Oranges       5     2
Apples        Limes         2     1 
Apples        Strawberries  3     3
Limes         Pears         5     4
Limes         Strawberries  6     8
Strawberries  Limes         2     3
Strawberries  Apples        1     5

Мне нужно суммировать [X].Apples wins, где Y = Strawberries, и разделить это на [X].Strawberries – общие потери. [Меры].[some_calculated_member] = 3 / (5 + 3)

Альтернативой может быть вычисление следующим образом: SUM([X].Apples выигрывает, где Y = Strawberries / SUM([Y].Strawberries выигрывает)

Я не уверен, как структурировать запрос MDX, чтобы выполнить то, что мне нужно:

SELECT
{ [Measures].[some_calculated_member] } ON 0,
{ [X].[Apples] } ON 1,
{ [X].[Strawberries] } ON 2,
{ [Y].[Strawberries] } ON 3
FROM [cube]

Я рассматривал возможность использования AXIS, но использую Mondrian, который не поддерживает AXIS.


person tcash21    schedule 24.10.2013    source источник


Ответы (1)


Вы пробовали с вычисляемой мерой?

WITH 
Member [Measures].[Ratio] AS (
  [Measures].[wins.SUM],
  [X].[ALL].[AllMember].[Apples],
  [Y].[ALL].[AllMember].[Strawberries]
) / (
  [Measures].[losses.SUM],
  [Y].[ALL].[AllMember].[Strawberries]
) 
SELECT NON EMPTY {
  [Measures].[New Measure]
} ON COLUMNS 
FROM [SomeCube]
person blacelle    schedule 26.10.2013
comment
Спасибо! Это сработало. Не могли бы вы рассказать мне для моих собственных учебных целей, почему это не сработало? WITH MEMBER [Measures].[Ratio] as (([X].[Apples], [Measures].[wins] ) / SUM({[Y].CurrentMember}, [Measures].[wins])) SELECT { [Y].[Y].Members} НА СТОЛБЦАХ, {[Показатели].[Отношение]} НА СТРОКАХ ИЗ [куба] - person tcash21; 28.10.2013
comment
Почему вы используете SUM({[Y].CurrentMember}, [Measures].[wins])? поскольку это означает, что вы фильтруете [Measures].[wins] до [Y].CurrentMember, хотя по умолчанию [Y] уже находится на CurrentMember - person blacelle; 29.10.2013