Как сделать пользовательскую сортировку дат в календаре QlikView? Вопрос вполне характерный для начинающего пользователя Qlik, поэтому сегодня по шагам расскажу, как создать удобный виджет для работы с динамическими календарями в QlikView, в котором можно выбрать любой интересующий пользователя период.

Виджет динамического календаря: Подготовка

Наш виджет будем создавать в простом приложении, где будут представлены данные по продажам в различных месяцах.

Скрипт выглядит достаточно просто: у нас загружаются данные по менеджерам по продажам, их должности, именам и фамилиям, территории.

Вот какая получается модель данных:

Состоит она из трех таблиц: заказы, менеджер, данные по продажам в определенном регионе и начисленным бонусам.

Итак, создадим сначала основной календарь. Для этого добавляем новую вкладку, нажав в рабочей области вкладок правой кнопки мыши, и дадим ей название «Календарь»:

НА ЗАМЕТКУ! Календарь Qlik – это таблица с данными по времени, которые вы выбрали для аналитики ваших данных.

Для работы с временем в QlikView встроены специальные функции дат и времени, которые преобразуют данные в даты и время. Подробно о функциях дат и времени в хэлпе.

Теперь переместим эту вкладку в конец набора вкладок и загрузим данные календаря qvd.

Для объединения данных используем поле [OrderDate] и выполним скрипт.

Так, мы добавили наш календарь в модель данных:

Теперь можно добавить листбоксы с фильтрами по месяцу и году в приложение:

Затем скроем заголовки и пустые годы в настройках отображения объектов.

Виджет динамического календаря: Инструкция по созданию

До этого момента мы не создали ничего необычного, и перейдем к созданию динамического календаря с выборкой любых периодов.

Шаг 1. После того как вы создали модель данных, включая календарь, вам нужно создать две переменные.

НА ЗАМЕТКУ! После создания переменных убедитесь, что формат даты совпадает с форматом даты поля, которое вы хотите использовать для сортировки дат.

Итак, вот переменные, которые мы должны создать: vFromDate и vToDate, где мы изменили формат даты, для совпадения с полем [Order Date].

datevariables

Шаг 2. После создания переменных, мы создаем триггер, при котором пользователь, выбирая значение в каждой переменной, получает набор дат между началом и концом значений.  По сути, вы создаете условие where в вашем наборе данных для фильтрации записей между датой начала и конечной датой.

Наше выражение в скрипте имеет вид:

LOAD… WHERE [Order Date] >=  vFromDate and <= vEndDate

triggers

Шаг 3. Теперь вы можете использовать эти две переменные для выбора пользовательского набор дат. Но пользователь не всегда знает, как вести значение в эти поля, поэтому использование настоящего календаря в этом случае будет весьма полезным. Создайте два объекта календаря и назначьте каждую переменную для соответствующего объекта календарь.

НА ЗАМЕТКУ! Во вкладке Заголовок добавьте название календаря, Даты с…

Для второго календаря процедура создания аналогична первой.

Вот – теперь мы создали динамический календарь в QlikView!

QlikviewCalendar

До новых встреч! Хороших вам разработок с Qlik!