最近使用Tableau做了一個項目的輸出報表,對於公司KPI會有一些比較複雜的計算公式需要在Tableau裏實現。我做的過程中在網上查了不少資料,發現大部分關於Tableau的教程都會講一些花裏胡哨的報表技巧,所以此文想講些比較務實一點的東西。
-
年度化的返修率計算
月:
當月維修量 x 12 / 當月出貨量
季度:
當季維修量 x 4 / 當季度出貨量
年度:
當年維修量 / 當年出貨量
註釋: 因爲是年度化的KPI,因此單月維修量需要乘以12做年度化,而季度維修量據需要乘以4做年度化, 年度,季度和月度的返修率計算時乘以的年度化係數不同。 -
數據格式如下
日期 | 返修量 | 出貨量 |
---|---|---|
2019-01-01 | 35 | 560 |
2019-02-01 | 44 | 640 |
… | … | … |
- 實現方法
- 首先, 生成兩個字段[季度]和[月份] ,
[季度]計算公式如下。我的項目是使用美國的財務季度,因此一季度是前一年的11月到這一年的1月,一次類推。
IF MONTH([日期])>1 and MONTH([日期]) <=4 THEN
"季度二"
ELSEIF MONTH([日期])>4 and MONTH([日期]) <=7 THEN
"季度三"
ELSEIF MONTH([日期])>7 and MONTH([日期]) <=10 THEN
"季度四"
ELSE
"季度一"
END
[月份]計算公式如下。
DATENAME('month',[YearMonth])
- [年度化返修率] 計算公式如下, 當判斷條件ISNULL(ATTR([季度]) = " * ")爲真時,表示報表聚合到年度,使用年度計算公式。 當判斷條件ISNULL(ATTR([月份]) = " * ") 爲真時,表示報表聚合到季度,使用季度計算公式。如兩者都不是,則使用月度計算公式。
IF ISNULL(ATTR([季度]) = "*") THEN //當季度值爲空,則是在計算年度數據
sum([維修量])/sum([出貨量]) //年度計算公式
ELSEIF ISNULL(ATTR([月份]) = "*") THEN //當月份值爲空,則是在計算季度數據
sum([維修量])*4/sum([出貨量]) //季度計算公式
ELSE //如果以上都不是,則是在計算月度數據
sum([維修量])*12/sum([出貨量]) //月度計算公式
END