Префикс и суффикс unless используется для создания условного предложения, определяющего вычисление или невычисление оператора либо условия «exit». Это короткое утверждение можно использовать вместо полного оператора if..end if.
Действия statement или exitstatement выполняются, только если элемент condition имеет значение False.
Префикс unless можно использовать в операторах, включающих в себя один или несколько других операторов, в том числе дополнительные префиксы when или unless.
Аргументы
Аргумент
Описание
condition
Логическое выражение, имеющее значение True или False.
statement
Любой оператор скрипта Qlik Sense, за исключением операторов управления.
exitstatement
Предложение exit for, exit do или exit sub или оператор exit script.
Когда это следует использовать
Оператор Unless возвращает результат в виде булева значения. Как правило, этот тип функции используется в качестве условия, когда пользователю требуется выполнить условную загрузку или исключить части скрипта.
Ниже приводится три примера использования функции Unless.
exit script
unless A=1;
unless A=1
LOAD * from myfile.csv;
unless A=1
when B=2 drop table Tab1;
Региональные настройки
Если не указано иное, в примерах, приведенных в данном разделе, используется следующий формат даты: ММ/ДД/ГГГГ. Формат даты указан в операторе SET DateFormat скрипта загрузки данных. В вашей системе может быть установлен другой формат даты по умолчанию в зависимости от региональных настроек и других факторов. Можно изменить формат в примерах в соответствии с потребностями. Или можно изменить форматы в скрипте загрузки в соответствии с этими примерами.
Региональные настройки по умолчанию в приложениях основаны на системных региональных настройках компьютера или сервера, где установлено ПО Qlik Sense. Если на сервере Qlik Sense, к которому обращается пользователь, выбран шведский язык, то редактор загрузки данных будет использовать шведские региональные настройки для даты, времени и валюты. Эти параметры регионального формата не связаны с языком, отображаемым в интерфейсе пользователя Qlik Sense. Qlik Sense будет отображаться на языке, который используется в браузере.
Пример 1. Префикс Unless
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
Создание переменной A, которой присваивается значение 1.
Набор данных, загружаемый в таблицу под именем Transactions, если переменная A не имеет значение 2.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
amount
Результирующая таблица
id
date
amount
1
08/30/2018
23.56
2
09/07/2018
556.31
3
09/16/2018
5.75
4
09/22/2018
125.00
5
09/22/2018
484.21
6
09/22/2018
59.18
7
09/23/2018
177.42
Так как в начале скрипта переменной A задается значение 1, проверяется выполнение условия после префикса Unless и возвращается результат FALSE. Таким образом, скрипт продолжает выполнение оператора Load. В таблице результатов отображаются все записи из таблицы Transactions.
Если этой переменной задано значение 2, данные не будут загружаться в модель данных.
Пример 2. Суффикс Unless
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки сначала загружает начальный набор данных в таблицу под именем Transactions. Затем выполнение скрипта прерывается, если таблица Transactions содержит больше 10 записей.
Если это условие не приводит к прекращению выполнения скрипта, следующий набор транзакций добавляется в таблицу Transactions в результате объединения, после чего этот процесс повторяется.
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
id
date
amount
Результирующая таблица
id
date
amount
1
08/30/2018
23.56
2
09/07/2018
556.31
3
09/16/2018
5.75
4
09/22/2018
125.00
5
09/22/2018
484.21
6
09/22/2018
59.18
7
09/23/2018
177.42
8
10/01/2018
164.27
9
10/03/2018
384.00
10
10/06/2018
25.82
11
10/09/2018
312.00
12
10/15/2018
4.56
13
10/16/2018
90.24
14
10/18/2018
19.32
В каждом наборе данных из скрипта загрузки имеется семь записей.
Первый набор данных (с id транзакции от 1 до 7) загружается в приложение. Условие Unless проверяет, содержится ли в таблице Transactions меньше 10 строк. Возвращается значение TRUE, поэтому в приложение загружается второй набор данных (с id транзакции от 8 до 14). Второе условие Unless проверяет, содержится ли в таблице Transactions меньше 10 записей. Возвращается значение FALSE, поэтому выполнение скрипта прекращается.
Пример 3. Несколько префиксов Unless
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
В этом примере набор данных, содержащий одну транзакцию, создается в таблице под именем Transactions. Затем запускается цикл for, в котором проверяются два вложенных оператора unless:
Если в таблице Transactions не больше 100 записей
Если количество записей в таблице Transactions не кратно 6
Если эти условия возвращают результат FALSE, еще семь записей создаются и объединяются с существующей таблицей Transactions. Этот процесс повторяется, пока одна из двух транзакций не вернет значение TRUE.
Скрипт загрузки
Transactions:
Load
0 as id
Autogenerate 1;
For i = 1 to 100
unless NoOfRows('Transactions') > 100 unless mod(NoOfRows('Transactions'),6) = 0
Concatenate
Load
if(isnull(Peek(id)),1,peek(id)+1) as id
Autogenerate 7;
next i
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:id.
Результирующая таблица
id
0
1
2
3
4
5
+30 строк
Вложенные операторы unless в цикле for проверяют следующие условия:
Содержит ли таблица Transactions больше 100 строк?
Является ли количество записей в таблице Transactions кратным 6?
Когда оба оператора unless возвращают значение FALSE, еще семь записей создаются и объединяются с существующей таблицей Transactions.
Эти операторы возвращают значение FALSE пять раз, после чего таблица Transactions содержит всего 36 строк данных.
После этого второй оператор Unless возвращает значение TRUE, и поэтому следующий оператор load уже не выполняется.
Помогла ли вам эта страница?
Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!