Сет-анализ: вычисления
10
/21
О чем мы поговорим сегодня
Изучим как в «Центре развития трудовых ресурсов» используют Qlik для целей анализа данных Министерства труда и социальной защиты; а также познакомимся с главной фичей Qlik Sense — сет-анализом!
ИСТОРИЯ УСПЕХА
Как «Центр развития трудовых ресурсов» использует аналитику вместе с Qlik
Сегодня у нас будет видео-кейс: на конференции Qlik Data Transformation Day 2022 (~12 минут) Бахтияр Жазыкпаев, Директор департамента анализа и обработки данных, АО «Центр развития трудовых ресурсов» (ЦРТР), рассказал о переходе на Qlik Sense как единый инструмент бизнес-аналитики, а также кейсах использования аналитики для Министерства труда и социальной защиты.
Выступление на Qlik Data Transformation Day 2022 в Astana Hub
Как Центр развития трудовых ресурсов использует аналитику?
АО «Центр развития трудовых ресурсов» занимается сопровождением, поддержкой и модернизацией информационных систем Министерства труда и социальной защиты населения Республики Казахстан.

В 2021 году была выбрана система Qlik Sense для анализа больших потоков данных и из 15 информационных систем Министерства труда и социальной защиты населения РК (по трем направлениям: труд, занятость и миграция; социальное обеспечение и страхование; социальная помощь и социальные услуги).

Qlik был выбран по следующим критериям:
Привлечение разработчиков и администраторов баз данных необходима лишь на начальном этапе внедрения платформы
Аналитики самостоятельно выстраивают аналитические отчеты и дашборды необходимые в работе
У платформы дружелюбный, интуитивно понятный интерфейс не требующий от пользователя специальных знаний по обработке данных
Все базы данных находятся на одной платформе, нет необходимости в сборе данных с нескольких источников
Вместе с Qlik Sense, все информационные системы компании объединены в одной платформе. Нет необходимости формировать различные выборки и объединять их по отдельности
Кроме того, аналитики теперь могут самостоятельно работать используя фильтры, а формирование анализов и выборок происходит без участия разработчиков системы.
ТЕОРИЯ
Сет-анализ или анализ множеств
Процесс построения визуализаций в Qlik Sense частично состоит из процесса создания выборок. Выборки это – подмножества изначального множества, то есть “частичка” таблицы исходного источника данных.

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

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

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

Для этого следует прописать формулу в диаграмме:
Sum( {<Месяц=>} [Запас на конец периода])
Почему так?

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

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

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

//Объединение
Sum({<Регион={‘Владимирская область’}, Магазин={‘X5’}>+< Регион={’Иркутская область’}, 
Магазин={‘FixPrice’}>} Выручка)
//Такая запись вернет сумму выручки по Магазинам Х5 во Владимирской области с выручкой магазинов FixPrice в Иркутской области.


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


//Пересечение
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}>} Продажи).
Полезные ссылки
Если вам интересно узнать больше, переходите по ссылкам для дальнейшего изучения тем и расширения кругозора
Михаил Сирик
cтарший менеджер, Datanomix.pro
Работа с анализом множеств
Михаил Сирик из Datanomix.pro рассказывает в вебинаре Datanomix Academy про сет-анализ.
Телеграм-сообщество Qlik
Приглашаем вас присоединиться к телеграм-чату Qlik, чтобы общаться с коллегами, задавать вопросы экспертам и оставаться в курсе новостей Марафона.
@qlikbi_chat
Обзор дня и встреча с экспертом: День 10
Юлия Дошлова, ведущий разработчик и тренер по Qlik Sense, ПАО Газпром нефть

2022