Как вносить изменения в столбиковую диаграмму цели

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

Данный способ может использоваться как в QlikView, так и в Qlik Sense.

Загрузка некоторых данных

Этот пример может основываться на любых данных, которые у вас фактически имеются, и загруженных значениях цели. Я создал несколько фиктивных данных с использованием загрузки INLINE. Это хороший способ получения быстрых тестовых данных:

ActualVsTarget:
LOAD
1 asRegionCount,
Region,
Target,
Floor(Target * Factor) asActual
INLINE[
Region,Target,Factor
Northern,200,0.88
Southern,250,1.67
Eastern,150,1.33
Western,200,0.67
Midlands,225,1.14
];

Очевидно, что в реальном мире было бы намного больше строк и параметров, но и этого достаточно для примера.

Создайте диаграмму и добавьте измерения

В Sense, достаточно всего лишь перетащить линейчатую диаграмму на рабочее пространство, в QlikView – можно выбрать Диаграмму из основного меню и сделать её гистограммой на вкладке Общие. Добавление измерения Регион – аналогично, перетаскивание в Sense, или выбор из списка в QlikView.

Если вы новичок в использовании обоих инструментов, есть множество пособий для начала работы, которые стоит перед этим посмотреть.

Выражения

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

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

Необходимые выражения:

Under Target/ под целью
if(sum(Actual) >= sum(Target), 0, sum(Actual))

