Урок 2: Идентификатор. Оператор. Модификатор. Примеры использования


Что такое Set Analysis и из чего он состоит?

Set Analysis (Анализ множеств) – это основной инструмент, который позволяет в сложных приложениях ограничивать подмножество данных для построения различных диаграмм, а также позволяет завязываться на конкретные выборки в конкретных измерениях. Фактически, множества задают контекст в expression, в разрезе которого мы анализируем данные.

У анализа множеств (set analysis) существуют 3 важных компонента:

Эти три компонента мы рассмотрим дальше в уроке.

Если кратко, то…

Основное предназначение Set Analysis – это аналог условия WHERE в визуализации (на диаграмме, в KPI, в столбце таблицы).

Рассмотрим в нашей модели простую функцию sum(Продажи).

Разбор простой схемы Set Analysis На примере sum(Продажи)

Для Set Analysis нам необходимо:

  1. Понимать, как текущая выборка должна влиять на результат расчета
  2. Знать по каким полям мы хотим отфильтровать значение выражения sum(Продажи) дополнительно (или независимо) от нашей выборки в модели

Что такое текущая выборка?

Пусть у нас есть наше выражение sum(Продажи) и три фильтра: Год, Менеджер, Номенклатура.

Исходная сумма всех строк без фильтрации – 3.44 млрд.

Теперь отфильтруем модель по менеджеру Сидорову, Номенклатуре Палатки и установим год 2016: теперь сумма стала 2.17 млн.

Т.е. по умолчанию наша формула sum(Продажи) напрямую связана с моделью данных. Но, что если мы хотим посмотреть продажи всех загруженных данных в модели (т.е. проигнорировать выборки). Для этого создаем вторую формулу: sum({1} Продажи)

 

1 – это идентификатор, с помощью которого игнорируется текущая выборка модели.

Теперь добавим формулу sum({$} Продажи)

Видим, что формулы sum(Продажи) и sum({$} Продажи) возвращают одинаковый результат. $ – идентификатор, который указывает на текущую выборку.

Итак, идентификатор определяет, как текущие выборки соотносятся с формулой. Можно игнорировать выборки, можно переопределять выборки, комбинировать выборки – дальше покажу и опишу.

Описание синтаксиса Set Analysis

После беглого рассмотрения понятия “выборка” и “идентификатора” в Set Analysis перейдем к синтаксису простого варианта.

1. В любом Set Analysis есть функция и некоторая величина, над которой производится математическое действие (сумма, подсчет количества и т.п.):

2. Set Analysis начинается и заканчивается фигурными скобками {}:

3. Идентификатор:

4. Модификатор, или по-простому, Фильтр на поле (условие фильтрования поля):

Поле Год и значение, которым необходимо отфильтровать (т.е. условие where год = 2017).

Добавим эту формулу в модель и получим следующий результат:

1.7 млрд. Теперь поменяем текущие фильтры, сбросим выборки по менеджеру, номенклатуре, а по году установим 2017 год.

Т.е. теперь мы видим, что формула sum({1<Год={2017}>} Продажи) независимо от выборок в модели возвращает продажи за 2017 год.

Теперь рассмотрим как работают простые варианты Set Analysis

Set Analysis по менеджеру с учетом текущей выборки

Пусть есть у нас несколько формул. Создадим тестовую визуализацию:

sum({$<Менеджер={'Петров'}>} Продажи)
sum({$<Менеджер={'Сидоров'}>} Продажи)
sum({$<Менеджер={'Ильинская'}>} Продажи)
sum({$<Менеджер={'Добряков'}>} Продажи)
sum({$<Менеджер={'Охлобыстин'}>} Продажи)
sum({$<Менеджер={'Иванов'}>} Продажи)
sum({$<Менеджер={'Розницов'}>} Продажи)

sum(Продажи)

Визуализация без выборки:

Теперь выберем 2016 год и 4 месяца. Все формулы среагируют на текущую выборку.

Игнорирование выборки в конкретном поле

Теперь на наш лист добавим еще два фильтра, менеджер и номенклатура. Выберем менеджера Иванов и номенклатуру Лыжи. Таблица покажет продажи только по Иванову.

Как сделать так, чтобы в таблице учесть текущую выборку по номенклатуре, периоду (год и месяц), но при этом проигнорировать выборку в поле менеджер?

На помощь придет следующий синтаксис: sum({$<Менеджер=>}Продажи)

Еще пример с Set Analysis – разница модификаторов

Рассмотрим пример, в котором выберем год 2016 и три Номенклатуры:

Таблица содержит формулы:

sum({1} Продажи)
sum({$} Продажи)
sum({1-$} Продажи)
sum({1<Менеджер={'Иванов'}>} Продажи)
sum({$<Менеджер={'Иванов'}>} Продажи)
sum({1<Менеджер={'Иванов'}>-$<Менеджер={'Иванов'}>} Продажи)

Дадим пояснения формулам в таблице (в текущей выборке выбран 2016 год и номенклатура Доски, Лыжи, Одежда):

  • sum({1} Продажи) – сумма всех продаж по всей модели (игнорируем выборки)
  • sum({$} Продажи) – сумма продаж за 2016 год по выбранной номенклатуре
  • sum({1-$} Продажи) – разница всех продаж по всей модели и суммы продаж за 2016 год по выбранной номенклатуре
  • sum({1<Менеджер={'Иванов'}>} Продажи) – сумма всех продаж по всей модели по менеджеру Иванову
  • sum({$<Менеджер={'Иванов'}>} Продажи) – сумма продаж за 2016 год по выбранной номенклатуре по менеджеру Иванову
  • sum({1<Менеджер={'Иванов'}>-$<Менеджер={'Иванов'}>} Продажи) – разница всех продаж по всей модели по менеджеру Иванову и суммы продаж за 2016 год по выбранной номенклатуре по менеджеру Иванову.

Сумма двух подмножеств в выражении Qlik Sense. Использование операторов

Допустим, что мы хотим получить таблицу, в которой в строках будут года, а в столбце будет

  • сумма продаж по множеству Менеджеры: Петров и Сидоров с товарами: Лыжи и Велосипеды

Плюс

  • сумма продаж по множеству Менеджеры: Иванов и Добряков с товарами: Прочее, Одежда и Посуда.

Самый простой способ, который напрашивается, это сделать так: сделать две суммы с двумя Set Analysis:

  1. Менеджер={‘Петров’,’Сидоров’},Номенклатура={‘Лыжи’,’Велосипеды’}
  2. Менеджер={‘Иванов’,’Добряков’},Номенклатура={‘Прочее’,’Одежда’,’Посуда’}

Но можно все прописать в одном выражении:

sum(
  {
    	<Менеджер={'Петров','Сидоров'},Номенклатура={'Лыжи','Велосипеды'}>
        +
        <Менеджер={'Иванов','Добряков'},Номенклатура={'Прочее','Одежда','Посуда'}>
    } 
    Продажи
)

Вот схематичное объяснение суммы двух множеств при записи в 1 SET ANALYSIS:

Теперь, написанное выражение мы подставляем в таблицу и получаем требуемый результат:

Разница между текущей выборкой и суммой четырех подмножеств в текущей выборке

Допустим у нас есть сумма продаж по текущей выборке:

 

0 комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *