尝试季度

时间:2015-06-15 06:27:13

标签: tableau


我试图将季度回报计算为复合 配方: -
(1+M1)*(1+M2)*...*(1+Mn)-1
M1 =第一个月的回报 M2 =第二个月的回报。

现在,我找不到任何可以实现这一目标的人。我在这里错过了什么吗? 所以,我创建了两个计算字段[M-1],[M-2],它们具有上个月的回报

([M-1] = LOOKUP(ATTR([Monthly Return]), -1), [M-2] = LOOKUP(ATTR([Monthly Return]), -2))

用公式计算新的字段QR:

IF(ATTR([Month]) = 3 OR ATTR([Month]) = 6 OR ATTR([Month]) = 9 OR ATTR([Month]) = 12)
THEN
    ((1+ATTR([Monthly Return]))*(1+[M-1])*(1+[M-2]))-1
ELSE
    0
END

这给了我 enter image description here

到目前为止哪个是正确的。现在,当我尝试季度时,它应该记录所有三个月的价值并给我第一季度的权利吗?相反,它给我0或null如下:

enter image description here

可以在here中找到tbwx文件。 为什么会这样?我错过了什么吗?有没有其他方法可以实现这个目标?

提前致谢。

2 个答案:

答案 0 :(得分:1)

事情是,表计算(LOOKUP是一个例子)取决于工作表上显式的聚合级别。

看一下,在您的[M-1]和[M-2]计算中,您告诉Tableau您希望它在几个月内执行。因此,在您的季度示例中,它基本上采用了最后一个季度的值,而不是几个月。并且您正在使用ATTR,当每个维度的所有值都不相同时,可能会产生不可预测的结果。

我认为发生了什么:ATTR([月])任何一个季度都没有返回3,6,9或12(我猜想Tableau将采用第一个值,因此1,4,7,10) ,因此它落在ELSE 0循环上。

编辑:可以做些什么?如果您的第一个图表是正确的,您可以隐藏不必要的字段。实现此目的的一种方法实际上是隐藏您不感兴趣的月份。其他方式更实用,但它有点黑客。

创建一个字段([过滤月份]):

LOOKUP(MAX([Month]),0)%3 = 0

然后将其拖动到过滤器,并选择真值

这将仅保留您感兴趣的月份(3的倍数),但不会使您的计算失败,因为在计算完所有内容后,最后会执行表计算(如查找)。因此,过滤的月份不会出现在您的图表中,但仍会在其他计算中考虑。

您仍然需要在图表上保留[月]尺寸,但您始终可以使用字体大小和颜色来隐藏它

答案 1 :(得分:0)

用于计算复合季度回报的公式为:
(1+M1)*(1+M2)*...*(1+Mn)-1
M1 =该季度的第一个月回报 M2 =该季度的第二个月回报 并且只在问题中显示的IF ELSE声明中计算了3,6,9和12个月 所以,这在月视图中工作正常,如pic-1(有问题)所示。对于季度,它应该是,{{0​​}}
相反,它给我0或,如pic-2(有问题)

这是因为,它是按季度汇总度量并对汇总度量应用公式((1+M1)*(1+M2)*...*(1+Mn)-1)。也就是说,它计算季度SUM([Monthly Return])并在此之后应用公式。它必须先用公式计算,然后用SUM计算结果。

我所做的只是从Aggregate Measures取消选中Analysisenter image description here

在计算之前不会聚合这些值。

相关问题