最近使用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