Содержание урока по Qlik Sense
В этой статье будет разобран подход для сравнения продаж по двум периодам. В примере будут использованы: Set Analysis, Альтернативные состояния, Расширение Date Picker и Qlik Sense (версия Feb 2019).
Для начала сгенирируем данные для модели. Используем календарь Qlik Sense и генерацию элементов справочников в цикле:
SET ThousandSep=' ';
SET DecimalSep=',';
SET MoneyThousandSep=' ';
SET MoneyDecimalSep=',';
SET MoneyFormat='# ##0,00 ₽;-# ##0,00 ₽';
SET TimeFormat='h:mm:ss';
SET DateFormat='DD.MM.YYYY';
SET TimestampFormat='DD.MM.YYYY h:mm:ss[.fff]';
SET FirstWeekDay=0;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='ru-RU';
SET CreateSearchIndexOnReload=1;
SET MonthNames='янв;фев;мар;апр;май;июн;июл;авг;сент;окт;ноя;дек';
SET LongMonthNames='январь;февраль;март;апрель;май;июнь;июль;август;сентябрь;октябрь;ноябрь;декабрь';
SET DayNames='пн;вт;ср;чт;пт;сб;вс';
SET LongDayNames='понедельник;вторник;среда;четверг;пятница;суббота;воскресенье';
SET NumericalAbbreviation='3:тыс.;6:млн.;9:млрд.;12:трлн.;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';
//Формирование календаря
QuartersMap:
MAPPING
LOAD rowno() as Month,
'Кв.' & Ceil (rowno()/3) as Quarter
AUTOGENERATE (12);
Let varMinDate = Num(MakeDate(2017,1,1));
Let varMaxDate = Num(Today());
TempCalendar:
LOAD $(varMinDate) + Iterno()-1 As Num,
Date($(varMinDate) + IterNo() - 1) as TempDate
AutoGenerate 1
While $(varMinDate) + IterNo() -1 <= $(varMaxDate);
Календарь:
Load
Date(TempDate) As Дата,
week(TempDate) As Неделя,
Month(TempDate) As Месяц,
Text(SubField(Date(TempDate,'DD MMMM YYYY'),' ',2)) As МесяцПолный,
ApplyMap('QuartersMap', month(TempDate), Null()) As Квартал,
Year(TempDate) As Год,
Day(TempDate) As НомерДень,
Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) As НеделяГод,
Month(TempDate) & '-' & Year(TempDate) As МесяцГод,
ApplyMap('QuartersMap', month(TempDate), Null()) & '-' & Year(TempDate) As КварталГод,
WeekDay(TempDate) As ДеньНедели
Resident TempCalendar
Order By TempDate ASC;
Drop Table TempCalendar;
// Генерация справочников
For i=1 to 15
Контрагенты:
Load
$(i) As [Контрагент ID],
'Контрагент $(i)' As [Контрагент Наименование]
AutoGenerate 1;
Next i
For i=1 to 20
Товары:
Load
$(i) As [Товар ID],
'Товар $(i)' As [Товар Наименование]
AutoGenerate 1;
Next i
GenerateFact:
LOAD [Контрагент ID]
Resident Контрагенты;
JOIN (GenerateFact)
LOAD [Товар ID]
Resident Товары;
JOIN (GenerateFact)
LOAD Дата
Resident Календарь;
NoConcatenate
Fact:
LOAD
[Контрагент ID],
[Товар ID],
Дата,
Rand()*(Rand() + Rand()*Rand())*(4000-4000*Rand()) + Rand()*100 - Rand()*50 as Продажи
Resident GenerateFact;
DROP Table GenerateFact; Загружаем данные, получится такая вот модель Qlik Sense:
Первым шагом необходимо создать 2 состояния в режиме правки листа (Основные элементы -> Другие состояния):
Затем используем элемент Qlik Dashboard bundle -> Date Picker (выбираем дату и в свойствах “Другие состояния” выбираем ВыборкаДаты1). Создаем два элемента Date Picker (второй настраиваем с состоянием ВыборкаДаты2):
Затем формируем таблицу: в измерении Контрагент, в мерах создаем следующие выражения:
Выражение 1:
sum({<Дата=[ВыборкаДаты1]::Дата>} [Продажи]) Метка для выражения 1:
='Продажи '&min({[ВыборкаДаты1]} Дата)&' - '&max({[ВыборкаДаты1]} Дата) Для выражения 2 делаем все по аналогии, только используем состояние [ВыборкаДаты2].
Введение Иногда при создании расширения Qlik Sense вам необходимо получить доступ к системным данным. Это…
// Команда, которая будет запускаться в Powershell на сервере LET vPowershellCommand = 'Get-ChildItem -Path ''lib://Data/QVDs''…
Как построить диаграмму Control Chart со скользящим средним в Qlik Sense? В этой статье будет…
Как сделать чередование цвета в строках прямой таблицы Qlik Sense? Если порядок строк неважен, то…
Обзор В этой серии руководств мы собираемся создать расширение Qlik Sense с использованием Nebula.js и…
Создание расширенного расширения визуализации с использованием Qlik Nebula.js и D3.js В моем последнем посте я рассказал…
This website uses cookies.