我有一个交叉表,显示了跨月份销售的水果,如下所示:
现在,我想看到一张表格(如下所示),该表格将特定列的一个单元格与另一个单元格分开:
请告诉我这是否可以通过 OVER 语句实现。
更新:
@Chris - 我已经在 Access 中转换了原始表,并且可以在 Spotfire 中创建以下交叉表可视化。
注意:应用转换后,已售出的苹果、已售出的橙子、已售出的西瓜现在是单独的列。
但是,我希望看到以下格式的交叉表。
请告诉我这是否可行。如果这可以通过 Iron Python 脚本来实现,我对此很满意。
谢谢!
最佳答案
由于您的数据采用高瘦格式,我原来的答案不起作用。我将答案保留为其中的一部分,以防对其他人有所帮助,请参见下文。
通过更新,您似乎已成功使用所需数据创建了一个交叉表。虽然如果您可以在行轴、列轴和度量轴上显示精确的轴表达式会很有帮助,但我可以尝试说明如何根据需要转置交叉表中的数据。请参阅最后一节的解释。
使用高瘦格式,您将无法使用 OVER 表达式,因为您希望进行显式比较(至少我认为这是不可能的)。首先,我想指出的是,您必须以某种方式决定要比较哪些水果,或者您可能想要比较所有水果。确切的解决方案取决于您的实际用例是什么以及您需要它的动态程度。
可能的解决方案:
在交叉表中,将行轴定义为(列名称):
<[Axis.Default.Names]>
将时间轴放在列轴上,例如:
<BinByDateTime([Time],"Year.Month",1)>
在测量轴上,您现在将添加您感兴趣的所有比较,例如:
Sum(if([Fruit]="Apple", [Sold],null)) / Sum(if([Fruit]="Watermelon",[Sold],null)) as [Apples vs Watermelons],
Sum(if([Fruit]="Orange",[Sold],null)) / Sum(if([Fruit]="Watermelon",[Sold],null)) as [Oranges vs Watermelons]
您可以将其与文本区域中的用户控件结合起来,也许还可以将 $map() 表达式函数结合起来,以使其在需要时更加动态。 如果您想要其中有很多动态行为,您可能需要更改为使用数据函数。
旧答案
以下是我的原始答案,其中包括对不适用于本例的数据的假设。如果其他人确实遇到这种情况,请将其保留在这里。
在表 1 中,您有两个分类轴,一个用于时间,一个用于水果。您显示的衡量标准是销售的水果数量。
在表 2 中,我想说只有一个分类轴:时间。之后,您将获得两个测量值,行轴将为“(列名称)”。
衡量标准是苹果的数量除以橙子的数量,以及橙子的数量除以西瓜的数量。如果您右键单击测量轴并转到自定义表达式,您将看到如下内容:
Sum([Apples]) / Sum([Oranges]) as [Apples vs. Oranges],
Sum([Oranges]) / Sum([Watermelons]) as [Oranges vs. Watermelons]
此外,转到“属性”->“格式”并根据自己的喜好设置百分比格式。
交叉表转置
从你的截图来看有点难以理解,所以我猜一下你的轴表达式是什么。即使我猜错了,无论初始状态如何,相同的方法都适用。您只需将行轴与列轴交换即可。您可以使用轴选择器或从自定义表达式编辑器复制并粘贴来完成此操作。如果您从一开始就采用这种配置:
关于ironpython - Spotfire - 将交叉表中的一行值除以另一行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35472703/