Constrain
Оператор Constrain можно использовать в сочетании с оператором Let или Set для определения переменных скрипта. Оператор Constrain позволяет определить ограничения на возможные значения этих переменных. Если определение переменной нарушает ограничения, перезагрузка завершится неудачей. С помощью ограничений можно требовать, чтобы значения переменных соответствовали определенным типам, попадали в определенные числовые диапазоны и совпадали с допустимыми значениями, которые вы определите.
Constrain variablename = json
Где:
-
variablename — это переменная скрипта.
-
json — это допустимый объект JSON, определяющий ограничения. Отдельные ограничения добавлены в этот объект в виде пар «ключ-значение».
| Тип ограничения (ключ) | Значение | Требования к ограничению (значение) | Примеры |
|---|---|---|---|
| "type" | Ограничивает значения переменных определенным типом данных. |
"text" определяет тип текста. "number" определяет числовой тип. |
|
| "maxnum" | Устанавливает максимальное значение для переменной. | Только числа (целые или с плавающей запятой). Разрешено экспоненциальное представление чисел. |
|
| "minnum" | Устанавливает минимальное значение для переменной. | Только числа (целые или с плавающей запятой). Разрешено экспоненциальное представление чисел. |
|
| "valuesnum" | Определяет список допустимых числовых значений для переменной. | Список разделенных запятыми чисел, заключенный в квадратные скобки. Например: [1,2,3] |
|
| "valuestext" | Определяет список допустимых текстовых значений для переменной. | Список разделенных запятыми строк, заключенный в квадратные скобки. Например: ["a","b","c"] |
|
Когда использовать Constrain оператор
Используйте оператор Constrain для предотвращения загрузки нежелательных значений переменных в аналитические приложения.
Замечания
-
Определение Constrain для переменной должно быть допустимым объектом JSON.
-
Для одной переменной можно указать более одного ограничения. Все ограничения для переменной должны содержаться в одном объекте ограничения. Для ознакомления с примерами см. раздел Примеры: множественные ограничения.
-
Если вы уже загрузили переменную скрипта с определенным именем в приложение, будущие попытки определить ограничения и значения для этой переменной могут завершиться неудачей из-за конфликтов между исходной и переопределенной переменными.
Чтобы разрешить эти конфликты, сбросьте ограничения и значения переменной, вставив пустые определения. Примеры:
CONSTRAIN x; LET x;CONSTRAIN x; SET x;После этого переменную и ее ограничения можно переопределить в последующих разделах скрипта загрузки. Подробный пример см. здесь: Пример: разрешение конфликтов определений переменных.
-
Порядок определений переменной и ограничений не имеет значения. Однако при сбое перезагрузки, связанной с переменной, строка, на которой срабатывает контрольная точка, будет другой.
-
Оператор скрипта Constrain ограничивает определения переменных только для переменных скрипта. Ограничения также можно применить к переменным скрипта и конечного пользователя (которые созданы или обновлены в виде листа или как переменные сеанса с помощью API-интерфейса), используя общедоступный API-интерфейс. Для получения дополнительной информации см. раздел Альтернативные варианты разработчика для определения ограничений переменных.
-
Constraints are validated to avoid scenarios that cannot match any value for the variable. Примеры недопустимых ограничений:
-
{"minnum": 5000, "maxnum": 4}
-
{"type": "text", "maxnum": 4}
-
Альтернативные варианты разработчика для определения ограничений переменных
Для определения ограничений переменных можно использовать общедоступный API-интерфейс, а не оператор Constrain в скрипте загрузки. При определении ограничений через API, все попытки обновить значения переменных (непосредственно в Скрипте загрузки или в виде листа) будут подпадать под эти ограничения.
Чтобы определить ограничения переменных через общедоступный API-интерфейс, используйте свойство GenericVariableConstraints в API-интерфейсе QlikEngine JSON: GenericVariableProperties (только английский язык).
Пример - type
Пример - maxnum
Пример - minnum
Пример - valuesnum
Пример - valuestext
Примеры: сравнение SET с LET
Эти примеры показывают разницу между тем, как применяются ограничения при использовании SET или LET во время определения переменных. Во всех примерах используются ограничения, применяющие требование type, но эти принципы применимы ко всем типам ограничений в целом.
