字段、度量和变量引用
表达式可以包含对字段、变量和度量的引用。
在大多数情况下,表达式是聚合,也就是可能跨越多个记录的计算。表这意味着达式中的所有字段引用都必须包含在表达式函数中。如果没有使用聚合函数,则会使用 Only() 函数。
当度量的名称在表达式中使用时,它将被解释为度量的别名。这允许您重用已定义的实体。可以用这种方式使用主度量和图表度量的标签。但是,图表度量必须在同一个图表中。不能在其他图表中使用度量的标签。
可以递归地定义度量。换句话说,度量可以包含对自身的引用。但是,您应该只在只有几行的图表中执行此操作。如果图表有许多行,性能会下降。如果有数百行,递归定义将完全停止工作。
一个变量可以用两种不同的方式用于直接引用或美元扩展。如果使用直接引用,则变量值将用于计算。如果使用美元扩展,则在解析表达式之前,整个美元扩展将替换为变量值。因此,两种不同的方法可能会返回不同的结果。
如何解释名称
表达式中的名称可以是对字段、变量、函数或度量的引用。根据不同的情况,这个名称会有不同的解释。
示例:
字符串 XXX 表示字段、变量、函数或度量。XXX 可以解释为这些之一,具体取决于您创建表达式的方式。
表达式 | XXX 可以解释为 |
---|---|
XXX | 度量、变量或字段 |
$(XXX) | 变量 |
Count(XXX) | 字段或变量 |
XXX() | 函数 |
字段和变量(或度量)不应使用相同的名称。但如果您这样做了,并且存在歧义,则使用以下优先顺序:
-
如果在聚合函数中找到名称,则字段优先于变量。
-
如果在聚合函数外找到名称,则度量标签优先于变量名称,而变量又优先于字段名称。
表达式规则
以下规则将应用于图表表达式:
-
如果字段引用未包装在聚合函数中,则引擎将使用 Only() 函数。
-
全部表达式返回一个适当的数字及/或一个字符串。
-
逻辑函数和运算符 False 返回 0,True 返回 -1。默认数字到字符串转换和字符串到数字转换。
-
逻辑运算符和函数将 0 解释为 False,将所有其他结果解释为 True。
-
无法正确评估的表达式,如作为不正确参数或函数的结果时,返回 NULL。