2015-06-15 43 views
0


我試圖計算作爲複合的季度收益。
公式: -
(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 

這給了我as enter image description here

到目前爲止是正確的。現在,當我嘗試四分之一時,它應該總結所有三個月的價值,並給我Q1的權利?相反,它給了我0或空的,如下:

enter image description here

可以找到tbwx文件中here。 這是怎麼回事?有什麼我錯過了嗎?有沒有其他方法可以實現這一目標?

在此先感謝。

回答

1

事情是,表計算(LOOKUP是一個例子)取決於工作表上明確的聚合級別。

看一下,你的[M-1]和[M-2]計算中沒有任何地方告訴Tableau,你希望它在幾個月內執行。因此,在本季度的例子中,基本上是取最後一個季度的值,而不是幾個月。並且您正在使用ATTR,如果不是每個維度的所有值都相同,那麼可能會有不可預知的結果。

我認爲正在發生的事情:ATTR([Month])沒有返回任何季度的3,6,9或12(我猜Tableau會取第一個值,因此1,4,7,10 ),因此它落在ELSE 0循環上。

編輯:可以做些什麼?如果你的第一個圖表是正確的,你可以隱藏不必要的字段。實現這一目標的一種方法實際上隱藏了你不感興趣的月份。其他方式更實用,但有點破解。

創建一個域([過濾月):

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

並拖動這個到過濾器,然後選擇真正的價值

這將只保留幾個月裏,你有興趣(3的倍數) ,但不會影響你的計算,因爲表格計算(比如查找)在所有事情都已計算完畢後纔會執行。因此,過濾的月份不會出現在您的圖表中,但仍會在其他計算中考慮。

你仍然需要保持[月]維度圖表上,但你總是可以用字體大小和顏色發揮到隱藏

其用於計算複利季度回報
+0

感謝您的回覆。這應該從月結果和顯示結果,而是公式再次計算季度(SUM(monthly_returns))。 有沒有其他方法可以實現這個目標? –

+0

有一點點破解。編輯我的回覆 – Inox

+0

我明白了。我只需要取消'Analysis'中的'Aggregate Measures'。它不再計算總計量。謝謝。 –

0

公式爲:
(1+M1)*(1+M2)*...*(1+Mn)-1
M1 =該季度的第一個月收益。
M2 =該季度的第二個月收益。
並使用問題中顯示的IF ELSE語句僅計算3,6,9和12個月。
因此,這可以在每月視圖中正常工作,如可在pic-1中看到的(有問題)。對於季度應該是這樣,enter image description here
相反,它給了我00或空的在PIC-2(有問題)

這是因爲,它的聚集季報措施和申請彙總措施的公式((1+M1)*(1+M2)*...*(1+Mn)-1)。也就是說,它計算SUM([Monthly Return])爲季度並在此之後應用公式。它必須先用公式進行計算並對結果進行求和。

我所做的只是取消了從AnalysisAggregate Measuresenter image description here

在計算之前不會聚合這些值。