先给一个可执行的结论:如果两个报表的时区不同,不要直接把两边的“某一天”相加或相减,而应先确定一个统一的对齐基准,再按小时粒度把两边数据映射到同一个时间轴上。能否对齐,取决于两个报表是否都保留了小时级时间戳、是否记录了各自时区,以及“一天”的定义是否一致。缺少小时粒度时,只能做近似对齐,不能声称精确还原。
很多所谓“时区不同”,其实是同一时区下两个报表的统计口径不同。例如,一个报表按北京时间自然日汇总,另一个按广告账户所在时区汇总。要区分这两种情况,可以查三个证据:报表设置里是否标注时区、导出数据是否带小时列、同一事件在两边出现的时间差是否恒定。
这一步的实际动作是:分别导出两个报表最近 3 天的小时级数据,观察同一类事件在时间轴上的偏移。若偏移稳定,下一步就是统一时区;若偏移不稳定,先解决时间戳记录问题,再谈对齐。
假设报表 A 使用北京时间,报表 B 使用 UTC。北京时间比 UTC 快 8 小时。若报表 A 的“3 月 10 日”是北京时间 00:00 到 23:59,那么它对应报表 B 的 UTC 时间范围是 3 月 9 日 16:00 到 3 月 10 日 15:59。此时不能把报表 B 的“3 月 10 日”直接拿来对比,因为两者覆盖的物理时间不同。
可操作的做法是:把两个报表都导出为小时级数据,然后按统一时区重新分组。例如都换算成北京时间,再按北京时间自然日汇总。这样得到的“一天”才是同一个物理时间段。这个动作的结果是:两边日汇总的起止点一致,后续比较点击、访问、转化时不会把不同时间段的量混在一起。
如果报表 B 只能提供日汇总,没有小时列,那么只能按固定时差做近似平移。例如把报表 B 的“3 月 9 日”和“3 月 10 日”各取一部分,按 8 小时比例估算。但这种方法会引入误差,不适合用于精确核对,只适合看趋势。
假设你已经把两个报表都换算成北京时间,按同一天汇总,但点击图上的点击量和另一个报表的访问量仍然差很多。这时不要继续调时区,因为时区对齐只能解决时间范围错位,不能解决口径差异。
常见的原因包括:一个报表统计的是点击,另一个统计的是访问;一个去除了重复点击,另一个没有;一个按设备时间记录,另一个按服务器时间记录;一个包含站外跳转,另一个只统计站内落地。此时需要回到百度统计点击图,检查点击图上的点击是否对应了实际访问,以及访问是否被后续过滤规则排除。
这个反例说明:时区对齐是必要条件,但不是充分条件。如果对齐后差异仍然存在,下一步应核对指标定义和过滤规则,而不是继续调整时区。
当多个角色对“同一天的数据”有不同理解时,可以把分歧拆成几个可核对的项目,而不是争论谁对谁错。
完成这些核对后,如果差异仍然无法解释,下一步应检查数据导出环节是否有过滤、采样或延迟。例如,百度统计点击图的数据可能因处理延迟而在当天不完整,而另一个报表已经完成汇总。此时应等待数据稳定后再对比,而不是在数据未完整时下结论。
如果你现在就要处理两个时区不同的报表,建议按这个顺序操作:先导出两边的小时级数据,确认时区偏移是否稳定;再按统一时区重新汇总成同一天;然后对比日汇总差异;如果差异仍然存在,再检查指标定义和过滤规则。这个顺序可以避免把时区问题误判为数据质量问题,也可以避免在口径不一致时反复调整时区。
需要强调的是,时区对齐只是让两个报表覆盖同一个物理时间段,并不能保证两个报表的数值完全一致。如果两个报表的统计对象不同,比如一个统计点击、一个统计访问,那么对齐后仍然会有差异,这是正常的。此时应分别记录两个指标,而不是强行让它们相等。