首页 > 解决方案 > 交叉表 - 计算两个嵌套列之间的差异

问题描述

我有一个交叉表如下 -

A 列 B 列 C 列

+================+===========+===========+===========+===========+===========+===========+
| Store Location | Category1 | Category2 | Category1 | Category2 | Category1 | Category2 |
+================+===========+===========+===========+===========+===========+===========+
| Boston         |       200 |       100 |       250 |       230 |       230 |       210 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+
| New York       |       180 |       150 |       310 |       270 |       240 |       220 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+
| Stockholm      |       190 |       140 |       180 |       160 |       220 |       210 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+
| London         |       170 |       140 |       340 |       310 |       420 |       380 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+

我想计算每个列的两个类别之间的差异,如下所示 -

列A 列A 差异 列B 列B 差异 列C 列C 差异

+================+===========+===========+=====+===========+===========+====+===========+===========+====+
| Store Location | Category1 | Category2 |     | Category1 | Category2 |    | Category1 | Category2 |    |
+================+===========+===========+=====+===========+===========+====+===========+===========+====+
| Boston         |       200 |       100 | 100 |       250 |       230 | 20 |       230 |       210 | 20 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+
| New York       |       180 |       150 |  30 |       310 |       270 | 40 |       240 |       220 | 20 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+
| Stockholm      |       190 |       140 |  50 |       180 |       160 | 20 |       220 |       210 | 10 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+
| London         |       170 |       140 |  30 |       340 |       310 | 30 |       420 |       380 | 40 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+

我的水平轴表达式如下 -

[Axis.Default.Names] NEST [CategoryName]

需要使用什么自定义表达式来获取它?感谢任何建议。

非常感谢。

标签: spotfire

解决方案


我还没有在交叉表中找到一个很好的方法来做到这一点。有一种方法,但根据类别列中有多少不同的值,它有点混乱,您需要提前知道这些值。基本上在单元格值轴中,您将为您希望在水平轴上呈现的每一列编写自定义表达式。每个轴都是这样的:

垂直轴:[Store Names]

水平轴:(Column Names)<--写成这样,或者从轴上的下拉菜单中选择

价值观轴:

sum(if([category]="A", [sales])) as [Sum of A],
sum(if([category]="B", [sales])) as [Sum of B],
sum(if([category]="A", [sales])) - sum(if([category]="B", [sales]) as [delta A-B]

只要您在其中一个轴上有“(列名)”,您就可以在值轴上编写用逗号分隔的独立表达式,以支持您进入混合计算,这些计算不会统一应用于其他任何内容轴。这有点麻烦,当您的数据中意外弹出新值时可能会导致问题,但它确实有效。不幸的是,它在标记方面并不好。祝你好运。


推荐阅读