答案取决于缺项是否集中在同一维度。如果缺的是个别词、个别日期,先补缺口再聚合,代价低且不会污染整体;如果缺的是某个来源、某段连续时间,先隔离样本,把缺项标成不可用,再决定是否回补。直接按默认值填充或跳过缺失行继续汇总,是错误扩散的主要路径,因为后续所有均值、环比和排名都会继承这个错误。
把缺项分成两类:点状缺失和结构性缺失。点状缺失指某个关键词在某一天没有数值,但同一来源、同一时间窗的其他数据完整;结构性缺失指整个来源、整个时间段的记录成批为空,或者字段本身没有采集到。
判断依据不是缺失条数,而是缺失是否可解释。如果缺失集中在周末、节假日或某个采集批次,属于可解释的点状缺失;如果缺失横跨多个批次且没有规律,属于结构性缺失,不能靠补几个值解决。
假设某关键词在 3 天内有值、2 天为空,且空值出现在同一采集批次。动作是:先查原始日志,确认是采集失败还是关键词本身无搜索量。如果是采集失败,用同一来源、相邻日期的值做插补,并记录插补标记;如果是关键词本身无搜索量,把空值改为 0,而不是保留空。
回补后必须做一次前后对比:把插补前后的周均值、周环比各算一遍。如果差异超过你设定的容忍范围,说明插补放大了波动,应该退回隔离方案。这个动作的结果决定下一步:差异小就继续用回补后的数据;差异大就改为隔离,把该关键词从当期聚合中剔除,单独观察。
当某个来源整段缺失时,正确动作是把它从当期聚合中移除,而不是用其他来源的值替代。替代会掩盖来源之间的口径差异,让后续的环比看起来平稳,但实际已经混入了不同采集条件的数据。
隔离后要做两件事:一是记录被隔离的来源、时段和原因;二是对剩余来源重新计算聚合值,并检查剩余来源的覆盖是否足够。如果隔离后剩余样本量降到无法支撑结论,就不要出当期结论,改为只做趋势描述,等缺失来源恢复后再补算。
这里的边界是:隔离只解决“不继续错”,不解决“缺的数据怎么办”。如果业务需要完整时间序列,回补是必要的,但回补必须基于可验证的原始记录,不能靠模型猜测。
假设某站点用两个来源统计某类词的搜索需求,来源 A 完整,来源 B 在某一周只有前三天有值。直接合并会得到一条被拉低的周曲线。正确做法是先把来源 B 该周标为结构性缺失,用来源 A 单独出周值,并注明“本期仅来源 A”。下一周来源 B 恢复后,再按同一口径重算两周对比。这样做的代价是当期覆盖变窄,但避免了把来源 B 的缺失当成需求下降。
在采集和汇总之间加一个检查点:每次聚合前先输出缺项清单,按来源、字段、时间三个维度分组。清单里区分“可回补”和“需隔离”,并记录处理动作。这个检查点的输出直接决定下一步是继续聚合还是暂停出数。如果缺项清单为空,才进入正常聚合;如果不为空,先按上面的条件选择回补或隔离,再聚合。
最后要接受一个事实:缺项处理没有一劳永逸的规则,只有当前数据条件下更少出错的选择。回补和隔离都会改变结果,关键是让改变可追溯、可复算,而不是让缺失值悄悄进入分母。