練習表計算
參考@禹楊的文章https://zhuanlan.zhihu.com/p/66306823
備注:
- 下載數據后,模仿。感覺文章有點啰嗦。自己重寫理解的過程,盡量簡潔。
- @禹楊的分析數據來源於tableau的一篇文章《10 大 Tableau 表計算》
- 我的分析數據從《10 大 Tableau 表計算》下載。
下面開始練習。
附加:我自己寫的理解表計算的文章https://www.cnblogs.com/chentianwei/p/12580275.html
自參考日期開始的百分比變化
數據來源是4支股票的收盤價的歷史數據:
- Company Name
- Date: 2007/12/31 ~2009/9/17
- Ticker即股票簡稱。本數據有4支股票。
- Adj close: 收盤價
作為一名炒股分析師,我希望分析出某個日期的收盤價相對於其他日期收盤價的比較。
即一個日期A,在圖表上顯示相對這個日期收盤價A_close,其他日期收盤價和它的比例: ( A_close - ohter_close ) / A_close, 見結果:
分為幾個步驟:
- 做出正常的收盤價格圖
- 創建一個參數:作為參考日期。
- 創建計算字段:“參考日期的收盤價”。
- 相當於在原數據表格上添加一列字段,即這列只有2個值,參考日期的收盤價和null值。方式是使用窗口函數window_max。
- 創建計算字段:“Difference”。把👆的公式代入,然后把"Difference"放到行上,替換掉之前的"總和(AdjClose)"
- 4.5 使用默認的表計算。可以自己再打開“表計算”窗口,確認一下。
- 在圖上加一條參考線。
第一步,做出正常的收盤價圖:
- 把維度date放到列,並改為“連續”和"天:2015年5月8號"
- 行:adj_close收盤價
- 標記:“顏色”Ticker, 讓圖上顯示4支股票的各自收盤價走勢圖。
第二步,設置參考日期。
創建一個參數作為參考日期。
用途:圖表的變化都是基於這個參考日期。
方法:
1. 在左側“數據”欄,右鍵單擊->下拉菜單選擇“創建參數..”。
2. 在參數上右鍵單擊->下拉菜單選擇"顯示參數控件"。
第三步,創建一個“計算字段”:“參考日期的收盤價”
“參考日期的收盤價”即👆提到的( A_close - ohter_close ) / A_close公式中的A_close。
WINDOW_MAX( IF (MAX([Date]) = [Enter Reference Date:]) THEN SUM([Adj Close]) ELSE NULL END, FIRST(), LAST())
解釋:
window_max(exp, first, last)是一個窗口函數,熟悉SQL語法的都會了解窗口函數。聚合函數() over(分區, 排序,分區內再划分一個范圍)
tableau把它歸類到表計算函數中了。
很恰當,因為窗口函數就是真對每一行記錄(數據)的聚合函數計算,並把計算結果附加到這行記錄后(相當於增加了一個字段)。
- exp是一個表達式。
- first和last相當於分區內的再划分一個范圍。
- window_max,其中max代表聚合方式,是取最大值。
第四步,創建計算字段“同參考日期收盤價比較區別”
1+ ((sum([Adj Close]) - [參考日期的收盤價]) / [參考日期的收盤價])
其實就是公式( A_close - ohter_close ) / A_close的變種。
1. 加1的目的:
通過➕1,把橫坐標從0太高的1,即100%。方便比較!!
2. 使用sum()的原因:
tableau的語法規則,聚合參數只能和聚合函數配對使用。所以套上一個sum(),不會產生額外效果。
第4.5步, 對“同參考日期收盤價比較區別”進行表計算。🌿
tableau使用了默認的表計算:而這個默認結果其實就是我們想要的結果,因此不用編輯表計算。
第五步,添加一條參考線
點擊“分析”欄->"參考線"。
完成!