Tableau技巧——快速計算同比和環(huán)比(及其衍生)

同比和環(huán)比是統(tǒng)計分析中常見的功能,在Tableau中,通過表計算,我們不用寫一行代碼,就可以快速實現(xiàn)同比和環(huán)比。

環(huán)比

根據(jù)百度得到,環(huán)比增長率=(本期數(shù)-上期數(shù))/上期數(shù)×100%。

以2016年10月銷售額為例,環(huán)比增長率=(2016年10月銷售額-2016年9月銷售額)/2016年9月銷售額*100。那么在Tableau中,怎么才能不寫代碼就得到環(huán)比增長率呢?不寫代碼?我書讀的少,不要忽悠我哦!

以10.2版本為例,數(shù)據(jù)源使用自帶的《示例 - 超市》,讀取數(shù)據(jù)源后,將訂單日期拖到行功能區(qū),右鍵選擇下面的“月”格式,并設(shè)置為離散,效果如下:

然后復(fù)制度量窗格的“銷售額”,將“度量名稱”拖到列功能區(qū),按住ctrl鍵將“度量名稱”從列功能區(qū)拖到篩選器區(qū),并選擇“銷售額”、“銷售額(復(fù)制)”兩個度量字段:

將“度量”窗格的“度量值”拖到“標記”——“文本”:

這樣我們就得到了一個按年月升序排列的銷售額數(shù)據(jù),接下來右鍵“標記”區(qū)的“總計(銷售額(復(fù)制))”字段,選擇“快速表計算”——“百分比差異”,就得到了我們想要的環(huán)比數(shù)據(jù)啦:

設(shè)置下字體格式,編輯下字段別名:

你沒有看錯,就是辣么簡單!就是不寫一行代碼!就是辣么任性!環(huán)比就搞定了!??!

先不要高興的太早,老話說,知其然,還要知其所以然。為什么Tableau計算環(huán)比這么簡單,我們來看看原因在哪里。

在前面的操作中,我們使用了Tableau一個強大的功能,表計算。這里的表,并不是數(shù)據(jù)源對應(yīng)的那個表,而是一個虛擬表,是在工作表開發(fā)界面由選擇的維度和度量構(gòu)成的一張?zhí)摂M表。在環(huán)比這個例子中,虛擬表是由“訂單日期”按照年月格式顯示的一個維度字段,和“銷售額”、“銷售額(復(fù)制)”兩個度量字段,按照“訂單日期”升序排列而創(chuàng)建。升序排列讓Tableau知道該如何選擇“本期”和“上期”,兩個度量字段用于實際計算環(huán)比,但是最關(guān)鍵一步,還是在于選擇的表計算類型“百分比差異“。讓我們右鍵“總計(銷售額(復(fù)制))”字段,選擇“編輯表計算”,一探“百分比差異”的神奇之處:

這里有幾個關(guān)鍵之處,首先我們看到“計算依據(jù)”選擇了“表(向下)”,由于虛擬表是按照訂單日期升序排列,因此“表(向下)”告訴了Tableau你計算“百分比差異”的順序是往下,另外下面可以看到“相對于”——“上一”,這就是告訴Tableau,“上期”的位置是“當期”的上面一個數(shù)值。翻譯成人話就是,從2013年1月開始計算,往下一直到2016年12月。第一個當期是2013年1月銷售額,上期就是上一行,也就是2012年12月銷售額,但是虛擬表中沒有2012年12月銷售額,因此2013年1月的環(huán)比為空。然后往下到第二行,2013年2月銷售額為當期,那么上期就是上一行,也就是2013年1月銷售額,這時候按照內(nèi)置的計算邏輯:(2013年2月銷售額-2013年1月銷售額)/2013年1月銷售額*100,就得到了2013年2月環(huán)比增長率,后面以此類推,直接2016年12月銷售額計算完畢,整個表計算也就結(jié)束。

有同學(xué)會問,如果不是升序排列,而是降序呢?那么只要在“相對于”這里,選擇“下一”就可以了:

再提高一點,除了通過可視化了解環(huán)比,還可以通過Tableau自動生成的代碼來學(xué)習(xí)環(huán)比計算,我們可以雙擊“標記”區(qū)的“總計(銷售額(復(fù)制))”字段,將里面的代碼拷貝出來,貼到一個文本文件:

