不能直接拼接,因为“快照时间”在旧记录和新记录里往往不是同一种字段:旧记录可能只有日期戳,新记录可能带完整时间戳、抓取状态或页面版本标识,两者没有可对齐的主键。若强行画成一条趋势线,变化可能来自字段定义和采集口径,而不是页面本身。可行的做法是先拆成两条各自可解释的序列,再决定是否用共同锚点做有限对照。
处理这类数据时,第一个要问的不是“能不能连起来”,而是“连起来以后,横轴和纵轴各自代表什么”。只有满足下面第一种条件,拼接才有意义;否则应保持分离。
判断动作很具体:先列出两张表的所有字段,标出哪些是标识字段、哪些是时间字段、哪些是状态字段。如果标识字段无法一一对应,就停止拼接,改为分别描述。这个动作的结果会直接决定下一步——是进入对齐流程,还是转入分列展示。
很多人卡住的地方,是已经把数据导进图表工具,发现时间轴对不上才回头找原因。更有效的顺序是先做字段映射表,再决定可视化形式。
假设有一份旧记录,字段是“页面标题、快照日期”;一份新记录,字段是“URL、抓取时间、HTTP状态”。这里没有共同字段:标题和URL不一定能可靠对应,快照日期和抓取时间也不一定是同一种观测。此时可以尝试构造一个中间键,例如把标题和URL都归一到同一规范形式,再人工抽查若干条是否能匹配。如果匹配率低,就不要继续拼接。
如果匹配率足够高,下一步也不是直接合并,而是保留来源标记,例如增加一列“数据来源”,再按同一时间粒度汇总。这样即使两条序列画在一起,也能看出某一段变化是来自旧记录还是新记录。动作的结果是:你能区分“页面变化”和“采集来源变化”,而不是把两者混成一条线。
存在例外情况。若旧数据和新数据虽然没有完全相同的字段,但有一个可验证的共同锚点,例如同一批页面在某个时间点被两种方式同时记录过,就可以用这段重叠期做校准。校准的目的是确认两种口径在同一时间点是否给出接近的结果;如果差异很大,说明口径不可比,拼接仍然不成立。
另一种例外是只做“事件标注”而不是“趋势连线”。例如把旧记录中的快照日期作为历史事件点,把新记录中的抓取时间作为近期事件点,分别标注在同一时间轴上,但不把两者连成一条趋势线。这样读者能看到时间分布,却不会误以为这是同一指标的连续变化。
需要说明的是,快照时间本身是历史概念,不同时期记录的内容和方式可能不同。这里不假设某个查询入口仍然可用,也不假设旧记录一定完整。若旧数据只剩日期、没有页面标识,那么它更适合作为背景信息,而不是趋势数据的一部分。
无论选择拼接还是分列,都建议保留以下字段,方便后续复核:原始时间值、归一后的时间粒度、来源标记、页面标识、采集状态。缺失值应保持为空,不要填零。把“没有记录”当成“数值为零”,会直接制造出虚假的下降或上升。
如果最终决定不拼接,输出形式可以改为两条独立序列加一段文字说明:旧记录覆盖哪个时间段、新记录覆盖哪个时间段、两者之间是否存在无法对齐的字段。这个结果会影响下一步——如果后续要补数据,优先补的是共同标识字段,而不是更多时间点。
旧数据与新数据没有共同字段时,默认不能拼接趋势;只有在存在稳定共同标识、时间粒度可对齐,或存在可验证重叠锚点时,才考虑有限对照。先做字段映射和匹配抽查,再决定画一条线还是两条线,是比事后解释曲线更可靠的做法。