报表中,各品类的订单数相加比总订单数大,是否意味着数据漏算了?如果指标采用的是去重计数,这种情况可能完全正常。关键不在数字能否竖着相加,而在“同一个订单”被统计了几次。
Microsoft的DAX文档说明,DISTINCTCOUNT用于计算列中不同值的数量;去重计数的总计通常不是各分类结果相加。原因是同一个订单可能包含多个品类,分类内各计一次,总计却只计一次。[1]
一个能直接检查的小例子
下面是本文构造的演示数据,不代表任何公司的经营结果:订单甲包含书和文具,订单乙只包含书,订单丙只包含文具。书这一组有甲、乙两个订单,文具这一组有甲、丙两个订单。两组数字相加得到四,但全表不同的订单只有甲、乙、丙三个。
这两个数并没有互相否定。四反映两组中分别参与计数的订单数量之和;三回答全体一共有多少个不同订单。如果报表标题是“总订单数”,通常需要先明确究竟想表达哪一种,不能只因为四看起来更容易和小计对上,就把总计逻辑换掉。
时间分组也要明确统计对象
同样的去重思想可以用于理解不同日期的客户数量:同一客户在两天都有记录时,每天分别去重与整个区间去重所回答的问题不同。这是对集合计数的数学说明,不代表所有平台都采用相同的客户识别规则。账号、设备或订单编号被当作标识时,指标含义也需要分别解释。
Microsoft文档还提醒,DISTINCTCOUNT会把空值纳入计数,跳过空值需要使用不同函数。[1] 所以检查数据时,除了分组范围,还应关注缺失编号怎样处理。本文不提供针对现有生产报表的修改脚本,也不根据一个总数差异判断系统存在故障。
比较两张报表前,可以先把三个问题说清:去重的是哪一个字段,统计范围是什么,空值怎么计算。然后挑少量可核查的记录手工推演,再回到报表定义。这样做能够分辨口径差异与数据问题;把指标改成普通行数,只为让总计等于小计相加,反而可能失去原本要衡量的对象。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。