[Tableau实用技巧] 复杂的组合计算

最近做的Tableau报告里遇到一个非常有意思的复杂组合计算。

问题描述

首先,来说一下业务逻辑。售后服务部门有两种服务业务,第一是免费的保修服务,第二是收费的保外服务。
保修服务是指在保修期内,非客户原因造成的损坏,则可以提供免费维修。
保外服务是指在保修期内因客户原因造成的损坏,和保修期外一切的损坏,提供有偿维修服务。
因此,

  • 保内返修率计算公式: 保内维修量 / 保修期内产品量
    所有保修维修全部来自于保修期内产品,因此分母为保修期内产品量。

  • 保外返修率计算公式:保外维修量 / (保修期内产品量+保修期外的产品量)
    保外维修可能来自于保修期外产品量,也可能来自于保修期内(如产品损坏是客户自己造成的),因此分母是保修期内产品量加上保修期外的产品量。

  • 总返修率 :(保内维修量+保外维修量) / (保修期内产品量+保修期外的产品量)
    总返修率是总返修量除以保修期内加保修期外总产品量。

数据格式为:

产品保修状态维修量产品保有量
产品 A保内804500
产品 A保外1808600
产品 B保内36500
产品 B保外783400
产品 C保内1604500
产品 C保外2106700

产品A的保内返修率 = 保内维修量 / 保修期内产品量 = 80 / 4500 = 1.78%
产品A的保外返修率 = 保外维修量 / (保修期内产品量+保修期外的产品量) = 180 / (4500 + 8600) = 1.37%
产品A的总返修率 = (保内维修量+保外维修量) / (保修期内产品量+保修期外的产品量)= (80+180) / (4500 + 8600) = 1.98%

实现方法

使用Tableau时你会发现,这个问题不能简单的用聚合公式来计算。我的解决方案如下:
定义一个变量 Failure Rate Type, 数据类型是String,值有三种: INW, OOW, TOTAL. 分别对于现实值 “保修内返修率”,“保修外返修率”, ‘“总返修率’。
在这里插入图片描述
定义新字段**[计算 - 维修量]**的计算公式如下:

IF [Failure Rate Type] = 'INW'  AND [保修状态] = '保内' THEN [维修量]
ELSEIF [Type] = 'OOW' AND [保修状态] = '保外' THEN [维修量]
ELSEIF [Type] = 'TOTAL' THEN [维修量]
ELSE 0
END

定义新字段**[计算 - 产品保有量]**的计算公式如下:

IF [Failure Rate Type] = 'INW'  AND [保修状态] = '保内' THEN [产品保有量]
ELSEIF [Type] = 'OOW' AND ([保修状态] = '保内' OR [保修状态] = '保外') THEN [产品保有量]
ELSEIF [Type] = 'TOTAL' THEN [产品保有量]
ELSE 0
END

这两个字段会根据[Failure Rate Type]的不同选择不同的维修量值和产品保有量值。现在,我们只要定义**[返修率] = sum([维修量])/sum( [计算产品保有量] )**,并且设置“Show Parameter Control” 就可以使用[Failure Rate Type] 控制来得到我们想要的结果了, 即使是使用聚合运算也没有问题。

  • 当[Failure Rate Type] = ‘INW’时, 这两个字段以及**[返修率]**呈现出来的结果,以及按产品各级聚合结果如下。
产品保修状态维修量产品保有量计算 - 维修量计算-产品保有量返修率
产品 A保内804500804500=80/4500
产品 A保外180860000-
产品 A 总共*36013100804500= 80/4500
产品 B保内3650036500= 36/500
产品 B保外78340000-
产品 B 总共*114390036500= 36/500
产品 C保内16045001604500= 160/4500
产品 C保外210670000-
产品 C 总共*370112001604500= 160/4500
总共*844282002769500= 276/9500
  • 而当[Failure Rate Type] = ‘OOW’时, 这两个字段以及**[返修率]**呈现出来的结果如下。
产品保修状态维修量产品保有量计算 - 维修量计算-产品保有量返修率
产品 A保内80450004500-
产品 A保外18086001808600=180/8600
产品 A 总共*3601310018013100=180/13100
产品 B保内365000500-
产品 B保外783400783400=78/3400
产品 B 总共*1143900783900=78/3900
产品 C保内160450004500-
产品 C保外21067002106700=210/6700
产品 C 总共*3701120021011200=210/11200
总共*8442820046828200= 468/28200
  • 当[Failure Rate Type] = ‘OOW’时, 这两个字段以及**[返修率]**呈现出来的结果如下。
产品保修状态维修量产品保有量计算 - 维修量计算-产品保有量返修率
产品 A保内804500804500=80/4500
产品 A保外18086001808600=180/8600
产品 A 总共*3601310036013100=360 /13100
产品 B保内3650036500= 36/500
产品 B保外783400783400=78/3400
产品 B 总共*11439001143900=114/3900
产品 C保内16045001604500= 160/4500
产品 C保外21067002106700=210/6700
产品 C 总共*3701120037011200=370 /11200
总共*8442820084428200= 844 /28200
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小白的逆袭日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值