Уровень 1

Простой календарь. Оптимизированный календарь. The Fastest Dynamic Calendar Qlik Sense

Простой (классический) календарь Клик Сенс / Qlik Sense

В рамках простого календаря Qlik Sense находится минимальная и максимальная даты и в цикле while создается календарь.

Пример кода скрипта для создания календаря QlikSense:

// Получаем из таблицы фактов минимальную и максимальную даты
[TEMP Максимальная Минимальная Дата]:
LOAD min(Дата)   As [Минимальная Дата],
     max(Дата)   As [Максимальная Дата]
Resident [Таблица фактов];

// Минимальную и максимальную даты помещаем в переменные, 
// для того, чтобы использовать их в условии While
Let пНачалоКалендаря_Число    = Num(Peek('Минимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));
Let пОкончаниеКалендаря_Число = Num(Peek('Максимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));

// Удаляем временную таблицу
DROP Table [TEMP Максимальная Минимальная Дата];  

// Создаем набор дат в промежутке от минимальной до максимальной даты
[TEMP Набор дат в интервале MinDate - MaxDate]:  
LOAD 
     Date($(пНачалоКалендаря_Число) + IterNo() - 1) as [TEMP Дата]
AutoGenerate 1
While $(пНачалоКалендаря_Число) + IterNo() -1 <= $(пОкончаниеКалендаря_Число);  

// Формируем таблицу с календарем в моделе Qlik Sense
[Простой календарь QS]:  
Load 
     Date([TEMP Дата])              As Дата,
     Date([TEMP Дата],'DD MMMM YYYY')         As [Дата длинный месяц],
     Text(Date([TEMP Дата],'WWWW MMM YYYY'))       As [День недели МесяцГод],
     'Кв'& Ceil(Num(Month([TEMP Дата]))/3)        As Квартал,
     'Кв'& Ceil(Num(Month([TEMP Дата]))/3) & '-' & Year([TEMP Дата])  As КварталГод,
     Text(Date([TEMP Дата],'YYYY.MM'))          As [Год Месяц],
     Text(Date([TEMP Дата],'MMM YYYY'))         As [Месяц Год],
     Year([TEMP Дата])              As Год,
     Year([TEMP Дата])&'.'&Week([TEMP Дата])       As [Год Неделя],
     Week([TEMP Дата])             As Неделя,
     Day([TEMP Дата])             As День
Resident [TEMP Набор дат в интервале MinDate - MaxDate];

Drop Table [TEMP Набор дат в интервале MinDate - MaxDate];

Результат работы скрипта:

Пример скрипта Клик Сенс для создания простого календаря в модели данных аналитического приложения

Оптимизированный календарь (ускоренное создание при большой таблице фактов). Advanced Calendar

Тот же самый календарь, но для ускоренной загрузки (если большая таблица фактов):

// Получаем из поля Дата минимальное и максимальное значения
[TEMP Максимальная Минимальная Дата]:
LOAD
     Min(FieldValue('Дата',RecNo()))  As [Минимальная Дата],
     Max(FieldValue('Дата',RecNo()))  As [Максимальная Дата]
AutoGenerate FieldValueCount('Дата');

// Минимальную и максимальную даты помещаем в переменные, 
// для того, чтобы использовать их в условии While
Let пНачалоКалендаря_Число    = Num(Peek('Минимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));
Let пОкончаниеКалендаря_Число = Num(Peek('Максимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));

// Удаляем временную таблицу
DROP Table [TEMP Максимальная Минимальная Дата];  

// Создаем набор дат в промежутке от минимальной до максимальной даты
[TEMP Набор дат в интервале MinDate - MaxDate]:  
LOAD 
     Date($(пНачалоКалендаря_Число) + IterNo() - 1) as [TEMP Дата]
AutoGenerate 1
While $(пНачалоКалендаря_Число) + IterNo() -1 <= $(пОкончаниеКалендаря_Число);  

// Формируем таблицу с календарем в моделе Qlik Sense
[Простой календарь QS]:  
Load 
     Date([TEMP Дата])              As Дата,
     Date([TEMP Дата],'DD MMMM YYYY')         As [Дата длинный месяц],
     Text(Date([TEMP Дата],'WWWW MMM YYYY'))       As [День недели МесяцГод],
     'Кв'& Ceil(Num(Month([TEMP Дата]))/3)        As Квартал,
     'Кв'& Ceil(Num(Month([TEMP Дата]))/3) & '-' & Year([TEMP Дата])  As КварталГод,
     Text(Date([TEMP Дата],'YYYY.MM'))          As [Год Месяц],
     Text(Date([TEMP Дата],'MMM YYYY'))         As [Месяц Год],
     Year([TEMP Дата])              As Год,
     Year([TEMP Дата])&'.'&Week([TEMP Дата])       As [Год Неделя],
     Week([TEMP Дата])             As Неделя,
     Day([TEMP Дата])             As День
Resident [TEMP Набор дат в интервале MinDate - MaxDate];

Drop Table [TEMP Набор дат в интервале MinDate - MaxDate];
5 1 голос
Рейтинг статьи
qliksense-expert

View Comments

  • Когда дата в одной таблице все работает, а что делать когда у меня 4-е таблицы фактов по мероприятию и все они связаны между собой по ID мероприятия, но в них разные даты (1 собственно даты мероприятия, 2 даты визитов на сайт, 3 даты отправленных приглашений на сайт, 4 даты опросов)

    • Максим, Вам необходимо объединить в таблице фактов. Т.е. сделать принудительный concatenate([Фаткы]) и одинаково назвать поле с датой. Для переименования поля при загрузке используйте [Мероприятие Дата] As Дата

  • concatenate([Фаткы]) использовать в скрипте по созданию календаря?

Recent Posts

Доступ к системным данным и переменным в Extension Qlik Sense

Введение Иногда при создании расширения Qlik Sense вам необходимо получить доступ к системным данным. Это…

3 года ago

Как собрать с помощью PowerShell информацию по всем QVD из всех директорий?

// Команда, которая будет запускаться в Powershell на сервере LET vPowershellCommand = 'Get-ChildItem -Path ''lib://Data/QVDs''…

3 года ago

Как построить диаграмму Control Chart со скользящим средним в Qlik Sense?

Как построить диаграмму Control Chart со скользящим средним в Qlik Sense? В этой статье будет…

3 года ago

Как сделать чередование цвета в строках прямой таблицы Qlik Sense?

Как сделать чередование цвета в строках прямой таблицы Qlik Sense? Если порядок строк неважен, то…

3 года ago

Как создать Qlik Sense Extension с помощью Nebula.js и React

Обзор В этой серии руководств мы собираемся создать расширение Qlik Sense с использованием Nebula.js и…

3 года ago

Создание Extension с помощью qlik nebula.js и D3.js – Tutorial

Создание расширенного расширения визуализации с использованием Qlik Nebula.js и D3.js   В моем последнем посте я рассказал…

3 года ago

This website uses cookies.