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

在数据加载编辑器中使用变量

Qlik Sense 中的变量是存储静态值或计算(例如数字或字母数字值)的容器。在应用程序中使用此变量时,对此变量做出的任何更改将应用于使用此变量的任何位置。 您可在变量概述中定义变量,或利用数据加载编辑器在脚本中定义。您可在数据加载脚本中使用 LetSet 语句设置变量的值。

提示注释编辑表格时,您也可以从变量概述使用 Qlik Sense 变量。 在表达式中使用变量

概述

如果变量值的第一个字符为等于符号“=”,Qlik Sense 将尝试以公式(Qlik Sense 表达式)评估该值,然后显示或返回结果而不是实际公式文本。

使用时,此变量用其值取代。脚本中的变量可用于货币符号扩展脚本和各种控制语句。如果同一字符串(如路径)在脚本中重复多次,则其将非常有用。

部分特别的系统变量将由 Qlik Sense 在开始执行脚本时设置,不管之前为何值。

定义变量

变量提供了存储静态值或计算结果的能力。定义变量时,使用以下语法:

set variablename = string

let variable = expression

Set 语句用于字符串赋值。它将等号右侧的文本赋值给变量。Let 语句在脚本运行时对等号右侧的表达式求值,并将表达式的结果赋给该变量。

变量区分大小写。

信息注释建议不对 Qlik Sense 中的字段和函数将变量命名为相同的名称。

示例:  

set x = 3 + 4; // 该变量将获得字符串“3 + 4”作为值。

let x = 3 + 4; // 返回 7 作为值。

set x = Today(); // 返回“Today()”作为值。

let x = Today(); // 返回今天的日期作为值,例如,“9/27/2021”。

为变量命名

作为最佳实践,可以考虑对在应用程序中创建的变量使用标准化的命名约定。例如,您可以确保所有变量名都以 v 开头。例如:vUserText。这有助于确保变量被快速识别为变量,并与度量、字段和函数区分开来。

删除变量

如果您从脚本移除变量并重新加载数据,变量将留在应用程序中。如果您想要从应用程序中完全移除变量,必须也从变量对话框删除变量。

有关更多信息,请参阅删除变量

将变量值加载为字段值

如果要在 LOAD 语句中加载变量值作为字段值且货币符号扩展的结果为文本(而非数字或表达式),则需要用单引号将扩展变量引起来。

示例:  

本例将包含脚本错误列表的系统变量加载到表格中。您会发现 If 子句中的 ScriptErrorCount 扩展变量不需要使用引号,而 ScriptErrorList 扩展变量需要使用引号。

IF $(ScriptErrorCount) >= 1 THEN LOAD '$(ScriptErrorList)' AS Error AutoGenerate 1; END IF

变量计算

可以通过多种方法在 Qlik Sense 中使用变量计算值,结果取决于定义变量以及在表达式中调用变量的方式。

在本例中,我们加载一些内联数据:

LOAD * INLINE [ Dim, Sales A, 150 A, 200 B, 240 B, 230 C, 410 C, 330 ];

首先需要定义两个变量:

Let vSales = 'Sum(Sales)' ;
Let vSales2 = '=Sum(Sales)' ;

在第二个变量中,在表达式前面添加一个等号。这可以使得在扩展变量和计算表达式之前计算变量。

如果按此方法使用 vSales 变量(如在度量中),则结果将为字符串 Sum(Sales),即没有执行任何计算。

如果在表达式中添加货币符号扩展和调用 $(vSales),则该变量已扩展且显示Sales的总和。

最后,如果调用 $(vSales2),则将会在扩展变量之前计算其值。这意味着所显示的结果是Sales的总和。使用 =$(vSales)=$(vSales2) 作为度量表达式之间的区别如此图表显示的结果所示:

结果
Dim $(vSales) $(vSales2)
A 350 1560
B 470 1560
C 740 1560

如图表所示,$(vSales) 生成维度值的部分和,而 $(vSales2) 却生成总和。

以下脚本变量可用:

了解详情

 

本页面有帮助吗?

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