是不是看了有點暈,沒關(guān)系,我們先解釋下幾個函數(shù):

ZN函數(shù)是指如果括號里的表達式結(jié)果不為NULL,則返回它,否則返回0。用這個函數(shù)主要是處理NULL值。

ABS函數(shù)是取括號里表達式的絕對值。

重點來了,趕緊記趕緊記,LOOKUP函數(shù)是這段代碼的靈魂,括號內(nèi)分兩部分,逗號前面是當前值,后面的-1表示上一個值,翻譯成人話就是根據(jù)當前值,找它的上一個值。

三個函數(shù)明白了以后,這段代碼的含義就可以理解為:

(當前值 - 根據(jù)當前值找到它的上一個值)/根據(jù)當前值找到它的上一個值的絕對值。雖然有點繞口,但這就是“表計算——百分比差異”在Tableau中的語法。

掌握了這個公式,其實我們就可以直接用代碼來快速實現(xiàn)同比了。

同比

根據(jù)百度得到,同比增長率=(本期數(shù)-同期數(shù))/同期數(shù)×100%。

以2016年10月銷售額為例,環(huán)比增長率=(2016年10月銷售額-2015年10月銷售額)/2015年10月銷售額*100。下面我們看下如何快速實現(xiàn)同比。我們復(fù)制剛才的“環(huán)比”工作表,重命名為“同比”:

然后我們雙擊“標記”——“總計(銷售額(復(fù)制))”,將公式修改如下:

(ZN(SUM([銷售額 (復(fù)制)])) - LOOKUP(ZN(SUM([銷售額 (復(fù)制)])),-12)) / ABS(LOOKUP(ZN(SUM([銷售額 (復(fù)制)])),-12))

想一下,為什么這里不是-1,而是-12了?

因為同比,只要日期中間沒有中斷,那么上一個值就應(yīng)該是去年同月,自然等于當前年月-12了。

我們來看下結(jié)果:

2013年的12個月份,由于沒有對應(yīng)的2012年數(shù)據(jù),因此同比也沒有數(shù)據(jù),第一個應(yīng)該是從2014年1月開始。有興趣同學(xué)可以逐一核對。

如果日期按降序排列,那么代碼中只需要將-12替換成12就可以了,是不是非常的簡單方便!

掌握了這個計算公式后,不論同比、環(huán)比,還是當前值與之前、之后的任一值進行比較,我們都可以快速通過修改代碼,迅速得到正確結(jié)果,就是辣么爽!

注意事項:

1.日期序列中間不能有缺失,比如2016年12個月,如果沒有5月份,那就變成6月-4月,這是不對的。因此需要對數(shù)據(jù)源做出處理,人為添加5月份,值為0即可。

2.由于這個方法與日期字段的排序有緊密關(guān)系,因此當用戶修改了排序順序后,原來的計算公式就失效了,聰明的你,是否有更好的解決方案呢?

3.有關(guān)表計算的更多內(nèi)容,請參考課程:Tableau數(shù)據(jù)分析可視化高手進階(新)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Reference:tableau教程 w3c school 數(shù)據(jù)源 1. Tableau運算符 運算符是一個符號...
    mcdullsnow閱讀 29,179評論 1 14
  • Reference:tableau教程 w3c school 數(shù)據(jù)源 1. Tableau基本排序 數(shù)據(jù)排序是數(shù)據(jù)...
    mcdullsnow閱讀 15,845評論 0 3
  • 最近有很多人都提到一個共同問題:使用表計算得到結(jié)果后,添加了篩選器,會導(dǎo)致數(shù)據(jù)發(fā)生變化,進而影響了表計算的結(jié)果。有...
    悠長假日閱讀 12,714評論 0 8
  • 今天下了決定花了2000大洋準備和別人拼班,買了教程和資料,想到之前還專門去北京買了11本書背回來,這樣的氣勢沖...
    Merphy1閱讀 245評論 1 0
  • 葉子一直覺得自己很普通,沒有讓人印象深刻的一面,一鉆進人海或許就再也找不到了。就像自己的名字一樣,葉子,只是為了陪...
    吃土少女s閱讀 177評論 0 0

友情鏈接更多精彩內(nèi)容