2015-05-06 3 views
1

Я искал всюду для этого, но любой другой пример - это не совсем то, чего я хочу достичь. У меня есть данные, которые выглядят так:DAX - Running Total - Multiple Critiera + Grouping

Day  Group  Sales 
14  1   15 
13  0   22 
14  1   17 

и так далее. Теперь я создаю вычисленное поле Запуск Всего по следующей формуле:

CALCULATE (
    SUM(Table[Sales]), 
     FILTER (
      ALL (table), 
      Table[Date] <= MAX(Table[Date]) 
     ) 
    ) 

я создаю сводную таблицу и поставить дату и группу в качестве строк, а затем Запуск Total как значения. Почему общий итог не агрегируется отдельно для каждой группы? Я бы хотел, чтобы группа 1 имела свои расчеты, а также Группа 0.

ответ

2

Причина, по которой общая сумма не агрегируется отдельно для каждой группы, объясняется тем, что ваша формула является неполной. Вы только что использовали функцию ALL для FILTER. ALL будет означать, что вы проигнорируете существующие контексты фильтра. Таким образом, в строке с группой 0 вы проигнорируете фильтр группы 0.

Я думаю, что вы хотите сохранить групповой фильтр. Вы можете добиться этого, заменив ALL (table), либо ALLEXCEPT(table,table[Group]),, либо ALL(table[Date]),. Оба из них предоставят текущую сумму только для строки Group, так что у вас будет общая сумма для группы 0 и одна для группы 1.

Если вы ищете текущую сумму, в которой совокупность суммируется по дате и группы вы можете сохранить ВСЕ и добавить дополнительное выражение для ФИЛЬТРА:

CALCULATE (
    SUM (table[Sales]), 
    FILTER (
     ALL (table), 
     table[Date] <= MAX (table[Date]) 
      && table[Group] <= MAX (table[Group]) 
    ) 
)