(MDX) Использование функции SCOPE с несколькими значениями одного измерения в качестве фильтра - PullRequest
0 голосов
/ 27 января 2020

У меня есть Расчетная мера MDX , которая динамически вычисляется в случае, когда в операторе указывается текущее значение члена измерения.

CREATE MEMBER CURRENTCUBE.[Measures].[CALC_MEASURE] AS 
CASE WHEN [Dim].[Dim].CURRENTMEMBER.MEMBERVALUE = 'B' THEN [Measures].[B measure]
     WHEN [Dim].[Dim].CURRENTMEMBER.MEMBERVALUE = 'A' THEN [Measures].[A measure]
     WHEN [Dim].[Dim].CURRENTMEMBER.MEMBERVALUE = 'E' THEN [Measures].[E measure]
ELSE SUM(YTD(),[Measures].[Else Measure]) END;

Очевидно, что если я не извлекаю [Dim] Dimension в Dataset, вычисленное Measure всегда будет иметь значение = (null).

Наши клиенты спрашивали нас, можно ли избежать извлечения [Dim] измерения (так что они могут иметь только одну строку в своем отчете) и при этом иметь правильное значение для вычисляемой меры, поэтому мы подумали, что можем использовать функцию SCOPE , но, к сожалению, она не работает должным образом.

Я создал две области только для тестирования, и в результате это выглядит примерно так:

SCOPE({[Dim].[Dim].&[B]});                                                    
       [Measures].[CALC_MEASURE] = 10;                                                
END SCOPE;              


SCOPE({[Dim].[Dim].&[B],[Dim].[Dim].&[A]});
       [Measures].[CALC_MEASURE] = 10 + 20; 
END SCOPE;

В разделе просмотра, если я отфильтрую только одно из значений измерения [Dim] 'A' например, я получаю (10 + 20) значение.

Я ожидал, что этот запрос вернется (null), потому что у меня нет такой области видимости:

SCOPE({[Dim].[Dim].&[A]});                                                    
       [Measures].[CALC_MEASURE] = 20;                                                
 END SCOPE;

Почему это так? Как я могу использовать фильтрацию области для ОБА значений измерений? Я хочу ввести в область действия A + B, только если я отфильтрую значения измерений «A» и «B» в разделе обзора.

У вас есть другие идеи для решения этой проблемы? проблема?

Заранее спасибо Всем, кто ответит,

Габриэле

...