Записки охотника

Управление раcчетом подытогов

Мелкие радости
Рвав-рвав, сегодня я – собака-управляка!

Перед вами 10-я заметка из нашего цикла "Мелкие радости", ниже мы рассмотрим такую задачу, как вывод разных составляющих при расчете подытогов в матрице, в зависимости от уровня.

Пример:

Имеется таблица, содержащая информацию в разрезе группы, бренда и цены номенклатуры:

Таблица
Прайс-лист

Задача:

Построить матрицу таким образом, чтобы в зависимости от уровня подытога выводился определенный расчет, например, обычная сумма или средняя.

Решение:

Для начала необходимо построить обычную матрицу с построчной группировкой по группе товара и бренду:


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

Расчет по уровням =
VAR _Average =
    AVERAGE ( 'Прайс-лист'[Цена] )
VAR _Amount =
    SUM ( 'Прайс-лист'[Цена] )
RETURN
    SWITCH (
        TRUE (),
        ISINSCOPE ( 'Прайс-лист'[Бренд] ), _Amount,
        ISINSCOPE ( 'Прайс-лист'[Товары ] ), _Average,
        FORMAT _Amount"## ### ₽" )
    )

Рвав-рвав, в данной формуле идет раздельный расчет с проверкой уровня при помощи функции ISINSCOPE, а также добавлено форматирование общего итога (для демонстрации возможности отдельного управления).
Формула, надо сказать, простая, главное начать думать "в правильную сторону", с чем могут быть определенные проблемы, поскольку сначала собака Смайл раздумывал о том, как отделить общий итог от промежуточного.

  • Проверить получившийся результат, подставив созданную меру в раздел "Значения" сформированного визуального элемента:


  • Для лучшего понимания полученных цифр конечным пользователем можно также переименовать заголовок соответствующего столбца, как это сделано на картинке выше.

Собственно, на этом все.
Ваш Смайл

P.S. Рвав-рвав, после публикации обнаружился один тонкий момент при тестировании на других данных (несколько строк одного бренда): важен порядок проверки уровней, а именно, считать надо "снизу-вверх".