標籤:

Tableau 表計算 | 增長對比

今天這個可能會有點繞,本次案例來自 :10 大 Tableau 表計算

先來熟悉數據吧

介紹數據

這是一組股票的數據

Company Name 發行公司名字

Date 收盤日期

Ticker 發行代碼

Adj Close 收盤價

* 先忽略 vRef,這是參數值

熟悉數據

使用tableau拖拖拽拽,來熟悉研究欄位之間關係吧

首先是,公司名字

含3個公司

然後,日期

從2007,至2009的數據

再看,發行代碼

和公司名稱一一對應

Adj close收盤價,是一系列數值,連續度量

數據間的關係

基本了解完畢,來看看數據欄位間的呈現什麼趨勢

第一能想到的就是,收盤價時間的關係

從2007到2009年間的價格走勢

注意,上圖詳細級別僅僅到日期價格,並沒有更詳細的信息,所以

該Line Chart代表自動聚合的結果

也就是sum(三家公司總額)

只要如下這個功能開啟,就會自動聚合

那你要問了,如果關閉呢? 如下這樣:

每一個點代表實際的數值

沒有任何聚合

OK,言歸正傳,前面沒有詳細級別,我們拖入公司名的欄位以下鑽到更詳細級別

以顏色區分三隻股票的價格

介紹需求

對於這個圖表,我們只能股價變動趨勢的實際值

而有時,我們更關心的是區間的變化情況

比如這樣,以某一參考點為基準的變化率

這個參考點,一般為買入的日期,以及賣出的日期 這個你懂的!

那麼對應這幅圖表的改造,就需將Y軸的絕對數值,替換為基於基準點的增長率

問題1:如何定位基準點

增長率的計算公式一般為:

當前價格,也就是 Adj Close

難點在於找出就是基準點的價格

關於基準點,我們使用參數設定一個可以調整的數值

為方便理解,將初始日期設為數據集的第一條數據這第一天

也就是2007/12/31這一天

定位基準日期的思路是:

只要基準日對應的欄位才會輸出數據

其他非基準日,輸出為null

這類似於這一片:[怎麼玩標記]介紹的,我們使用IF函數來將基準日與非基準日做分類

滿足條件,則為sum[Adj Close]

不滿足則為Null

如上的方式剔除了日期,那麼我們還需要在橫向,也就是公司名稱這個區間做橫穿,以計算Adj的值

則需要使用表計算函數Window_MAX

因為已經是最詳細級別,所以MAX = SUM = MIN = AVG

還記得Window函數的作用么

Window是個聚光燈,將聚光燈下的有效範圍做聚合

Window_sum就是求和,Window_avg就是求平均

兩個參數就是聚光燈的大小

計算依據就是聚光燈運動的軌跡

最終計算欄位如下:

再來解釋一下

1 Window_sum中的表達式輸出的內容 (即IF表達式)

只有全部日期序列中,與設定參數的日期相同的那一天,所對應的Adj Close才會有數據

其他都設置為空

就是如下圖這樣:

只有4/30這一天又數據,其他日期為空

2 Window_sum函數作用

Window是沿著橫向計算,所以分區即為每一天

基於橫向定址MAX最大的數值

因為只有4/30有效,所以就只有在這一天,才會計算出該分區內的Wiondow_sum

所以,該計算欄位的作用就是

選出基準日的數據

解釋完畢!

這留下一個Question Mark

是不是使用LOD的FIXED函數也可以實現該功能呢?

問題2:如何計算增長率

如上的工作,是終於計算出了基準日期的股價

下一步,根據公式計算增長率

這就算出了,每一天的數據,針對第一天價格的走勢圖

計算欄位如下

因為坐標軸從100%開始計算,所以在公式共增加1

將該增長率計算欄位時間共同呈現,效果如下:

調整參數日期設置為其他日期,比如2008/11/14,則呈現

以該日為基準點,該日期前以及該日期後的變化情況

更新記錄:

2017-2-4 正月初八 發布

Peace!


推薦閱讀:

Viz teardown | 美國發展史

TAG:TABLEAU |