先把结论说清楚:空值通常表示“这个字段没有拿到可判断的数据”,零值通常表示“拿到了数据,而数据本身是零”。但这条规则不是绝对的,因为不同工具对缺失、未覆盖、被过滤、低于阈值这几种情况可能都返回空或都返回零。真正可执行的做法不是背规则,而是拿你手上一个具体页面做一次对照,把每个空值和零值还原成可复现的查询条件,再判断它属于哪一类。
选一个你确认有自然流量的落地页,把它放进工具里,同时记录三样东西:查询条件、返回字段、返回结果。假设这个页面在某个关键词下确实有展示,但工具显示该词的点击为 0、展示为 0,那么零值更可能是“该查询条件下确实没有数据”,而不是“数据缺失”。反过来,如果同一页面在其他词下有展示数据,而这个词整行是空白,那空白更可能是覆盖或抓取层面的缺失。
这个对照的价值在于:它把“空和零的语义”从工具文档的抽象说法,变成了你手上可验证的样本。做完这一步,你才会知道下一步该去查覆盖、查过滤条件,还是直接接受这个零。
空值不是一种东西。常见的至少有三类,处理动作完全不同:
区分它们的动作是:把筛选条件放宽一档,看空值是否变成有值。如果放宽后出现数据,说明是过滤导致的空;如果放宽后仍然为空,而同一对象在其他字段有值,更接近未覆盖;如果所有字段都为空,先怀疑对象本身没有被收录进工具的数据集。
零值同样有歧义。一个字段显示 0,可能是真实的零,也可能是计算后归零。判断依据是看这个零是否与其他字段自洽。
例如,某关键词的点击为 0,但展示不为 0,这在逻辑上是成立的:有展示、无点击。如果展示也为 0、点击也为 0,而排名字段却有值,这就自相矛盾,说明零值可能是被填充的默认值,而不是真实观测。遇到这种不自洽,正确动作是回到原始导出或更细的时间粒度,而不是直接把这个零当成结论。
另一种归零来自四舍五入或单位换算。假设工具按千次展示为单位展示,一个真实值为几百次展示的查询可能被显示为 0。这种情况下零值代表“低于显示精度”,不代表没有发生。判断方法是把单位调小或导出原始值,看零是否变成小数或非零整数。
单个样本成立,不代表整批成立。当你把对照扩大到几百个页面时,最常见的问题是:不同页面用了不同的查询条件,导致空值和零值混在一起,无法比较。
可执行的动作是:先固定一组筛选条件(同一时间范围、同一设备类型、同一数据源),在这组条件下跑一批页面,记录每个字段的空值和零值比例。然后只改一个条件,比如把时间范围拉长,再看比例如何变化。如果空值比例明显下降,说明原来的空主要是时间窗口太窄导致的未覆盖;如果零值比例上升,说明拉长时间后出现了更多真实的零。
这一步的结果直接决定下一步:空值多,就去查覆盖和采集;零值多,就去查这些零是否自洽、是否被精度截断。不要在没有固定条件的情况下直接下结论说“工具数据不准”。
区分清楚之后,每个字段都应该有一个明确的处理动作。可以按下面这种方式落地:
这样做的结果是:你不再需要记住某个工具当前把空值定义成什么,因为每个值都被还原成了可复现的条件和动作。工具的具体字段定义和默认行为可能随版本变化,遇到不确定的字段,以你手上这次对照的结果为准,并在使用前核对当前版本的说明。
最后提醒一点:请求量、抓取量或某个统计归零,不能单独证明你的处理是正确的。归零还可能来自采集失败、权限变化、接口限流或对象被移除。只有当你同时确认了查询条件、字段自洽性和对照样本,零值才具备判断价值。