Нахождение кумулятивной суммы значений MAX - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно рассчитать совокупную сумму максимального значения за период (или по категории).См. Встроенное изображение.

Итак, во-первых, мне нужно найти максимальное значение для каждой категории / месяца в году.Затем я хочу рассчитать совокупную сумму этих максимальных значений.Я попробовал это, установив меру максимума (которая отлично работает для первого шага - определение максимума на категорию / месяц для данного года), но потом мне не удается найти решение для поиска кумулятивного СУММ (найти кумулятивный Макс легко, но этоэто не то, что я ищу).

Table1

Year  Month  MonthlyValue  MaxPerYear
2016  Jan    10            15
2016  Feb    15            15
2016  Mar    12            15
2017  Jan    22            22
2017  Feb    19            22
2017  Mar    12            22
2018  Jan     5            17
2018  Feb    16            17
2018  Mar    17            17

Желаемый вывод

Year  CumSum
2016  15
2017  37
2018  54

1 Ответ

0 голосов
/ 23 октября 2018

Это немного похоже на этот вопрос и этот вопрос и этот вопрос в отношении промежуточного итога, но также включает в себя совокупный компонент.

Вы можете сделать это в два этапа.Сначала вычислите таблицу, в которой приведены максимальные значения для каждого года, а затем используйте совокупный общий шаблон.

CumSum = 
VAR Summary =
    SUMMARIZE(
        ALLSELECTED(Table1),
        Table1[Year],
        "Max",
        MAX(Table1[MonthlyValue])
    )
RETURN
    SUMX(
        FILTER(
            Summary, 
            Table1[Year] <= MAX(Table1[Year])
        ),
        [Max]
    )

Вот вывод:

CumSum

Если развернуть до уровня месяца, он будет выглядеть следующим образом:

CumSum Monthly


Обратите внимание, что если вам нужен только промежуточный итогработать, оставляя каждый ряд как максимум (15, 22, 17, 54 ), а не как совокупную сумму максимумов (15, 37, 54, 54 ), тогда вы можетеиспользуйте более простой подход:

MaxSum =
    SUMX(
        VALUES( Table1[Year] ),
        CALCULATE( MAX( Table1[MonthlyValue] ) )
    )

Это вычисляет максимум для каждого года отдельно, а затем складывает их вместе.


Внешние ссылки:

...