Spotfire® 用户指南

表达式语言详细信息

了解表达式语言的工作原理后,创建有效的表达式就会变得更加简单。本主题会尝试说明该语言的一些基本功能。

如果列名称中包含字母、数字或“_”(下划线)之外的字符,那么这些字符必须包含在“[”和“]”字符(方括号)中。当列名称与函数名称相同,或者列名称以数字开头时,也需要使用方括号。例如:
[Column 1]
[Sum]
如果您在表达式的周围应用 <>,便会将它视作分类形式。例如:
<[Category column 1]>
多个列通常用逗号分隔。例如:
[Column1],[Column2]
您可以使用 AS 关键字指定表达式的新名称,同时隐藏其基础表达式。例如:
[Column1]/([Column1]+[Column2])AS Quota

请注意,如果轴表达式包含冒号,便无法重命名整个轴,但是您可以为表达式的每一个部分定义一个名称:

[Column1] AS [My first column], [Column2] AS [My second column]
常量可以始终用作参数,即便在函数说明表示参数必须为列的情况下。
39+12*3
-(1-2)
如果您正在使用基于多个数据表的图表,表达式将默认引用主数据表。若要引用其他数据表中的列,您必须使用限定名称:[Data Table Name].[Column Name]。例如:
Sum([Data Table 2].[Column1])

有关可用运算符和函数的完整说明,另请参阅运算符函数

表达式中的注释

如果创建的表达式比较复杂,需要解释,可以在表达式中添加注释。用“//”来指定符号后面的文本是注释。

例如:

Avg([Sales]) OVER Intersect([Cat], AllPrevious([Year])) //显示截至当前年度的所有年度每个类别的平均销售额。
[销售额]/1000 ///销售数字除以 1000,以 kkr 为单位显示,而不是以 SEK 为单位。

请注意,如果在图表轴上为表达式添加注释,则需要继续使用自定义表达式对话框进行所有进一步的编辑。这是因为拖放操作对表达式的影响太大,重新排列太多,无法保留注释。

转义特殊字符

由于某些字符在 Spotfire 表达式语言中具有特殊含义,因而如果您需要将那些字符用于其他用途(例如将其包含在列名称中),则必须执行一些操作。

转义字符是一种特殊字符,用于告知表达式语言:以字符顺序排列的下列字符应被视作标准字符,而不是执行其特殊目的项目。

如果列名称包含任何方括号,则必须将这些方括号进行转义。通过在此括号前后添加其他括号,可对括号进行转义:“[”和“]]”。例如,如果列名称为 [Name],其在表达式中将会写为 [[Name]]]。使用“添加计算的列”对话框(仅限已安装的客户端)中的“插入列””按钮添加列时,将自动获得正确的列名称转义。

区分大小写

  • 变量、函数和关键字不区分大小写:SUM(C1) = Sum(C1) = sum(C1)
  • 列名称引用区分大小写。
  • 方法调用名称不区分大小写。可以使用加载项框架中定义的所有方法。有关所支持的不同方法的信息,请参见运算符函数

表达式结果

表达式说明了应如何计算新列。新创建的列与数据表中的所有其他列具有相同数量的行。默认的空值处理行为是空值返回空值的操作。这表示如果新列的计算公式为 [Column A]*2 并且列 A 的某些行中存在空值,则新列在这些行上也将具有空值。

类别表达式(NEST 和 CROSS)

在自定义表达式中,类别和层级列及表达式写在尖括号“<>”之间。如果表达式中可使用多个类别,还必须指定要显示的类别组合。通过使用关键字 NEST(可显示数据中值的所有实际组合)或 CROSS(将显示所有可能的值组合,包括当前无数据的组合)可完成此操作。表达式中的所有列必须用“nest”或“cross”分隔(而不是逗号),不允许将两个组合选项混合。
<[Category column 1] nest [Category column 2]>

例如,如果您有一个包含两年中每个月某些销售数据的数据表,但缺少 2020 年中二月的数据,不同选项将带来以下结果:

Nest



由于没有适用于 2020 年 2 月的数据,此处没有条形(也没有条形的占位符)。以下图表是使用类别轴上的 Nest 选项设置的,它与以下自定义表达式对应:
<[Year] NEST [Month]>

Cross



选择 CROSS 选项后,可以显示所有可能的类别组合。这表示即使没有适用于 2020 年二月的数据,但将会有一个适用于二月这一列的占位符。对应的自定义表达式为:
<CROSS [Year] CROSS [Month]>
(第一个 CROSS 是可选的。)
注: 即便选择了 CROSS 选项,您可能在图表中也看不到空类别,具体取决于轴模式。在已安装的客户端中,您可以右键单击轴并选择“类别”以查看或更改设置。如果选择了“显示筛选的值”,图表中会隐藏不含任何值的分类。在本例中,您需要使用“显示筛选的范围”“显示所有值”查看空分类。
提示: 在已安装的客户端中,还可以从“图表属性” > “类别轴” > “高级设置”对话框中指定 NEST/CROSS 的设置、轴模式的设置以及对轴表达式求值的方式。

验证值

当数据表中缺少列值、计算中涉及到无效值或在表达式中明确写入了空值时均会生成空值。如果结果为 null,则显示为“(空)”或直接留空。可以使用 SN() 函数替换空值。

当在列内聚合时,无效值将被忽略,而每当其中一个涉及的列包含无效值时,列之间行明智的计算将导致出现无效值。