2015-08-06 5 views
0

В следующем MDX кодексе Я хочу получить агрегированную меру только для членов, которые находятся в указанном последнем времени (например, в примере 01/06/2015), иначе я их не хочу.
Я пробовал существовать и существует, но без везения.
Я считаю, что я должен использовать IIF функцию как:MDX с использованием IIF и SUM

IIF DAYTIME, MEASURE D NOT NULL THEN AGGREGATE.... 

(если за определенный месяц, мера D больше, чем 0, то SUM меры D для определенного интервала времени)

ELSE NULL. 

(Else not print it on output)

А затем фильтр E.members где SUM мер D >1 ON ROWS.

WITH 
    MEMBER A AS 
    b + C 
    MEMBER [Measures].[Aggregate] AS 
    Aggregate 
    (
     DAYTIME.[Month].&[2013-01-01T00:00:00] 
     : 
     [DAYTIME].[Month].&[2015-06-01T00:00:00] 
    ,[Measures].[D] 
    ) 
SELECT 
    [Measures].[Aggregate] ON 0 
,Filter 
    (
    Exists 
    (
     [E].MEMBERS 
    ,[DAYTIME].[Month].&[2015-06-01T00:00:00] 
    ) 
    , 
    [Measures].[Aggregate] > 1 
) ON 1 
FROM [CUBE]; 
+0

, что делает 'ЧЛЕН A' должен делать с вашим требования? – whytheq

+0

Ничего в этом вопросе, я использую в качестве фильтра. У меня есть мысль: добавьте SET AS в beginng, как фильтр [E] .members где меры.D> 0 и находятся в [DAYTIME]. [Месяц] . & [2015-06-01T00: 00: 00] 2) c – Proffesore

ответ

0

Кто-то из форумов MSDN напомнил мне использование NONEMPTY. Поэтому сначала я использовал NONEMPTY как Непусто ([E], ([DAYTIME]. [Месяц]. & [2015-06-01T00: 00: 00], [меры]. [D])) , чтобы вернуть все E. Члены, у которых было ненулевое значение для меры.D по 2015-06-01 Затем я отфильтровываю это с другой мерой

У меня нет правильных данных, но я считаю, что в решении BI есть проблема.

+0

Кажется немного странным - ваша мера '[Measures]. [Aggregate]' уже включает эту дату '[DAYTIME]. [Month]. & [2015- 06-01T00: 00: 00] 'поэтому фильтр' Filter (... [Measures]. [Aggregate]> 1) 'уже будет выполнять операцию' nonEmpty' в '[E] .MEMBERS' для даты' .. [ДНЕВНОЙ] [месяц] и [2015-06-01T00: 00: 00] ' – whytheq

0

Попробуйте использовать Sum, а не Aggregate. Кроме того, как [DAYTIME].[Month].&[2015-06-01T00:00:00] является частью меры [Measures].[Aggregate] вы можете удалить Exists функции:

WITH 
    MEMBER [Measures].[Aggregate] AS 
    Sum 
    (
     DAYTIME.[Month].&[2013-01-01T00:00:00] 
     : 
     [DAYTIME].[Month].&[2015-06-01T00:00:00] 
    ,[Measures].[D] 
    ) 
SELECT 
    [Measures].[Aggregate] ON 0 
,Filter 
    (
    [E].MEMBERS 
    ,[Measures].[Aggregate] > 1 
) ON 1 
FROM [CUBE]; 

Примечание: важно, что [Measures].[D] связана с этими членами [E].MEMBERS

Смежные вопросы