跳到主要内容 跳到补充内容

Constrain

Constrain 语句可与 LetSet 语句结合使用,用于定义脚本变量。通过 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 与重载时间变量更新结合使用时尤为有用。有了重载时间变量更新,您就可以在应用程序重载期间,使用重载 API 上的 variables 属性动态更新变量。Constrain 语句可防止将恶意或格式不当的变量定义纳入分析重载。

重载时间变量更新与 Constrain 语句一起支持以下用例:

  • 模板化应用程序,可根据客户 ID 或姓名(可在加载时作为变量传递)等条件选择性加载数据

  • 对分布在多个 Qlik Cloud 租户上的应用程序进行集中控制

  • 将面向变量的工作流程和任务从 QlikViewQlik Sense Client-Managed 迁移到云中

安全性、可靠性和协作性

即使在重载时间变量更新场景之外使用,Constrain 也能增强加载脚本编写的安全控制 - 例如,在协作开发加载脚本期间。例如,应用程序所有者可以为变量值定义约束条件,告知协作者需要满足哪些特定条件才能可靠、成功地重载应用程序。

注意事项

  • Constrain 变量的定义必须为有效的 JSON 对象。

  • 您可以为一个变量指定多个约束条件。变量的所有约束条件都必须包含在单个约束对象内。有关示例,请参阅示例 - 多重约束

  • 如果您已将某个名称的脚本变量加载到应用程序中,那么今后为该变量定义约束条件和值的尝试可能会因原始变量和重新定义的变量之间的冲突而失败。

    要解决这些冲突,可通过插入空白定义来重置变量约束和值。示例:

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

    然后,您可以在加载脚本的后续部分里重新定义变量及其约束条件。有关长篇范例,请参阅示例 - 解决变量定义冲突

  • 变量定义和约束定义的顺序并不重要。但是,如果发生与变量相关的重载失败事件,发生断点的行将有所不同。

  • Constrain 脚本语句只限制脚本变量的变量定义。您还可以通过使用公共 API 对脚本和最终用户变量(在工作表视图中创建或更新的变量,或使用 API 作为会话变量而创建或更新的变量)应用约束。有关更多信息,请参阅开发人员用于定义变量约束的替代方案

开发人员用于定义变量约束的替代方案

您还可以使用公共 API 来定义变量约束,而不是在加载脚本中使用 Constrain 语句。通过 API 定义约束时,所有更新变量值的尝试 - 无论是直接在加载脚本中、在工作表视图中,还是通过重载 API 都将受到约束。

要通过公共 API 定义变量约束,请使用 Qlik Sense Engine (qix) API 中的 GenericVariableConstraints 对象:GenericVariableConstraints

示例 - type

示例 - maxnum

示例 - minnum

示例 - valuesnum

示例 - valuestext

示例 - SETLET

这些示例显示了在变量定义过程中使用 SETLET 时应用约束条件的不同之处。所有示例都使用了应用 type 要求的约束,但这些原则一般适用于所有约束类型。

示例 - 多重约束

示例 - 解决变量定义冲突

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!