Продвинутые фильтры в плоском дизайне

Чтобы продолжить серию публикаций о плоском дизайне QlikView, я более подробно остановлюсь на вопросе функциональности продвинутых фильтров, httpss://www.youtube.com/watch?v=v5UtAFkeXzU

Обратите внимание Я записал видео в самом высоком разрешении из возможных. Поэтому, пожалуйста, смотрите его в расширении 1080 или 720P (HD) для лучшего качества. Удачи!

QTip # 11 — Так сколько же клиентов составляет большую часть Ваших продаж?

Вы, очевидно, знаете, принцип Парето — 80% результатов получены при помощи 20% усилий. QlikView предлагает многочисленные инструменты, позволяющие визуализировать принцип Парето. Вот только некоторые из них, которые приходят на ум:

  • Довольно легко создать отчет по Парето и показать совокупный вклад Клиентов (Поставщиков, Продуктов ..) в общии % от Продаж (Закупки, Прибыль …)
  • Используя Ограничений Измерения, мы можем ограничить диаграмму таким образом, чтобы показывать только те значения, которые накапливаются в определенном % от общей суммы.
  • Используя Действия, мы можем применить выбор по Парето на любом поле, основываясь на любом выражении.

Один часто задаваемый вопрос до недавнего времени ставил меня в тупик. Как я могу использовать один расчет, чтобы показать, какое количество Клиентов (Поставщиков, Продуктов, …) способствуют 80% моих Продаж (Покупок, Прибыли …)? Все, чего я хочу, это простой текстовый объект:

Клиенты NNN Вносят 80% Продаж

Во-первых, я думал о сложной функции AGGR (), но тогда мне придется найти способ, чтобы аккумулировать значения в Aggr (), и предварительно сортировать агрегированные значения в определенном порядке. Если такое решение и существует, я не мог до него додуматься.

Тогда, я стал рассматривать последовательность действий, которые участвуют в применении выбора Парето, подсчитывая доступных Клиентов и сохраняя количество в переменной, а затем восстановливая предыдущии настройки с помощью обратного действия. В то время, я обнаружил, (по крайней мере для себя), что обратное действие не только возвращяет выбор, но и отменяет любые изменения в значениях переменных. Я уже писал об этом статью ранее Q-Tip # 3.

Недавно моя дочь задала мне тот же вопрос. На этот раз, идея появилась почти мгновенно (возможно, потому что я не хотел терять лицо в глазах моей дочери) — Альтернативные Состояния!

Если мы создадим Альтернативное Состояние и используем его только для расчета Парето, то мы сможем легко использовать Действия, чтобы создать выбор Парето, а затем подсчитать количество доступных Клиентов в Альтернативном Состоянии — столько раз, сколько необходимо!

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

Единственное предостережение состоит в том, что этот расчет предполагает использование Действия, и, следовательно, его нужно как-то запустить. Многие из «автоматизированных» триггеров, таких как «Открыто» или «Активировать» могут не работать в среде AJAX. Самое надежное решение, даже если оно будет Вас немного раздражает, это добавление кнопки «Пересчитать», которая можно будет нажимать, чтобы обновлять расчеты.

Это может быть заманчивым для запуска Действия «на Любом Выборе», однако я бы не рекомендовал использовать это функцию слишком часто. Имейте в виду, что Действия, которые запускаются при любом выборе, будут выполняться при каждом щелчке мыши и в конечном итоге вызывает существенное снижение производительности.

Итак, пошаговый рецепт для вычисления количества Клиентов, которые составляют 80% от стоимости покупки:

Во-первых, создайте Альтернативное Состояние и назовите его Парето.

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

  • Копировать Содержание Состояния из состояния по умолчанию $ в Альтернативное состояние Парето.
  • Очистите поле. Укажите клиента как поле и Парето и как Альтернативное Состояние.
  • Выберите Парето. Укажите Клиента, как поле и выражение по Продажам, как выражение. Укажите 80 как процент (удивительно, проценты форматируются как целые числа, а не как проценты в виде десятичных чисел).

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

= IF( count({Pareto} distinct Customer) = count (ALL Distinct Customer),       'Press the Recalculate button to perform the Pareto calculation',      num(count({Pareto} distinct Customer)) & ' Customers make up 80% of Sales')

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

Этот трюк может показаться очевидным. Для меня, это еще один пример того, как Альтернативное Состояние может использоваться творчески для различных необычных аналитических решений. Если Вам нравится содержание моего блога, пожалуйста, обратите внимание на мою новую книгу «QlikView Your Business». Кроме того, просмотрите программу предстоящего Masters Summit по вопросам QlikView в Нью-Йорке и в Копенгагене, и убедитесь в том, что Вы готовы перенести Ваши навыки работы с QlikView на следующий уровень.

 

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

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

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

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

65 queries in 0,425 seconds