В этой статье расскажу, как использовать переменные и знак доллара в выражениях QlikView и Qlik Sense в календаре (в том числе в скриптах загрузки). Мы уже как-то писали о календаре в QlikView, но сегодня – «фишки», связанные с популярными форматами использования переменных с параметрами в календарях.

Переменные с параметрами: Введение

Переменные с параметрами делают код более гибким и наиболее полезны при работе со сводными таблицами, где есть фиксированное количество столбцов (например, 12 месяцев) и более чем одна суммарная колонка (например, «Итого» и «Среднее»).

Также иной способ использования этих параметрических переменных – работа в скрипте загрузки, для очистки скрипта и удаления повторений.

Повторы, повторы, повторы

Бывает так, что у вас есть ряд повторяющихся задач в скрипте загрузки, которые делают скрипт сложночитаемым, а маленькие изменения в коде приводят к необходимости большого объема рутинной работы по правке всего скрипта. Здесь очень хорошо помогают переменные.

Например, работа с датами. Когда даты выгружаются из текстовых файлов нужно сделать две операции: сконвертировать текст в число, а затем в формат даты. Код для этой задачи с переменной:

Можно использовать для нескольких полей:

Вы заметили, что параметр в переменной находится там, где появляется $1 в коде переменной. $1 может повторяться, позволяя вставлять тот же текст несколько раз. Дополнительные параметры могут быть использованы в списке через запятую.

Иногда в текстовых файлах или некачественных базах данных вместо пустых значений можно вставлять текст NULL. Лучше всего в этом случае работать с выражением if:

Переменная, которую мы используем в скрипте в этом случае:

Такие же переменные могут использоваться в случае пропусков или нулевых значений дат, таких как 1/1/1900.

А теперь перейдем к более сложному примеру с календарем.

Исключение нерабочих дней в календаре

Функция NetworkDays очень полезна, ведь она присваивает дням недели цифры с понедельника по пятницу. Естественно, в функцию не встроен автоматический учет государственных праздников, т.к. во всех странах даты праздников отличаются. Поэтому здесь можно ввести список с разделителем в виде запятой, но этот список может быть очень длинным, что будет весьма затратно по времени кодинга.

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

В этом случае нам нужно создать список праздников с датами, который поддерживается извне. Нужно создать временную таблицу и запрасить ее (для этого вам нужно понимать функции PEEK и FOR).

Итак, в этом случае код для наших переменных выглядит следующим образом:

Когда мы, например, запустим список государственных праздников Великобритании итоговая переменная будет выглядеть таким образом:

В скрипте загрузки переменную вписать можно так:

Внутри приложения можно использовать переменную в таком формате:

Надеюсь, эта статья дала вам новые идеи по работе с параметрами в приложениях QlikView и Qlik Sense (не только в календаре).

Коммутируйте! Делитесь идеями!