ДЕНЬ 10
Сет анализ или анализ множества
СЕГОДНЯ

Рассмотрев визуальные представления данных и понимая входные данные мы приближаемся к целой цепочке тем, связанных с анализом, и сегодня мы будем разбирать одну из ключевых тем работы в Qlik Sense – анализ множеств. Наша задача сегодня – понять в каких случаях применяется работа со множествами и какие практические задачи позволяет решать. Из датасетов сегодня средние зарплаты по регионам России позволят нам посчитать несколько интересных показателей и применить анализ множеств на практике. Для непростой темы дня, добавляем на полку комиксы, чтобы сбалансировать вечернее чтение интересной визуальной формой подачи.
Разбираемся
Как анализировать срезы данных по сложной логике
Вычисления для контекста
Что такое сет-анализ (set analysis) или Анализ множеств
Контекст – одна из составляющих успешной визуализации. Любые данные лучше сопровождать дополнительным контекстом, который бы облегчал их понимание или расширял текущий смысл. Ведь просто сумма продаж за сегодняшний день вам ничего не скажет – лучше показать продажи за день по сравнению со вчера или с аналогичным днем в прошлом месяце или прошлом году. Такие сравнения приводят к реальным действиям, а у Qlik есть подходящий для добавления контекста функционал.

В Qlik Sense работа с данными построена на основе работы со множествами. Если вернемся в школу, то вспомним, что множества являются одним из ключевых понятий математики. Можно сказать, что множество это некий математический объект, который является набором каких-либо объектов – элементов, которыми, в нашем случае, являются строки данных. Множество также может состоять из подмножеств или оно может быть пустым. Процесс построения визуализаций частично состоит из процесса создания выборок. Выборки это тоже подмножества изначального множества.

В Qlik есть возможность создания выражений множеств и проведения анализа множеств (сет-анализ, set analysis). В выражениях множеств у вас есть возможность задать свою собственную выборку данных, которая может не зависеть от выбранных пользователем срезов, быть основанной на вашей логике и играть по вашим правилам.
В - множество, А - множество и одновременно подмножество множества В
Анализ множеств является одной из основ для построения дашбордов. Анализ позволит Вам создавать наборы данных – выборки, отличные от всего набора данных, который может быть ограничен фильтрами. Чтобы мы четко понимали что это нам дает – мы можем загрузить в проект данные по продажам торговой сети по всей России, основным направлением которой являются цветы, и поместим две визуализации на лист:
  1. Таблица, отображающая информацию по продажам в разрезе региона, ничем не ограниченная
  2. Таблица, отображающая продажи только основных групп товаров, т.е. цветы
Данные визуализации будут всегда отображаться на листе и подчиняться фильтрам которые Вы поместите на лист.
Что такое и зачем нужен анализ множеств
Когда мы выполняем фильтрации и выбор объектов, на уровне приложения мы формируем определенную выборку. Эта выборка отражается на всех диаграммах и расчетах по умолчанию. Единая выборка удобна при базовой работе с приложением – мы точно знаем, что все показанные в текущий момент данные на диаграммах релевантны к определенному текущему срезу данных. Но иногда случаются ситуации, когда мы хотим зафиксировать какой-то объект на той выборке, которая будет предопределена только нами. Если сказать еще проще – мы хотим задать уникальные фильтры для выбранного объекта, которые не обязательно зависят от фильтров всего приложения.

Если вернуться к примеру с магазинной сетью по продаже цветов, то – нам необходимо отобразить два значения на листе:
  1. Сумма продаж по всей сети
  2. Сумма продаж только основной продукции магазина - цветы
Первая задача будет выполнена легко, с подобными задачами вы сталкивались в прошлых уроках:
SUM (Оборот)

Для решения второй задачи мы будем использовать Анализ множеств:
SUM( { $ < Категория = {'Основные'} > } Оборот)

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

Итак, основные характеристики анализа множеств:
  • используется для создания иной выборки, отличной от текущей выборки приложения
  • используется всегда с агрегацией мер (sum, count, max, min, ...)
  • выражения прописываются в редакторе и начинаются и заканчиваются с фигурных скобок { }
Зеленая выборка – по умолчанию,
серая выборка – определена нами
В каких кейсах следует обращаться к сет-анализу?
  • Сравнение разных периодов времени, например текущий месяц и прошлый месяц
  • Расчеты долей по категории без привязки к текущей выборке
  • Агрегация к особым измерением, на определенном "уровне"
  • Фильтрация по особой категории
  • Исключение выбранных значений

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

Способы указания выборки:
  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 (Выручка), Месяц) ) ) //среднее значение по месяцам

    Знакомство с сет-анализом
    Для новичков
    Практикуемся
    В решении кейсов
    О датасете
    Набор данных представляет собой средние зарплаты по регионам России со средними тратами в ресторанах в разбивке до месяца

    Скачать исходное приложение
    Задания
    1. Загрузить приложение, создать фильтры Регион, Месяц, Год и сводную таблицу с измерениями год, месяц и регион и мерой суммарные зарплаты и средние Траты
    2. Создайте KPI с суммарной средней зарплатой по всем регионам (sum(Зарплаты)) за 2017 год сверьте корректность со сводной таблицей
    3. Создайте KPI со средними тратами по Москве за август 2015, сверьте корректность со сводной таблицей
    4. Создайте KPI, который будет считать долю выбранного в фильтре региона от общего объёма зарплат (для более корректного понимания показателя выберите также месяц), проверьте корректность с расчетом на калькуляторе при сброшенных фильтрах - доля будет 100%
    5. * А теперь рассчитаем тоже в таблице. Добавьте в таблицу показатель, который будет показывать долю зарплат региона от общего объёма в месяце (для данной задачи нормальным будет являться, если при выборе региона доля будет равна 100%)
    6. Создайте KPI, который будет выводить максимальную сумму трат в год за весь период (сумму трат за тот год, когда эта сумма была максимальной)
    Вдохновляемся
    Изучаем прекрасное в сети
    Полезные ссылки по теме
    Предлагаем вам изучить несколько хитрых ссылок по анализу множеств, чтобы овладеть магией Qlik на новом уровне. Не забудьте свою книгу заклинаний!
    Погружаемся
    В тематические книжки и видео
    Артефакты
    Помогут Вам лучше усвоить и вовремя вспомнить основные элементы методик, подходов, последовательностей действий, проверенных практик
    Книги
    Сегодня на полке – статистика в самой доступной и интересной форме. Потрясающая подача материала для такой нудной темы не оставляет вам шанса оторвать взгляд от страниц. Всем листать на ночь и во время завтрака.
    Базовый курс статистики в комиксах
    Несколько авторов
    Книга-комикс научит вас собирать надежные данные, делать правильные выводы, владея ограниченной информацией, и оценивать надежность экзит-поллов и многих других данных, которые падают на вас со всех сторон каждый день.

    Интересный, доступный и при этом научный путеводитель по нашему миру, которым правят данные. В конце книги – все необходимые формулы.
    Итоги этапа
    Попрактиковались в построении выражений для сет аналтитики, теперь этот "монстр" не кажется таким страшным, а решив практические задания, тема закрепилась сама собой. Готовимся к следующему дню погружения в базовые вычисления, работе с операторами и функциями. Всем хорошего дня! Клик Клик Ураааа!
    ~
    DATA YOGA CLUB