TIBCO Cloud™ Spotfire® Web 客户端用户指南

对聚合数据使用表达式(THEN 关键字)

可以使用 THEN 关键字根据已聚合数据(通常是当前图表中的数据)解算表达式。在许多情况下,这可以在计算中提供更好的性能。例如,使用 OVER 表达式,通常首先要允许聚合数据,然后应用表达式的 OVER 部分便可改善性能。由于数据库中的数据中没有可用的行级别数据,因此使用这类数据时必须执行该操作,而使用内存中的数据时也能改善性能。

在 THEN 表达式中,已聚合数据称为临时列 [Value]。也就是说,[Value] 表示 THEN 关键字之前的整个表达式的结果。

THEN 后面的表达式部分使用 THEN 之前的表达式部分的结果,就像它是一列一样。例如,计算销售额累计总和的自定义表达式为:

Sum([Sales]) THEN Sum([Value] OVER (AllPrevious([Axis.X]))

此表达式适用于内存中和数据库中的数据,而类似的 Sum([Sales]) OVER (AllPrevious([Axis.X])) 仅适用于内存中数据。

在上面的 THEN 表达式中,首先解算 Sum([Sales]),然后会将数据聚合到临时列 [Value] 中。接着根据这个临时列解算 THEN 后面的表达式。

语法

  • 聚合表达式(THEN 表达式)AS [Identifier]
  • [Value] 可用于引用之前表达式的值(主表达式或之前的 THEN 表达式;同一个表达式中可以有多个 THEN)。
  • 可在 [X. LevelName] 代表轴“X”层级中“LevelName”级别值的地方使用该语法引用特定层级上的值。您可以在每个轴层级中对各个级别使用一个级别引用。例如,使用 [X.Year] 引用日期层级中的年。
  • 在 THEN 表达式中,您有时会需要从特定节点中选取值。这样,您可以使用 [CategoryIndex.X] 从表达式中选取感兴趣的节点。例如,若需获取轴中节点编号为五的值并将其放到所有其他节点,则可以使用如下表达式:

    Sum([Sales]) THEN Sum(if([CategoryIndex.X]=4,[Value],0)) OVER (All([Axis.X]))

    选取第五个节点的类别索引设置为四,因为轴上第一个节点的类别索引为 0。

THEN 表达式可用以所有的连续轴和表达式,如标签、规则等。但它们无法应用到分类轴或误差线中。

提示: 在已安装的客户端中,如果您当前的表达式生成数字值,但图表将其作为类别处理,则可以在图表的轴上单击鼠标右键,选择“连续刻度”
注: 如果可能,请仅在聚合后表达式中使用 OVER。

示例

不使用:Sum([Sales]) OVER (AllPrevious([Axis.X]))

使用:Sum([Sales]) THEN Sum([Value]) OVER (AllPrevious([Axis.X]))

若要为字符串列生成累计唯一计数,可使用如下表达式:

UniqueCount([Column]) THEN Sum([Value]) OVER (AllPrevious([Axis.X])) as [Cumulative Count]

提示: 某些轴表达式筛选后需要进行评估,以便生成正确的结果。在已安装的客户端中,在轴上单击鼠标右键并选择“评估轴” > “仅当前筛选”,以更改图表中轴评估设置。

有关使用 THEN 的表达式的详细信息,另请参见常用自定义表达式的快捷方式