Post-Image

Мелкие радости - расчет отклонений

Рвав-рвав, сегодня я – фитнес-собака!

Похоже, вопрос дизайна незримо присутствует в окружающих меня вещах, и это будет уже 2-я заметка в этом году (из 2-х!), на эту тему :-)

Перед вами – 6-я заметка из нашего цикла “Мелкие радости”, и сегодня мы рассмотрим часто встречающиеся запросы по визуализации сравнения плана и факта в наиболее простом его варианте - таблице. На эту тему написано довольно много, и, в принципе, тема не особо сложна.

Пример:

В качестве исходных данных имеется набор, содержащий вид товара, а также плановую и фактическую суммы.

blog_010_screen_1

Задача:

На основе представленных данных реализовать следующие требования:

  • посчитать абсолютное отклонение факта от плана;

  • посчитать относительное отклонение факта от плана;

  • отформатировать данные таким образом, чтобы положительные значения отображались со знаком “+”, а отрицательные со знаком “-”;

  • визуализировать при помощи иконок направление движения показателей;

  • раскрасить значения в разные цвета;

  • объединить получившийся результат в один столбец.

    Рвав-рвав, как уже отмечалось выше, все довольно просто, но муторно.

    И прежде, чем приступать к разработке, необходимо ответить себе на следующие вопросы:

  • С помощью чего будем считать показатели? Реализация возможна как на мерах, так и на расчетных столбцах. Меры – выбор редакции.

  • Как будет осуществляться форматирование данных, а именно – появление знаков “+” и “-”?. В данном случае собака Смайл пойдет простым путем, и нарисует их текстом, но особо привередливые человеки могут использовать функцию FORMAT.

  • Что делать с иконками? Иконки можно вставлять как картинку, или использовать символы Unicode. Символы – выбор редакции.

  • Каким способом, собственно, красить-то будем? Понятное дело, что надо использовать условное форматирование, но вот цвета и условия можно указывать либо при помощи встроенных возможностей, либо задавать при помощи меры. Опять же, меры – выбор редакции.

    Реализация требований:

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

    План =
    SUM ( 'Таблица'[Плановая сумма] )
    Факт =
    SUM ( 'Таблица'[Фактическая сумма] )
    Абсолютное отклонение =
    [Факт] - [План]
    Относительное отклонение =
    DIVIDE ( [Абсолютное отклонение]; [План]; 0 )

    blog_010_screen_2

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

    Цвет = 
    SWITCH (
        TRUE ();
        [Абсолютное отклонение] > 0; "#009900";
        [Абсолютное отклонение] < 0; "#ff0000";
        [Абсолютное отклонение] = 0; "#ffff00"
    )

  • Далее необходимо собрать получишийся результат в один столбец, с добавлением определенных символов 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

    blog_010_screen_3

  • Последним шагом является применение условного форматирования на основе меры “Цвет”:

    blog_010_screen_4

    Рвав-рвав, женский пол с наступающим праздником!

    Ваш Смайл