Перейти к основному содержимому Перейти к дополнительному содержимому

Constrain

Оператор Constrain можно использовать в сочетании с оператором Let или Set для определения переменных скрипта. Оператор Constrain позволяет определить ограничения на возможные значения этих переменных. Если определение переменной нарушает ограничения, перезагрузка завершится неудачей. С помощью ограничений можно требовать, чтобы значения переменных соответствовали определенным типам, попадали в определенные числовые диапазоны и совпадали с допустимыми значениями, которые вы определите.

Синтаксис:  

Constrain variablename = json

Где:

  • variablename — это переменная скрипта.

  • json — это допустимый объект JSON, определяющий ограничения. Отдельные ограничения добавлены в этот объект в виде пар «ключ-значение».

Типы ограничений
Тип ограничения (ключ) Значение Требования к ограничению (значение) Примеры
"type" Ограничивает значения переменных определенным типом данных.

"text" определяет тип текста.

"number" определяет числовой тип.

CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"maxnum" Устанавливает максимальное значение для переменной. Только числа (целые или с плавающей запятой). Разрешено экспоненциальное представление чисел.
CONSTRAIN vExample = {"maxnum": 5000}
"minnum" Устанавливает минимальное значение для переменной. Только числа (целые или с плавающей запятой). Разрешено экспоненциальное представление чисел.
CONSTRAIN vExample = {"minnum": 250}
"valuesnum" Определяет список допустимых числовых значений для переменной. Список разделенных запятыми чисел, заключенный в квадратные скобки. Пример: [1,2,3]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"valuestext" Определяет список допустимых текстовых значений для переменной. Список разделенных запятыми строк, заключенный в квадратные скобки. Пример: ["a","b","c"]
CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}

Когда использовать оператор Constrain

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

Обновление переменных при перезагрузке

Оператор Constrain особенно полезно использовать в сочетании с обновлениями переменных при перезагрузке. С помощью обновлений переменных при перезагрузке можно динамически обновлять переменные во время перезагрузки приложения, используя свойство variables в API-интерфейсе перезагрузок. Оператор Constrain предотвращает включение вредоносных или неправильно отформатированных определений переменных в перезагружаемое аналитическое приложение.

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

  • Шаблонные приложения, которые загружают данные выборочно на основе таких условий, как идентификатор или имя клиента (их можно передавать во время загрузки как переменные).

  • Централизованный контроль над приложениями, распределенными по многим клиентам Qlik Cloud.

  • Перенос рабочих процессов и задач, ориентированных на переменные, с QlikView и Qlik Sense под управлением клиента в облако.

Безопасность, надежность и совместная работа

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

Замечания

  • Определение Constrain для переменной должно быть допустимым объектом JSON.

  • Для одной переменной можно указать более одного ограничения. Все ограничения для переменной должны содержаться в одном объекте ограничения. Для ознакомления с примерами см. раздел Примеры: множественные ограничения.

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

    Чтобы разрешить эти конфликты, сбросьте ограничения и значения переменной, вставив пустые определения. Примеры:

    CONSTRAIN x;
    LET x;
    
    CONSTRAIN x;
    SET x;

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

  • Порядок определений переменной и ограничений не имеет значения. Однако при сбое перезагрузки, связанной с переменной, строка, на которой срабатывает контрольная точка, будет другой.

  • Оператор скрипта Constrain ограничивает определения переменных только для переменных скрипта. Ограничения также можно применить к переменным скрипта и конечного пользователя (которые созданы или обновлены в виде листа или как переменные сеанса с помощью API-интерфейса), используя общедоступный API-интерфейс. Для получения дополнительной информации см. раздел Альтернативные варианты разработчика для определения ограничений переменных.

Альтернативные варианты разработчика для определения ограничений переменных

Для определения ограничений переменных можно использовать общедоступный API-интерфейс, а не оператор Constrain в скрипте загрузки. При определении ограничений через API-интерфейс все попытки обновить значения переменных (непосредственно в скрипте загрузки, в виде листа или через API-интерфейс перезагрузок) будут подпадать под эти ограничения.

Чтобы определить ограничения переменных через общедоступный API-интерфейс, используйте объект GenericVariableConstraints в API-интерфейсе Qlik Sense Engine (qix): GenericVariableConstraints.

Пример: type

Пример: maxnum

Пример: minnum

Пример: valuesnum

Пример: valuestext

Примеры: сравнение SET с LET

Эти примеры показывают разницу между тем, как применяются ограничения при использовании SET или LET во время определения переменных. Во всех примерах используются ограничения, применяющие требование type, но эти принципы применимы ко всем типам ограничений в целом.

Примеры: множественные ограничения

Пример: разрешение конфликтов определений переменных

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!