Spotfire® 用户指南

Intersect()

当您想要引用两个或多个节点导航方法的交集所产生的节点时,可以使用 Intersect() 导航方法。

下面我们进行了举例说明。



此图以 Q3 为当前节点说明了 AllPrevious() 和 Parent() 导航方法的交集。两种方法同时找到的节点为 Q1-Q3, 2019。

无论当前节点是哪个季度,交集都会产生一个从 Q1 开始、以当前节点的季度结束的时间段。这意味着 Intersect() 方法的典型用例就是年初至今计算(请参见以下示例)。

示例

注: 示例中的表达式假设使用内存中数据。

年初至今计算 (YTD) 示例

该条形图显示了 2016-2018 年的季度销售额总和。



假设您对每年的累计销售额总和感兴趣。如果使用 AllPrevious() 导航方法,则将对所有之前的月份求和。但是在 Q1 2017,您想重新开始求和,而忽略上一年(2016 年)的季度总和。



例如,Q3 2017 的累计总和应该是 976 (317+307+352)。要仅引用这三个条形,Intersect() 方法非常方便。AllPrevious() 方法会将 Q1-Q4 2016 和 Q1-Q3 2017 包括在总和中,而 Parent() 方法将包括 2017 年的四个季度。这两种导航模式的交集将准确返回相关条形。

应用以下表达式,其中 Intersect() 结合了两种方法,并查看例如 Q3 2017 的结果:



当数据按多个轴分割时使用 Intersect() 的示例

每次使用不同的轴对数据进行切片时,数据都会被分割成越来越小的切片,由越来越多的标记表示。当您应用表达式时,该表达式将处理最小的数据切片。在上述示例中,数据仅按类别轴分割。但是,如果您也按颜色轴进行分割,会发生什么?请参见以下示例。

以下条形图显示了泰坦尼克号灾难的幸存统计数据。数据仅按类别轴分割。



下一幅图像中的表达式可让您以百分比而不是绝对数字显示此信息。另请参见 All() 主题。

假设您想通过将颜色轴设置为“幸存”来区分代表那些幸存者的条形,如下所示。



但是,请注意,这样做百分比就会发生变化!红色和蓝色条形分别加起来就达到了 100%,而不是所有四个条形之和为 100%。发生这种情况是因为该表达式没有考虑到数据按颜色轴分割成更小的切片。...OVER (All([Axis.X]))... 部分会忽略类别轴上的切片,但不会忽略颜色轴上的切片。

但是,您仍然可以使用 Intersect() 方法保留颜色并让所有条形相加达到 100%,如下所示。



表达式的 All([Axis.X]) 和 All([Axis.Color]) 部分意味着应该忽略每个轴上的切片。然后 Intersect() 方法整合了这两部分。因此,每个条形的值将除以所有条形的总和。