Мне нравится анализ, который можно выполнить с помощью анализа множеств (Set Analysis) Qlik, но его синтаксис приводит от отсеиванию слишком большого количества бизнес-пользователей. Те же самые бизнес-пользователи, которые используют для своих аналитических задач Excel, недостаточно убеждены, что Qlik доступен для выполнения их пользовательского анализа.
Я считаю, что однажды применение простых и сложных бизнес-правил станет проще, но пока этого не произошло я собираюсь поделиться советами и трюками, чтобы максимально упростить синтаксис Set Analysis. Кроме того, я буду использовать примеры часто используемых индикаторов, которые можно повторно использовать для собственных приложений Qlik.
Одним из запутанных атрибутов синтаксиса Set Analysis является использование двойных кавычек (“) и использование одинарных кавычек (‘). Согласно Qlik Help (отличный ресурс),
Поиск всегда определяется использованием двойных кавычек, например, <Ingredient = {«*Garlic*»}> выберет все ингредиенты, включающие «Garlic».
Поиск также может базироваться на формуле или диапазоне. Например, <Customer = {«= sum (Sales)> 10000»}> выберет всех клиентов с суммой продаж более десяти тысяч, а <Year = {«> = 2008 <= 2010»}> выберет в диапазоне между 2008 и 2010 годами.
С другой стороны, одиночная кавычка (‘) обозначает строковое значение. Например, <Customer = {‘Alles Lusekofter’}>. Однако, это может быть ясно для одних, и смущать других. Еще более сбивает с толку тот факт, что на практике не существует никакой разницы между использованием двойной кавычки («) и одинарной кавычки (‘). Например, <Customer = {‘Alles Lusekofter’}> даст вам тот же результат, что и <Customer = {«Alles Lusekofter»}>, и вопреки тому, что говорится в Qlik Help, <Ingredient = {‘* Garlic *’}> возвращает тот же результат, что и <Ingredient = {«* Garlic *»}>.
Когда мы обучаем тех, у которых нет технического образования написанию Set Analysis, важно оставаться последовательным и оставлять выражения как можно более простыми. Самое простое решение – всегда использовать что-то одно.
Единственное допустимое исключение из этого правила будет при использовании вложенного Set Analysis. Вложенный Set Analysis – это когда мы используем расширенный поиск для фильтрации поля, которое также фильтруется Set Analysis. Например,
<Customer = {«=sum( {$<Ingredient={‘*Garlic*’}>} Sales)>10000»}>
будет фильтровать клиентов, у которых есть продажи более чем на десять тысяч для продуктов, содержащих чеснок.
Вот реальное приложение вложенного Set Analysis, которое помогает определить бизнес-правила, определяющие индикаторы для выигранных и потерянных клиентов, которые являются ключевыми индикаторами в любом приложении по продажам. Наши бизнес-правила следующие:
- Новые клиенты – это те, которые впервые покупали за предыдущие 30 дней.
- Потерянные клиенты – это те, кто покупали ранее (за последние 120 дней), но ничего не купили за предыдущие 60 дней.
- Индикаторы можно просмотреть за предыдущие месяцы, а не только за текущий месяц.
- Учитывайте только положительные транзакции продаж (без возврата)
Наша модель данных включает в себя мастер-календарь с полями Month, Year, Yearmonth и Orderdate; справочником клиентов; и таблицей фактов с полем «Sales».
Короче говоря, выражение будет вычислять первый и последний раз, когда каждый клиент совершил покупку до даты, выбранной пользователем, и посмотрит, попадает ли она в диапазон дней, определенных в определенных ранее бизнес-правилах. Если бы мы сначала вычислили, что клиент совершил покупку до даты, выбранной пользователем, то будем использовать следующее выражение,
min({$<Sales={‘>0’}, Year=, Month=, YearMonth=, OrderDate={‘<=$(=max(OrderDate))’}>} OrderDate)
и нам нужно всего лишь изменить min на max, чтобы вычислить последний раз, когда клиент совершил покупку,
max({$<Sales={‘>0’}, Year=, Month=, YearMonth=, OrderDate={‘<=$(=max(OrderDate))’}>} OrderDate)
Обратите внимание, что мы использовали одинарные кавычки (‘) в выражениях поиска, включенных в предыдущие формулы. Теперь мы делаем простой подсчет,
count(distinct Customer)
и добавляем предыдущие формулы, которые рассчитали первый и последний раз, когда была сделана покупка, сравнивая ее с максимальной датой, выбранной пользователем,
=max(OrderDate)
в расширенном поиске в нашем Set Analysis.
Если первая дата, когда покупка была совершена клиентом, составляет менее 30 дней, клиент считается новым, а если последняя дата, когда была сделана покупка, составляет от 60 до 120 дней, клиент считается потерянным. Наши полученные выражения выглядят так.
Новые клиенты
count({$<Year=, Month=, YearMonth=,Customer={«=min({$<Sales={‘>0’}, Year=, Month=, YearMonth=, OrderDate={‘<=$(=max(OrderDate))’}>} OrderDate)>=$(=max(OrderDate)-30)»}>} distinct Customer)
Потерянные клиенты
count({$<Year=, Month=, YearMonth=,Customer={«=max({$<Sales={‘>0’}, Year=, Month=, YearMonth=, OrderDate={‘<=$(=max(OrderDate))’}>} OrderDate)< $(=max(OrderDate)-60) and max({$<Sales={‘>0’}, Year=, Month=, YearMonth=, OrderDate={‘<=$(=max(OrderDate))’}>} OrderDate)>= $(=max(OrderDate)-120)»}>} distinct Customer)
Обратите внимание, что мы использовали двойные кавычки («), чтобы окружить вложенное расширенное выражение поиска. Кроме того, важно помнить, что мы должны повторять игнорируемые поля (например, Year, Month и YearMonth) как во внешнем, так и вложенном Set Analysis.
Другими замечательными индикаторами, которые можно получить аналогичным образом, являются количество восстановленных и подверженных риску клиентов.
Учебный центр по технологиям анализа данных и BI: расписание/запись на учебные курсы, тестирование разработчиков — https://education.biconsult.ru/
Присоединяйтесь к QUBIC – сообщество профессионалов в области BI! Наши страницы в соц.сетях – расписание учебных курсов, бесплатные учебные материалы, анонсы мероприятий: https://vk.com/club165575964 и https://www.facebook.com/qubicspb
Неофициальный форум разработчиков QlikView & Qlik Sense Russian forum
Канал на Youtube – много обучающих видео и записи вебинаров
Готовые решения “Конструктор финансовой отчетности” и “Анализ продаж”