不能直接拼接成一条连续趋势,但可以在明确假设的前提下做“分段趋势加断点标记”。前提是:两段数据的时间口径连续、指标含义可解释为同一方向,且你只关心方向变化而非绝对水平。如果缺少任何一项,拼接出的曲线会制造出并不存在的连续性。百度快照的历史数据尤其容易踩这个坑,因为不同时期保留下来的字段结构经常不一致。
没有共同字段时,拼接的唯一理由是两段数据可以映射到同一个业务含义。比如早期只能拿到“快照更新日期”,后期只能拿到“页面被抓取的时间戳”,两者都不是同一个字段,但都可以近似理解为“这个页面最近一次被百度处理的时间”。只有在你能为这种映射写出明确理由时,拼接才有讨论价值。
判断步骤可以固定为三步:
如果第一步就发现旧数据来自第三方抓取的快照存档、新数据来自站点自己的日志,那么字段差异背后其实是数据来源差异,这比字段名不同更难弥合。
假设你手里有两段关于某个栏目页面的记录。旧段只有“快照日期”,每月记录一次;新段只有“页面最后修改时间”,每次改动时记录。你把两者画在同一张时间轴上,看到曲线在某个月突然变得密集,于是判断“百度对这个栏目的抓取频率提高了”。
这个结论很可能失效。密集变化的合理解释至少有三种:一是新段记录的是你自己改页面的时间,与百度无关;二是旧段是月度采样,新段是事件触发,采样密度本身就不同;三是两段之间可能发生过一次站点改版,导致页面地址或结构变化,旧记录对应的对象已经不存在。这里的反例不是“数据错了”,而是拼接动作把采集机制差异伪装成了趋势变化。一旦出现这种伪装,后续所有基于该趋势的判断都会偏。
如果三步判断都通过,也不要把两段数据当成同一条线。更稳妥的做法是画成两段,在字段切换的位置留一个明显断点,并在断点处标注“口径变更”。这样读者看到的是“前一段按A口径,后一段按B口径”,而不是一条假装连续的曲线。
具体动作:在时间轴上把切换点标为竖线,竖线左侧用旧字段的图例,右侧用新字段的图例,纵轴只保留相对方向(上升、下降、持平),不标绝对数值。做完这一步后,再问自己一个问题——如果去掉断点标记,结论会不会改变?会改变,说明这个断点本身就是结论的一部分,必须保留。
百度快照属于历史概念,其查询入口和展示形态在不同时期并不一致,因此围绕快照日期做长期拼接时,字段缺失往往不是偶然,而是采集条件变化的结果。遇到旧段字段突然为空,不要直接解释为“快照停止更新”,它也可能是记录方式改变、页面结构变化或采集脚本失效。把这些可能性列出来,比补一个猜测值更有用。
同样,如果旧段用的是第三方对快照状态的转述,新段用的是你自己页面上可见的信息,两者之间还隔着一层转述误差。这类误差无法通过字段映射消除,只能通过保留原始记录来降低影响。
先不要急着画图。把两段数据各自的字段、采集方式、采样频率和覆盖时间段写成一张对照清单,然后逐项回答“这一项在两段之间是否可比”。只要有一项不可比,就先处理这一项,而不是先拼接再解释。处理完之后,如果仍然决定拼接,用断点分段呈现,并在结论中明确写出“该趋势仅在方向层面成立,绝对水平不可比”。这个动作的结果会直接决定你下一步是继续分析趋势,还是回头补采一段口径一致的数据。