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

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

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

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

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

在上述表达式中，有一个集合表达式用于选择 2024 的 Year值：`{<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 如下解释：

{&lt;Year={2024}&gt;} Sum(Sales)

在这种情况下，外部集合分析表达式将应用于 Sum 聚合，因为我们现在已经生成了一个正态表达式，而不仅仅是一个数字（如[第一个示例](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/outer-set-expression-dollar-sign-expansion.htm#Example1)中的情况）。请注意，引号字符消耗了第一轮计算，因此表达式在第二轮计算中得以保留（并使用 & 串联）。

## 变量查找

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

### 示例

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

{&lt;Year={2024}&gt;} $(Var1)

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

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

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

{&lt;Year={2024}&gt;} Sum(Sales)

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

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

显示变量 Var1Var1 的定义和值的变量对话框，此时变量定义的开头没有放置等号。![显示变量 Var1 的定义和值的变量对话框，此时变量定义（即 Sum Sales）的开头没有放置等号。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_variable-def-no-equal-sign.png)

因此，对于这个例子，将应用外部集合表达式 {&lt;Year={2024}&gt;}。

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

另一方面，如果 Var1 中的定义以等号开头，即 =Sum(Sales)，则不应用外部集合表达式。这是因为等号致使变量表达式提前单独计算。这致使与[第一个示例](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/outer-set-expression-dollar-sign-expansion.htm#Example1)类似的结果，其中有一个外部集合表达式与一个数字一起计算，但它不会返回有用的结果。

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

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

显示变量 Var1Var1 的定义和值的变量对话框，此时变量定义的开头放置了等号。![显示变量 Var1 的定义和值的变量对话框，此时变量定义（即 Sum Sales）的开头放置了等号。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_variable-def-with-equal-sign.png)

## 了解详情

* [内部和外部集合表达式](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-expressions-inner-and-outer.htm)

* [美元符号扩展](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansions.htm)

* [创建变量](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/create-variable-using-dialog.htm)

* [变量对话框](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Sheets/variables-dialog.htm)