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

外集表达式和货币符号扩展

当在较大的表达式中使用一个(或多个)货币符号扩展时,在将结果插入表达式的其余部分之前,每个货币符号扩展都将单独计算。这种计算方法的一个含义是,货币符号扩展表达式之外的集合表达式不会影响结果。这会产生一种对表达式中的信息进行双重求值的效果。

示例 – 如何计算包含外部集合表达式和货币符号扩展的表达式

假设您有以下示例表达式:

{<Year={2024}>} $(=Sum(Sales))

在上述表达式中,有一个集合表达式用于选择 2024Year值:{<Year={2024}>}。当计算整个示例表达式时,不会应用此集合表达式。

相反,首先计算货币符号表达式 $(=Sum(Sales))

对于这个例子,假设 Sum(Sales) 计算结果为1500311。在计算表达式 {<Year={2024}>} $(=Sum(Sales)) 时,将此数字插入到周围的表达式中。此计算顺序导致以下部分计算的配置(请注意,这不是一个有用的 Qlik Sense 表达式,仅用于演示计算顺序):

{<Year={2024}>} 1500311

接下来,对表达式 {<Year={2024}>} 1500311 进行整体计算。集合表达式 {<Year={2024}>} 没有任何效果,因为它右侧的表达式只是一个数字,而不是任何类型的聚合表达式。

因此,使用上述示例中给定的 Sum(Sales) 值,整个表达式 {<Year={2024}>} $(=Sum(Sales)) 的计算结果将是 1500311。

从部件构建表达式

在表达式中使用货币符号扩展会导致双重计算效果。通过使用部件构建表达式,您可以从这种双重计算效果中受益。

示例

假设您有以下示例表达式:

{<Year={2024}>} $(='Sum(' & 'Sales' & ')')

在第一轮计算中,对货币符号扩张 $(='Sum(' & 'Sales' & ')') 进行了计算。在此步骤中,将三个字符串组合成一个字符串 'Sum(Sales)'。由于这是一个字符串而不是表达式,因此这时不会计算其中的表达式。

在计算的这个阶段,表达式被设置为由 Qlik Sense 如下解释:

{<Year={2024}>} Sum(Sales)

在这种情况下,外部集合分析表达式将应用于 Sum 聚合,因为我们现在已经生成了一个正态表达式,而不仅仅是一个数字(如第一个示例中的情况)。请注意,引号字符消耗了第一轮计算,因此表达式在第二轮计算中得以保留(并使用 & 串联)。

变量查找

当使用变量货币符号扩展进行变量查找时,在计算该内容之前,将变量的内容插入到周围的表达式中。

示例

假设您有以下示例表达式:

{<Year={2024}>} $(Var1)

在这个例子中,变量 Var1 的内容将在计算该内容之前插入到周围的表达式中。

结果 A - 不带等号的变量定义

如果将 Var1 定义为 Sum(Sales) ,则扩展后会是这样(注意下面的配置是一个部分计算的表达式):

{<Year={2024}>} Sum(Sales)

显示变量 Var1 的定义和值的变量对话框,此时变量定义的开头没有放置等号。

显示变量 Var1 的定义和值的变量对话框,此时变量定义(即 Sum Sales)的开头没有放置等号。

因此,对于这个例子,将应用外部集合表达式 {<Year={2024}>}

结果 B - 带等号的变量定义

另一方面,如果 Var1 中的定义以等号开头,即 =Sum(Sales),则不应用外部集合表达式。这是因为等号致使变量表达式提前单独计算。这致使与第一个示例类似的结果,其中有一个外部集合表达式与一个数字一起计算,但它不会返回有用的结果。

显示变量 Var1 的定义和值的变量对话框,此时变量定义的开头放置了等号。

显示变量 Var1 的定义和值的变量对话框,此时变量定义(即 Sum Sales)的开头放置了等号。

本页面有帮助吗?

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