先给结论:不要直接把两个报表的“日汇总”放在同一张图上比较。正确顺序是——先确认每个报表的“一天”是按哪个时区切出来的,再把两边统一到同一个参考时区,或者把比较粒度从“天”降级到“小时”,让重叠区间自己对齐。如果两个报表都只能导出日粒度、且时区不可调,那就只能保留其中一个作为基准,另一个仅用于趋势参考,不要用于逐日对比。
时区不同和对“一天”的定义不同,表现很像,但处理方式完全不同。可以先用一个动作区分:取一个访问量变化明显的时段(例如一次集中投放或一次故障),看它在两个报表里分别落在哪一天。
只有确认是时区切分点不同,后面的对齐方法才成立。否则先处理口径,再谈时区。
适用前提:两个报表都能导出小时级数据,或者至少能导出原始时间戳。这是最干净的做法。
具体动作:把两边都导出为“日期+小时+指标”的明细,然后在同一个表格里,按统一时区重新计算归属日。例如把 UTC 报表的每个小时加 8 小时,再按加完之后的日期重新汇总,就得到与 UTC+8 报表同口径的日数据。
代价是:需要保留小时明细,导出文件更大;如果某个报表只给日汇总,这条路直接走不通。另一个代价是,重新归属后,你看到的“日数据”已经不是原始报表里的那一行,做汇报时要注明这是换算后的口径,避免别人拿原始报表来对账时对不上。
适用前提:至少一边只有日粒度,无法重算;或者你只是想知道两边趋势是否一致,不需要精确到某一天。
具体动作有两个方向。一是把比较窗口从“一天”拉长到“一周或一个月”,时区造成的边界误差会被摊薄,趋势是否一致更容易看出来。二是只在两个报表时区重叠的那段时间里做对比,比如两边都覆盖的某个连续小时区间,逐小时比对,绕开“日切点”这个麻烦。
代价是:你失去了“某一天到底差多少”的精确答案,只能回答“方向是否一致”。如果业务决策依赖单日数字(例如按天结算的投放),这个方法不够用,应该回到做法一或直接只用其中一个报表。
适用前提:两个报表的时区都不可调、粒度都只有天,且你无法接受换算带来的口径混用。
具体动作:选一个报表作为唯一基准(通常选与你业务结算时区一致的那个),另一个报表只用来做异常提示,不做数值对比。例如基准报表显示某天访问下降,另一个报表如果也显示下降,可以增强“确实有变化”的判断;但两者具体差多少,不进入结论。
代价是:你放弃了交叉验证的精度,等于承认两个数据源在当前粒度下不可比。这个取舍在时区差异无法消除时是诚实的,比强行对齐后得出错误差值要好。
假设报表 A 按 UTC+8 切日,报表 B 按 UTC 切日,两者记录的是同一批访问,只是归属日不同。某天 UTC+8 的 00:00 到 08:00 之间有一批访问,在 A 里算作当天,在 B 里因为还没到 UTC 的 00:00,会被算作前一天。于是同一天在两个报表里天然会差出这 8 小时的量。
这时如果直接比较两边的日访问量,差值主要来自切点,而不是来自真实流量变化。把 B 的小时数据整体加 8 小时再重新汇总,差值会明显收窄——收窄之后如果仍有差异,才值得去查口径问题。这个例子的数字只是用来说明偏移方向,不代表任何真实报表的量级。
换算完成后,不要立刻下结论。先检查换算后的日合计是否等于换算前的总计:如果总和对不上,说明换算过程中有记录被重复计入或漏掉,通常是跨日边界处理有误。再取一个已知的平稳日做对照,看两边换算后是否接近;如果平稳日仍然差很多,问题就不在时区,而在统计口径或过滤规则。这一步的结果直接决定下一步:对得上就继续用换算口径分析,对不上就回到口径排查,而不是继续调时区。