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

Цикл – это все

Прежде всего, нужно понимать, что любое выражение в Qlik – уже своего рода цикл. В стандартном выражении загрузки мы определяем поля, которые будут загружаться/вычисляться, а QlikView затем повторяет указанные действия в выражении загрузки для каждой записи в таблице ввода. Здесь ничего сложного, поэтому пойдем дальше.

«For»-циклы с числами

 Один из способов использования циклов – синтаксис For x = n to m. Такой цикл будет увеличивать переменную «х» от «n» до того момента, как не будет достигнуто значение «m». В этом выражении можно использовать знак доллара. Такой способ полезен для создания таблиц или организации цикла через комбинацию переменных.

Циклы в QlikView

Итоговая таблица:

Циклы в QlikView

«For»-циклы со списками

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

Циклы в QlikView

 Итоговая таблица:

Циклы в QlikView

Циклы с «While»

Альтернативой циклов «For» являются циклы с «while», когда вы точно не знаете, сколько итераций нужно для работы цикла или например, вы хотите сделать некоторые числовые изменения в ваших переменных с каждым циклом. При этом каждый из них является более сложным. Только будьте внимательны – что-то должно завершить цикл!

Циклы в QlikView

 Итоговая таблица:

Циклы в QlikView

Пример: Отслеживание изменений

Допустим, компания хочет отслеживать изменения бизнес-процессов во времени. Для каждого процесса люди загружают отчеты о текущем состоянии. Так, нам нужен фиксатор каждого процесса, поскольку в день приходит по нескольку отчетов.

Решим эту задачу при помощи циклов.

Обратимся к списку файлов отчетов.

Циклы в QlikView

Вот какой скрипт загрузки у меня получился.

Мы начинаем с загрузки источников и сбора мета-данных о версиях отчетов. Используем специальный знак «*» для загрузки всех файлов, соответствующих определенному паттерну:

Циклы в QlikView

Далее считаем флажки изменений. В этом случае используется цикл «for». Так становится гораздо проще работать, чем повторять целый список выражений с «if», помимо этого мы сможем просто добавить новые поля в список выражения for.

Отслеживание изменений разбито на два цикла:

  • Описание (Description), в котором просто устанавливаем наличие (1) или отсутствие (0) изменений,
  • Для числовых полей мы пойдем дальше и оценим качество изменений – были ли они негативными или позитивными.Циклы в QlikView

Мы также хотим изменить метку изменения уровня записи. У нас это будет суммой полей изменений.

Далее мы используем функцию concat() в именах полей, чтобы применить наше выражение. Также нам нужно использовать функцию fabs(), чтобы получить абсолютные значения числовых полей (вне зависимости от знака).

Если все наши метки были равны единице или нулю, то можно просто использовать concat(DISTINCT FName, ‘ + ‘), чтобы выполнить выражение Field1 + Field2 + Field3 … и т.д.Циклы в QlikView

Ниже вы видите таблицу с нашими метками. Изменения состояния отражается с помощью флажка и цвета.Циклы в QlikView

Вот и все на сегодня!