Spotfire® 用户指南

在计算列中使用 OVER 语句

您可以对数据执行计算,在添加到数据表中的新列中将结果显示为值。在用于计算的表达式中,您可以使用 OVER 语句。然而,OVER 语句在计算列中的使用不同于在自定义表达式中的使用。在计算的列中,OVER 表达式用于计算各个组单独的固定值,而且 OVER 表达式可能会导致数据“分割为更少的记录”。

注: 无论如何筛选数据,计算的列始终基于列中的所有值计算得出。

使用计算列时,没有任何轴可供导航,这与自定义表达式的情况相同。相反,您可以使用 OVER 语句引用数据列(或层级)。

在下面的数据表中,

Sum([Sales]) OVER ([Fruit])

表达式用于计算添加列中的值:



也就是说,对于每一行,所涉及的水果类型的销售额总和呈现在新列中。例如,因为苹果总销售额为 200 (30+70+100),所以该值显示在每个“苹果”行中。结果是分割为更少的值(200 和 100)。
注: 之后筛选数据时,新列值不会改变。例如,如果筛选顶部的数据行,“苹果”行的计算列值依然为 200。

扩展示例

记录更少的计算列可能不像单独列那样有用。然而,我们再添加一列,其中以前的表达式是所使用的表达式的一部分:

[Sales] / (Sum([Sales]) OVER ([Fruit]))



此表达式计算每个销售交易对其水果类型中的多年总销售额的相对贡献。例如,苹果总销售额的 15% (30/200) 发生在 2015 年,35% (70/200) 发生在 2016 年,其余 50% (100/200) 发生在 2017 年。

在下面的条形图中,使用 Sum 聚合在值轴上选择计算列。



实际上,在显示 Sum([Sales]) 的条形图中,此结果与使用 100% 堆叠条形图选项相同。

在计算的列中将 OVER 与节点导航方法结合起来

在用于计算列的表达式中,您可以将 OVER 语句与节点导航方法结合使用。此简单示例为您提供了如何使用方法之一 Previous() 的思路。

此数据表列出了一个新生儿每周测得的体重,呈现在折线图中。





如果您对此每周的成长感兴趣,可以使用如下所示的表达式进行计算:

[Weight (g)] - Sum([Weight (g)]) OVER (Previous([Week]))

可在下面的数据表和条形图中查看结果。