结论先行:如果两份报表的时区不同,你无法通过简单相加得到“同一天”的页面访问量;可行的做法是选一个基准时区,把两份数据都切成同一套小时粒度,再按小时重新聚合。前提是两份报表都保留了小时级时间戳或可按小时导出的能力。若只有按天汇总且时区固定,对齐一天的数据在数学上不可逆,只能近似或放弃。
假设报表A使用UTC,报表B使用UTC+8。当你看到A的“3月1日”总计1000次页面访问量,B的“3月1日”总计1200次,直接相加得到2200次,这个数字对应的时间范围其实错开了8小时。A的3月1日覆盖的是B的3月1日08:00到3月2日08:00。两段窗口只有部分重叠,相加等于把不同时间段混在一起。
这不是数据错误,而是时间窗口定义不同。页面访问量本身没有时区属性,是报表在聚合时给时间戳套上了时区偏移。所以对齐的本质是重新划定窗口,而不是修正数值。
选UTC还是业务所在时区,不是技术偏好,而是由决策场景决定:
关键动作:确定基准后,把非基准报表的每条小时记录按偏移量平移,再按基准时区重新分日。这一步的结果会直接决定后续所有对比是否成立。如果跳过平移直接对比,后面所有差异分析都会建立在错位的窗口上。
很多后台只导出按天汇总,没有小时明细。这种情况下:
一个可核查的证据链是:先找出两份报表中时区定义写在哪个字段或说明里,再确认导出粒度是否含时间戳。如果粒度只到天且时区写死,就记录“不可对齐”,而不是硬凑一个数字。
假设报表A为UTC,报表B为UTC+8,两者都提供小时数据。某天A的页面访问量为900,B为1100。把B按-8小时平移后重新聚合,B对应到A基准日的量变成950。原本差200,对齐后差50。这说明原先的差异里有150来自窗口错位,而不是真实流量差异。
反例:如果平移后差异从50变成300,就不能直接断定“对齐后差异更大所以数据有问题”。可能的原因是B报表的小时时间戳本身已经是本地时间但被误标为UTC,导致平移方向反了。此时需要回到原始时间戳字段核对,而不是继续调整偏移量。这个反例说明:对齐动作本身也可能引入新错误,必须用原始时间戳验证。
下一步动作:取两份报表中同一天、同一小时的一条记录,手动换算后比对数值。如果这条记录能对上,说明偏移方向和粒度一致,可以批量处理;如果对不上,先解决时间戳语义问题,不要进入批量对齐。
对齐完成后,你得到的是同一时间窗口下的页面访问量,但仍不能推出“差异全部来自真实流量变化”。时区对齐只消除了窗口错位这一种解释,第三方估算口径、站内统计是否过滤爬虫、是否包含缓存命中,仍可能造成差异。对齐是诊断的第一步,不是结论本身。