Простой (классический) календарь Клик Сенс / 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 голос
Рейтинг статьи

Подписаться
Уведомление о
guest
3 комментариев
Oldest
Newest Most Voted
Встроенная Обратная Связь
Просмотр всех комментариев
Максим
Максим
3 лет назад

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

Аватар пользователя
3 лет назад
Reply to  Максим

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

Алёна
Алёна
5 месяцев назад

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

3
0
Оставьте, пожалуйста, комментарий!x