# 字段、度量和变量引用

表达式可以包含对字段、变量和度量的引用。

在大多数情况下，表达式是聚合，也就是可能跨越多个记录的计算。表这意味着达式中的所有字段引用都必须包含在聚合函数中。如果没有使用聚合函数，则会使用 Only() 函数。

当度量的名称在表达式中使用时，它将被解释为度量的别名。这允许您重用已定义的实体。可以用这种方式使用主度量和图表度量的标签。但是，图表度量必须在同一个图表中。不能在其他图表中使用度量的标签。

可以递归地定义度量。换句话说，度量可以包含对自身的引用。但是，您应该只在只有几行的图表中执行此操作。如果图表有许多行，性能会下降。如果有数百行，递归定义将完全停止工作。

一个变量可以用两种不同的方式用于直接引用或货币符号扩展。如果使用直接引用，则变量值将用于计算。如果使用货币符号扩展，则在解析表达式之前，整个货币符号扩展将替换为变量值。因此，两种不同的方法可能会返回不同的结果。

## 如何解释名称

表达式中的名称可以是对字段、变量、函数或度量的引用。根据不同的情况，这个名称会有不同的解释。

示例：

字符串 XXX 表示字段、变量、函数或度量。XXX 可以解释为这些之一，具体取决于您创建表达式的方式。

如何解释名称的示例

| 表达式 | XXX 可以解释为 |
| --- | --- |
| `XXX` | 度量、变量或字段 |
| `$(XXX)` | 变量 |
| `Count(XXX)` | 字段或变量 |
| `XXX()` | 函数 |

字段和变量（或度量）不应使用相同的名称。但如果您这样做了，并且存在歧义，则使用以下优先顺序：

* 如果在聚合函数中找到名称，则字段优先于变量。

* 如果在聚合函数外找到名称，则度量标签优先于变量名称，而变量又优先于字段名称。

## 表达式规则

以下规则将应用于图表表达式：

* 如果字段引用未包装在聚合函数中，则引擎将使用 Only() 函数。

* 全部表达式返回一个适当的数字及/或一个字符串。

* 逻辑函数和运算符 False 返回 0，True 返回 -1。默认数字到字符串转换和字符串到数字转换。

* 逻辑运算符和函数将 0 解释为 False，将所有其他结果解释为 True。

* 无法正确评估的表达式，如作为不正确参数或函数的结果时，返回 NULL。

## 了解详情

* [脚本表达式](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/script-expressions.htm)
* [在可视化中使用表达式](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)