Рвав-рвав, сегодня я — фитнес-собака!
Похоже, вопрос дизайна незримо присутствует в окружающих меня вещах, и это будет уже 2-я заметка в этом году (из 2-х!), на эту тему :-)
Перед вами — 6-я заметка из нашего цикла «Мелкие радости», и сегодня мы рассмотрим часто встречающиеся запросы по визуализации сравнения плана и факта в наиболее простом его варианте — таблице. На эту тему написано довольно много, и, в принципе, тема не особо сложна.Пример:
- Имеется таблица, содержащая исходную информацию в виде номенклатуры товаров, а также плановой и фактической суммы продаж:
Задача:
- посчитать абсолютное отклонение факта от плана;
- посчитать относительное отклонение факта от плана;
- отформатировать данные таким образом, чтобы положительные значения отображались со знаком «+», а отрицательные со знаком «-»;
- визуализировать при помощи иконок направление движения показателей;
- раскрасить значения в разные цвета;
- объединить получившийся результат в один столбец.
Рвав-рвав, как уже отмечалось выше, все довольно просто, но муторно.
Концептуальные вопросы для разработчика:
- С помощью чего будем считать показатели? Реализация возможна как на мерах, так и на расчетных столбцах. Меры — выбор редакции.
- Как будет осуществляться форматирование данных, а именно — появление знаков «+» и «-» ?. В данном случае собака Смайл пойдет простым путем, и нарисует их текстом, но особо привередливые человеки могут использовать функцию FORMAT.
- Что делать с иконками? Иконки можно вставлять как картинку, или использовать символы Unicode. Символы — выбор редакции.
- Каким способом, собственно, красить-то будем? Понятное дело, что надо использовать условное форматирование, но вот цвета и условия можно указывать либо при помощи встроенных возможностей, либо задавать при помощи меры. Опять же, меры — выбор редакции.
Решение:
- Для начала работы нам понадобятся некоторые предварительные расчеты, а именно, несколько простых мер следующего вида для замены в визуальном элементе исходных столбцов :
План =
SUM ('Исполнение продаж'[Плановая сумма])
Факт =
SUM ('Таблица'[Фактическая сумма])
- Далее необходимо сформировать визуальный элемент «Таблица», при этом в качестве столбцов с суммами мы будем использовать полученные меры:
- Затем необходимо посчитать абсолютное отклонение факта продаж от плана:
Абсолютное отклонение =
[Факт] - [План]
- И, конечно же, нужно не забыть про относительное отклонение:
Относительное отклонение =
DIVIDE ([Абсолютное отклонение], [План], 0 )
- Для улучшения визуальной составляющей необходимо отформатировать полученные меры, и, конечно, проверить получившийся результат:
- Следующим шагом создание меры для цветового обозначения, кодировку цветов, естественно, нужно предварительно подобрать:
Цвет =
SWITCH (
TRUE (),
[Абсолютное отклонение ] > 0, "#008E26",
[Абсолютное отклонение ] < 0, "#EB475A",
[Абсолютное отклонение ] = 0, "#C35300"
)
- Далее необходимо собрать получившийся результат в один столбец, с добавлением определенных символов Unicode и форматирования. Формула, позволяющая получить составное значение, выглядит следующим образом:
Результат =
VAR _AbsoluteDeviation =
IF (
[Абсолютное отклонение ] > 0,
"+" & [Абсолютное отклонение ],
[Абсолютное отклонение ]
)
VAR _RelativeDeviation =
IF (
[Относительное отклонение ] > 0,
"+" & FORMAT ( [Относительное отклонение ], "0.0%" ),
FORMAT ( [Относительное отклонение ], "0.0%" )
)
VAR _UnicodeSquare = 9724
VAR _UnicodeTriangleUp = 9650
VAR _UnicodeTriangleDown = 9660
VAR _UnicodeLable =
SWITCH (
TRUE (),
[Абсолютное отклонение ] = 0, UNICHAR ( _UnicodeSquare ),
[Абсолютное отклонение ] > 0, UNICHAR ( _UnicodeTriangleUp ),
[Абсолютное отклонение ] < 0, UNICHAR ( _UnicodeTriangleDown ),
BLANK ()
)
VAR _UnicodeLongSpace = 8194
VAR _Gap =
UNICHAR ( _UnicodeLongSpace )
RETURN
_AbsoluteDeviation & _Gap & _RelativeDeviation & _Gap & _UnicodeLable
- Проверка полученного составного значения:
- Последним шагом является применение условного форматирования на основе меры «Цвет»:
На этом все.
Рвав-рвав, женский пол с наступающим праздником!
Ваш Смайл