Target/цель
if(sum(Actual) >sum(Target), sum(Target),
if(sum(Actual) Over Target/над целью
if(sum(Actual) >sum(Target), sum(Actual) — sum(Target), 0)

Таким образом, в QlikView и Qlik Sense создаются различные выражения, но синтаксис идентичен.

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

Стилизация диаграммы

Для получения диаграммы вам потребуется превратить её в гистограмму стопкой. В QlikView это можно сделать через вкладку Стиль, а в Qlik Sense это можно найти во вкладке Вид и Представление. Скорее всего, вам захочется сделать диаграмму горизонтальной, так как это более логичное использование для отображения цели. Также может потребоваться убедиться в том, что ваши условные обозначения выглядят приемлемо. В QlikView достаточно просто добавлять цвета, так как данное приложение применяет три первых цвета из карты цветов к вашим трем выражениям. Используйте GUI (графический интерфейс пользователя) во вкладке Цвета для получения диаграммы следующего вида:

Тем не менее, в Sense отсутствует возможность применения различных цветов для разных выражений в ваших диаграммах. По моему мнению, это основной недостаток, который, надеюсь, будет исправлен в последующих версиях. Позже в этом посте я опишу, как с этим работать, но сейчас наша диаграмма будет иметь такой вид:

Замечу, что в таком случае «зависший» текст, полученный этой диаграммой, не идеален, так как мы разбили фактическое значение на части. В QlikView можно отключить эту функцию (во вкладке Представление), но необходимо оставить ее в Sense.

Разница в процентном соотношении

Сейчас показываются абсолютные значения, но мы может захотеть увидеть разницу в процентном соотношении. Это легко выполняется путем деления каждого выражения на цель. Окончание целевого столбика в таком случае будет на единице (пока оно составлено из одного или двух столбиков), затем все больше и больше целей будет выходить за его пределы.

Выражение для второй диаграммы будет выглядеть следующим образом:

Under Target
if(sum(Actual) >= sum(Target), 0, sum(Actual))
/ sum(Target)

Target
if(sum(Actual) >sum(Target), sum(Target),
if(sum(Actual) Over Target
if(sum(Actual) >sum(Target), sum(Actual) — sum(Target), 0)
/ sum(Target)

Стоит отметить, что потребуется изменить формат номера для всех выражений. В QlikView это делается через вкладку Номер (отметьте галочкой процентное соотношение в нижней части списка), а в Sense – это можно найти во вкладке Данные — Меры — Формат чисел.

Наша диаграмма Sense для процентного соотношения будет выглядеть следующим образом:

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

Если вы следовали такому способу в QlikView, теперь у вас должны быть две диаграммы, которые вы можете продолжать использовать. Если же вы используете Sense, у вас есть две диаграммы со счетчиком интуитивных цветов. Существует исправление, хотя…

Обходное решение для цветов гистограмм в QlikSense

Как уже упоминалось ранее, мы не можем выбрать различные цвета или цветовые выражения для каждого выражения в нашей диаграмме Sense. Однако мы можем создать цветовое выражение относительно наших параметров.

Одним из трюков, который можно использовать, является загрузка островков данных с тремя столбиками так, что получится гистограмма с двумя параметрами. Вместо этого мы можем задать второй параметр в коде с помощью функции Valuelist. Как и функция Aggr, в сущности она возвращает набор записей, но на этот раз это набор записей, который мы ввели.

Повторите первую пару шагов, чтобы получить новую диаграмму с параметром Области, а затем добавьте второй параметр с помощью кнопки Добавить данные и вставьте этот код:

=ValueList(‘Under Target’,’Target’,’Over Target’)

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

Теперь мы можем получить диаграмму либо с одним параметром и несколькими выражениями, либо с двумя параметрами и одним выражением (это также относится и к QlikView). Таким образом, все три части наших сложенных столбиков должны быть получены из одного выражения, которое выглядит следующим образом, добавлены с помощью кнопки Добавить данные:

if(ValueList(‘Under Target’,’Target’,’Over Target’) = ‘Under Target’,
if(sum(Actual) >= sum(Target), 0, sum(Actual)),
if(ValueList(‘Under Target’,’Target’,’Over Target’) = ‘Target’,
if(sum(Actual) >sum(Target), sum(Target),
if(sum(Actual) sum(Target), sum(Actual) — sum(Target), 0))))

Настройте условные обозначения для нового выражения, как только закончите. Результат – диаграмма, не отличающаяся от оригинальной диаграммы Sense.
Чтобы применить цвет, нам нужно перейти в меню Внешний вид и выбрать Цвета и условные обозначения. Здесь выберите выражение из выпадающего меню и отметьте Выражение -Цветовой код.
В окне функции необходим следующий код:
Pick(Match(

ValueList(‘Under Target’,’Target’,’Over Target’),
‘Under Target’, ‘Target’, ‘Over Target’),
rgb(255,100,100), rgb(120,120,120), rgb(100,200,100))

Здесь используется та же функция Valuelist, которую мы использовали для вычисленного параметра. Когда мы говорим о ней в выражении цвета, она вернет значение для столбика, на цвет которого мы смотрим в настоящее время. Кроме того, в данной функции очень полезны комбо Pick и Match: функция Match возвращает значение от 1 до 3 (в зависимости от текущего параметра) и выбирает один из трех цветов. Вы также можете захотеть отображать результаты разными цветами — но зато вы получите идею.

Аналогичные методы использования вычисляемого параметра и нескольких выражений в одном с оператором «если» могут использоваться и в QlikView для решения ситуаций, когда необходимо одновременно применить несколько выражений и параметров.

После применения этого кода наша диаграмма Sense должна выглядеть также разумно:

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

if(ValueList(‘Under Target’,’Target’,’Over Target’) = ‘Under Target’,
if(sum(Actual) >= sum(Target), 0, sum(Actual)),
if(ValueList(‘Under Target’,’Target’,’Over Target’) = ‘Target’,
if(sum(Actual) >sum(Target), sum(Target),
if(sum(Actual) sum(Target), sum(Actual) — sum(Target), 0))))
/ sum(Target)

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

Примеры для загрузки

Как и многие из примеров, которые мы создали, приложения, сопровождающие этот блог, можно загрузить в сообществе Qlik. Есть следующие версии для Qlik Sense и QlikView:
QlikView
Qlik Sense

Если данная статья оказалась полезной, как и примеры, которые создаются, пожалуйста, найдите время, чтобы оставить нам свои лайки и комментарии в сообществе Qlik – это действительно помогает распространить то, что мы делаем среди множества людей.

Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,462 seconds