Анализ множеств
09
/12
Изучим, как в стартапе Green White Solutions используют Qlik для встроенной аналитики своего приложения, а также познакомимся с одним из главных преимуществ Qlik Sense — сет-анализом.
О чем поговорим сегодня
История успеха

Аналитика Qlik внутри ERP-системы Smartup: опыт пилотного проекта в Green White Solutions

Green White Solutions занимается разработкой программного обеспечения для автоматизации бизнес-процессов с 2012 года. Компания фокусируется на развитии трех основных продуктов — ERP-системы Smartup для компаний FMCG-сектора, HRM-решения Verifix для эффективного управления персоналом и решения Darmon в сфере государственного регулирования медицинской продукции (в соответствии с законодательством Республики Узбекистан). Десятки тысяч сотрудников в более чем 500 компаниях используют решения Green White Solutions.

В Green White Solutions особое внимание уделяют развитию функционала ERP-системы Smartup, с каждым релизом добавляя автоматизацию новых бизнес-процессов, чтобы помочь компаниям цифровизовать работу в удобном формате.
В 2022 году в компании решили встроить в ERP-решение функционал бизнес-аналитики, чтобы конечные пользователи системы получали качественную интерактивную отчетность в едином окне, без необходимости выгрузки данных и использования сторонних решений.

Выбор Qlik и пилотный проект

Санжар Абдуразаков
BI разработчик, Green White Solutions
Изначально мы ориентировались на встраивание одной из популярных BI-систем в собственную ERP-платформу, поскольку такой вариант поможет нам концентрировать ресурсы разработчиков на ключевых задачах компании, не проигрывая в качестве финального продукта. После сравнения нескольких BI-решений мы остановились на встроенной аналитике Qlik. Помимо сильного аналитического функционала, Qlik предоставляет высокий уровень экспертной поддержки локально – мы знаем, что при возникновении любых вопросов, нам помогут представители компании в СНГ. Пилотный проект мы также делали совместно с архитектором Qlik.
В рамках пилотного проекта в Green White Solutions разработали базовый набор аналитики, включающий:
1
Общий дашборд с ключевыми KPI — выручка, маржинальность, количество активных клиентов за период; топ-5 продуктов клиентов, клиентов и магазинов по выручке,
2
Аналитика по продуктам и клиентам — рейтинг наиболее прибыльных товарных групп, уровень запасов, география продаж, выручка по товарным группам и конкретным продуктам,
3
Детальная аналитика по продуктам — детализированный отчет по клиентским KPI.
«Такой набор аналитики поможет ключевым пользователям Smartup, включая директоров по продажам, менеджеров и супервайзеров оценить новый функционал аналитики и более эффективно выстраивать взаимоотношения с клиентами на основе данных. Кроме того, у конечных пользователей нет необходимости проходить повторную аутентификацию для просмотра аналитических дашбордов — визуализации доступны после логина в ERP-систему благодаря сквозной аутентификации. Благодаря гибким настройкам доступа в Qlik, безопасность данных тоже соблюдается: каждый пользователь видит только те данные и показатели, которые ему разрешены, в соответствии с его ролью,» — отмечает Санжар Абдуразаков.
Семен Астахов
архитектор решений по встроенной аналитике, Qlik
В Green White Solutions выделили отдельную группу специалистов, которая прошла обучение новой платформе Qlik. То есть, помимо уже работающих дашбордов, компания получает и готовые кадры, которые в дальнейшем могут самостоятельно поддерживать и развивать визуальную аналитику, удовлетворяя потребности своих клиентов.
Сейчас в Green White Solutions собирают обратную связь от пользователей, и в ближайшем релизе уже будут расширять функционал аналитических панелей в соответствии с их пожеланиями.
Вебинар по пилотному проекту в сфере аналитики
Вместе с коллегами из Qlik и Санжаром Абдуразаковым из Green White Solutions
Теория

Set-анализ: анализ множеств

