Intersect()
如果要引用属于两种或更多节点导航方法的交集结果的节点,可以使用 Intersect() 导航方法。
如下图中所示。

该图使用 Q3 作为当前节点,显示了 AllPrevious() 导航方法和 Parent() 导航方法的交集。这两种方法找到的节点是 Q1 2019 到 Q3 2019。
无论当前节点是哪个季度,交集都将生成一个从 Q1 开始到到当前节点所代表的季度结束的期间。这意味着 Intersect() 方法的典型用例是“年初至今”计算(请参见以下示例)。
示例
“年初至今”计算 (YTD) 的示例
此条形图显示了 2016 年到 2018 年的季度销售额总和。

假定您要查看每年的累计和。如果使用 AllPrevious() 导航方法,将对所有先前月份进行求和。但在 Q1 2017,您想要重新开始求和,并忽略上一年(即 2016 年)各个季度的和。

例如,Q3 2017 的累计和应为 976 (317+307+352)。要仅引用这三个条,可以使用 Intersect() 方法。AllPrevious() 方法会将 Q1 2016 到 Q4 2016 和 Q1 2017 到 Q3 2017 包括到求和中,而 Parent() 方法会包括 2017 年的全部四个季度。这两种导航模式的交集将精确返回相关的条。
例如,应用以下表达式(其中 Intersect() 将两种方法结合使用),并查看 Q3 2017 的结果:

按多个轴拆分数据时使用 Intersect() 的示例
每次使用多个轴划分数据时,数据会拆分为越来越小的数据切片,并且使用越来越多的标记表示。应用表达式时,它将作用于最小的数据切片。在以上示例中,数据仅按类别轴拆分。但在同时按颜色轴拆分数据时,会出现什么情况?请参见以下示例。
下面的条形图显示了泰坦尼克号大灾难的幸存者统计数据。数据仅按类别轴拆分。

使用下一个图像中的表达式可以按百分比而非绝对数显示此信息。另请参见 All() 主题。
假定您要通过将颜色轴设置为 'survived' 来区分表示幸存者的条,如下所示。

但请注意,这样做会导致百分比发生变化。红色条和蓝色条分别总计达 100%,而非全部四个条。出现这种情况的原因是,表达式未考虑到数据按颜色轴拆分为更小的切片。...OVER (All([Axis.X]))... 部分将忽略类别轴上的划分,但仍将“着色依据”轴上的划分考虑在内。
但是,您可以使用 Intersect() 方法保留颜色并使所有条总计达 100%,如下所示。

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