跳至正文

分析常识-特别专题:0和“空”一样吗?

标签:

1、起点

读者群有人问我一个奇葩的问题:“如何把交叉表中空的数据值改为0”。

前几天在一家客户培训中,有人用ETL处理好的数据完成留存分析,完成了如下的图:

很多excel分析师对0和NULL有一种错误的认知,认为彼此可以相互替代。一部分原因是Excel确实把NULL、NA和0视为相同,如下所示的案例中,不管第三行是0,空,还是null、NA,都可以使用SUM函数获得相同的合计值。

这个“设计”甚至一直延续到DAX语言中,比如AVERAGEA函数,它可以对字段中包含的字符串、非数字指定计算,它有这样的逻辑:

  • 计算结果为 TRUE 的值计为 1。
  • 计算结果为 FALSE 的值计为 0(零)。
  • 包含非数字文本的值计为 0(零)。
  • 空文本 (“”) 计为 0(零)。

虽然语法上可以设置,但是在业务中,0是0,空是空,二者虽可视为相同,但绝非一致。

2、业务中的空和0

从数学的历史上看,0是一个里程碑,相比之下,null的地址似乎没有那么重要。对于原本就没有的内容,我们一直可以用“空”来表示,不管是语言上的文字,还是发明一个N/A或者NULL的特殊字符串。

0则是一个原本来、但当下没有的状态,比如我抽屉里昨天有10元钱,今天花光了,余额是0——相比之下,我小时候手中从来没有一分钱,而且在我儿时的预料中,我也不会有一分钱,那个状态就是“空”。

业务中,0代表可以存在、但当下没有,空代表真没有,过去没有、现在也没有。

比如在薪酬数据表中,为了方便的计算“应发合计”“实发合计”等汇总值,同时也为了美观,人事倾向于把所有单元格填充为0——即便是某些人本来就没有“通讯补贴”。如下图前面几行所示。

但在Tableau等专业工具中,0和NULL是完全不同的“数据”。0和NULL相加,结果还是NULL——因为逻辑上行不通。正因为此,就有了ISNULL的判断、ZN的转换操作。

再回头看会员分析中的留存分析,对于未来的日期,客户 状态还没有抵达的地方,数据必然是null,而非0.所以Tableau做出来的留存分析如下所示。

喜乐君