Процесс построения визуализаций в Qlik Sense частично состоит из процесса создания выборок. Выборки это — подмножества изначального множества, то есть «частичка» таблицы исходного источника данных.

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

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

Анализ множеств — способ отфильтровать данные внутри расчетного поля. И сохранить результат в этом поле.
Например...
1
Мы можем загрузить в проект данные по продажам торговой сети по всей России, основным направлением которой являются цветы, и поместить две визуализации на лист:
  1. Таблица, отображающая информацию по всем продажам в разрезе региона, ничем не ограниченная
  2. Таблица, отображающая продажи только по основной группе товаров, т. е. по цветам.
Данные визуализации будут всегда отображаться на листе и подчиняться фильтрам которые вы поместите на лист.
2
Если нам необходимо отобразить два значения на листе:
  1. Сумма продаж по всей сети
  2. Сумма продаж только основной продукции магазина — цветы
… то первая задача будет выполнена легко: это будет простой суммой по показателю, например SUM (Оборот)
3
Но для решения второй задачи, мы не можем использовать такую формулу, ведь нам надо ограничить нашу выборку, и просуммировать только строки по одной категории товаров. Здесь можно использовать Анализ множеств, например, написать: SUM ({ $ < Категория = {'Основные'} > } Оборот)
При использовании анализа множеств, у нас есть возможность не ассоциировать выбранный нами объект с другими, тогда как по умолчанию все объекты всегда ассоциируются друг с другом.
Итак, основные характеристики анализа множеств:
используется для создания иной выборки, отличной от текущей выборки приложения
используется всегда с агрегацией мер (sum, count, max, min, ...)
выражения прописываются в редакторе и начинаются и заканчиваются с фигурных скобок { }
В каких кейсах следует обращаться к сет-анализу?
  • Сравнение разных периодов времени, например текущий месяц и прошлый месяц
  • Расчеты долей по категории без привязки к текущей выборке
  • Агрегация к особым измерением, на определенном «уровне»
  • Фильтрация по особой категории
  • Исключение выбранных значений

Синтаксис, ключевые операторы и механизмы

Синтаксис состоит из...
Идентификатор
Идентификатор — то, как вычисление будет соотноситься с активной выборкой. Есть несколько значений:
  • $ - текущая выборка. Обозначает, что необходимо брать данные из выборки, на которую влияют текущие фильтры. Это значение идентификатора можно не прописывать, поскольку такая логика является логикой по умолчанию.
  • 1 — весь объем данных, загруженный в проект, независимо от фильтров. Данный идентификатор указывает, что при расчете необходимо проигнорировать все выборки и фильтры приложения. Будут учтены только те выборки, которые указаны в текущем вычислении. Если ничего не указано, в расчет будет приниматься вся таблица данных. Так, SUM ({1} Выручка) всегда будет возвращать общую сумму выручки по всей таблице данных.
  • TOTAL — измерения в визуализациях игнорируются. Т. е. если мы создали плоскую таблицу, указав измерение Регион, и в мере указали SUM (TOTAL Оборот), то в каждой строке таблицы будет отображен суммарный оборот по всем регионам таблицы. Другими словами, TOTAL рассчитывает выражение без учета измерений таблицы/диаграммы, хотя выборки всё равно влияют.
Менее популярные значения идентификаторов:
  • $1 – означает, что необходимо брать данные из предыдущей выборки (т.е. аналогично нажатию клавиши «назад»)
  • $_1 – означает, что необходимо брать данные из следующей выборки (т.е. аналогично нажатию клавиши «вперед»). Также приемлемо использование идентификаторов $_2, $_3, $_N для получения данных на один, два, и N шагов вперед
Модификатор
В модификаторе множества прописываются изменения основной выборки.

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

Например: <Год={2019,2020}, Город={'Ташкент'}>.
Способы указания выборки:
  1. Выборка, основанная на выбранных значениях другого поля (практически не используется). Например: <[Город отправки]=[Город прибытия]>. Данная операция является очень ресурсозатратной, при большом количестве уникальных значений потребует много ресурсов CPU, поэтому ее следует избегать.
  2. Выборка списка значений. Например: <Страна={'Узбекистан', 'Кыргызстан', 'Туркменистан'}>. Здесь в фигурные скобки помещается множество элементов которое должно участвовать в расчетах. Можно также использовать символ «*» для поиска множества значений. Например: Год={'20*'} - определит все года с маской «20*», т. е. 2001, 2002, 2003 и далее.
Для модификаторов множества действительны такие функции множеств, как объединение, исключение, пересечение.

//Объединение
Sum({<Город={‘Ташкент’}, Магазин={‘Havas’}>+< Город={’Самарканд’}, 
Магазин={‘Makro’}>} Выручка)
//Такая запись вернет сумму выручки по Магазинам Havas в Ташкенте с выручкой магазинов Makro в Самарканде.


//Исключение
Sum({<Город={‘Бухара’}>-< Магазин={‘Havas’}>} Выручка)
//или
Sum({<Город={‘Бухара’}, Магазин=-{‘Havas’}>} Выручка)
//Такая запись вернет сумму выручки всех магазинов в Самарканде, за исключением магазина Havas


//Пересечение
Sum({1*<Город={‘Ташкент’}>} Выручка)
//Такая запись вернет сумму выручки всех магазинов в Ташкенте, независимо от текущих фильтров и выборок.
Агрегация
Агрегация — то, как будет проагрегировано рассчитанное поле на диаграмме. Функции агрегирования позволяют производить вычисления с детализацией не зависящей от измерения, или при отсутствии измерения как такового.

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

AVG(AGGR(SUM(Выручка), Филиал))
//среднее значение по сумме оборотов по филиалам

При этом, для среднего значения формула имеет вид:
AVG(TOTAL AGGR(SUM(Выручка), Месяц))
  • //среднее значение выручки по месяцам
Практика
Игорь Буробин
эксперт по Qlik Sense, «Про BI»
  • Практическое задание 1
    Мы продолжаем работать на основе уже загруженных данных (из практики дня 05).

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

    1. В приложении, посвященном фильмам IMDB, создайте новую визуализацию «Линейчатая диаграмма» (barchart).
    2. Добавьте в нее измерение — Жанр.
    3. Кликните на добавление меры и перейдите в редактор выражения меры.
    4. В редакторе укажите меру, которая вычисляет количество разных кодов произведений (из предыдущих занятий вы должны знать необходимую функцию агрегацию), но не выходите из редактора. Добавим выражение анализа множеств, фильтрующее выборку по последнему году. Запишите такое выражение анализа множеств {<Год={2017}>} в созданное ранее выражение меры. Назовите созданную меру «2017».
    5. Аналогичным образом добавьте меру с названием 2016 и в ней укажите выражение анализа множеств {<Год={2016}>}. У Вас должна получится визуализация, похожая на изображенную на рисунке ниже.
Выражение анализа множеств записывается внутри функции агрегации. Например, для суммы по полю Продажи мы бы могли написать так — SUM ({<Год={2017}>} Продажи).
Полезные ссылки

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

Весь сет-анализ в Qlik Sense за 50 минут
Подробное видео от эксперта Евгения Стучалкина
Вебинар по анализу множеств
Вебинар по сет-анализ от Datanomix Academy
Тренажер по анализу множеств
Тренировочные заданич по set analysis в Qlik Sense - разных уровней и по разным тематикам датасетов
Вебинар дня
День 09
Анализ множеств в Qlik Sense вместе с экспертом Владимиром Митиным, системным архитектором, Первый Бит
Перейти к предыдущим дням:
Qlik Sense Узбекистан. День 00
Подготовительный день и установка программы
Qlik Sense Узбекистан. День 01
Что такое Qlik Sense + История успеха Baraka Market
Qlik Sense Узбекистан. День 07
Базовые визуализации + История успеха Novartis
Qlik Sense Узбекистан. День 08
Функции и вычисления + История успеха ARCA Group