В рамках простого календаря 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]; Результат работы скрипта:
Тот же самый календарь, но для ускоренной загрузки (если большая таблица фактов):
// Получаем из поля Дата минимальное и максимальное значения
[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]; Введение Иногда при создании расширения 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.
View Comments
Когда дата в одной таблице все работает, а что делать когда у меня 4-е таблицы фактов по мероприятию и все они связаны между собой по ID мероприятия, но в них разные даты (1 собственно даты мероприятия, 2 даты визитов на сайт, 3 даты отправленных приглашений на сайт, 4 даты опросов)
Максим, Вам необходимо объединить в таблице фактов. Т.е. сделать принудительный concatenate([Фаткы]) и одинаково назвать поле с датой. Для переименования поля при загрузке используйте [Мероприятие Дата] As Дата
concatenate([Фаткы]) использовать в скрипте по созданию календаря?