由于您的数据采用高瘦格式,因此我的原始答案无效。我保留了答案作为其中的一部分,以防它对其他人有所帮助,请参见下文。
通过您的更新,您似乎已经成功地创建了一个包含所需数据的交叉表。如果您可以在行轴、列轴和度量轴上显示精确的轴表达式会很有帮助,但我可以尝试说明如何根据需要转置交叉表中的数据。有关说明,请参阅最后一节。
对于高瘦格式,您将无法使用 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]
另外,转到属性 -> 格式并根据自己的喜好设置百分比格式。
在交叉表中转置
从您的屏幕截图中有点难以理解,所以我会猜测您的轴表达式是什么。即使我猜错了,同样的方法也适用于初始状态。您只需要将行轴与列轴交换。您可以使用轴选择器来完成此操作,或者从自定义表达式编辑器中复制和粘贴。如果这是您从一开始就有的配置:
然后通过交换轴表达式,您将得到: