今天早上,部门一同事突然问我:为什么使用 Tableau 计算出来的平均值不正确??
于是我发现她正在统计某公司客服部的平均通话时长。总通话时长是300分钟,一共有55条通话记录。从表面上看,平均通话时长是300/55=5.45。然而 Tableau 计算显示的最终结果是5.77。
很显然这两种算法之间存在有 0.32 的“误差”。
说到这儿,相信很多刚刚接触使用 Tableau 的童鞋同样很困惑,为什么不一致呢?
其实不只是你们平均值计算,很多老客户在使用过程中也同样遭遇过这样的问题。今天小编就来科普一下 Tableau 中关于平均值的计算逻辑吧~
回到文首, 针对同事提出的这个问题,我们首先应该知道 Tableau 中存在一功能就是“查看数据”,这个功能对于经常写计算公式的分析师们来说也是必不可少的。通过“查看数据” 功能,我们就可以知道 Tableau 中平均值的计算逻辑。
选中视图中的平均通话时长“5.77”,右键单击-【查看数据】-【完整数据】:
这样,在 “查看数据:平均通话时长” 的明细数据对话框中,就可以预览到原始数据源中基础数据。为了方便查看数据的大体趋势平均值计算,可以点击其中的一个列标题进行数据值的升序和降序排列。
这时候就会发现,“通话时长”这列存在三个空值。
那么问题来了,5.77是不是总通话时长300/52(3行NULL)的结果?
掏出计算器一算,结果正是5.77。
由此可见,Tableau 中平均值的计算是不考虑空值行的。也就是说:空值的行数不计入分母的总数。如果上述“通话时长”列不包括NULL,分母当然就是55咯。
怎么样,这会儿是不是已经由学酥进阶成学霸啦?
看到这,可能有的客户又会问:如果我的业务需求就是要求总通话时长300除以含有空值行数的55怎么办?(其实小编也想不出来这种情况适合什么场景,但是有问就得有答)
对于这个问题目前有两种解法,但都得通过创建计算字段来实现。
方法一:利用 ZN 函数将空值置零
再来看一下基础数据:
在 Tableau 中创建计算字段实际上是新添加一个列(注意这个列只是存在 Tableau 中,不会回写到基础数据库中),这个新的列 “通话时长 NULL-0” 已经将NULL置零。平均通话时长为:300/55=5.45。
方法二:直接利用记录数
结果和利用 ZN() 函数是一样的。
同理可见,如果统计 “通话时长” 的行数,是不是也会忽略 NULL 呢?
事实证明:如果统计 “通话时长” 的行数,同样也会忽略 NULL。
各位学霸想想为什么?
(在统计学的理论上,平均值是考量数据分布的集中趋势,只考量存在的有意义的集中趋势。举个极端的例子,如果3月1日只有一通电话记录通话时长,假设为2分钟,但是收集到的 NULL 记录有54行,那么平均值必然是2分钟,而不是2/55,否则没有意义。)
这里再讲讲记录数的用法。记录数是分析人员在连接数据源之后在【数据】-【度量】的窗口中自动生成的字段,用来记录数据的行数。
如果连接了数据量较大的数据源,并且想要知道自己数据的量级,那么直接拖 “记录数” 到工作表中就好了,它就会告诉你。“通话时长”这个数据只有108个记录,即108行。
好了,今天的技巧就先分享到这,各位童鞋对于以上内容如果还有其他问题,欢迎文末点赞留言~
更多前沿资讯 / 专场培训 / 精彩活动
欢迎持续关注“数据艺术家”公众号哦!
Bizinsight美智讯
我们是根植于本土的知识密集型团队,全球视野的产品与服务提供商;
我们是您的最理解数据需求的BI专业团队,最懂得IT架构的数据分析师;
我们致力于帮您洞察数据知识,商业信息看得见!量化生意过程,商业价值算得出!
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信: