首页/数据/数仓建模速查/多时区门店的日期归属
维度与事实设计149 条

多时区门店的日期归属

全球门店的「营业日」按门店当地时区判定:事实日期键要按门店时区折算,否则跨时区汇总差一天。

数仓建模速查数据更新于 2026-10-13

多时区门店的日期归属

全球门店的「营业日」应按门店当地时区判定,而不是总部时区。事实表的日期键要按门店时区折算,否则跨时区汇总时东区或西区的销售会被归到相邻的一天,日粒度报表整体错位,日环比、补货节奏都会跟着出问题。

基本信息

业务日基准门店当地日历,而非总部时间
时区来源门店维里的 tz 属性,集中维护
派生方式事实时间戳按门店时区折算日期键
库存类注意库存快照按当地营业结束时刻截取
校验方法跨时区日界前后各抽查一批订单
报表要求明确标注按当地日还是总部日汇总

典型使用场景

  • 全球日报:各门店按当地营业日出现当日销售
  • 促销同步:活动在各自时区的当地零点开始生效
  • 库存核对:盘点与库存快照按当地营业结束时刻截取
  • 考勤排班:门店员工排班以当地时间为准
  • 跨区对比:用同一业务日口径比较不同时区门店的表现

按门店时区折算业务日

按门店时区折算业务日
SELECT s.store_id,
       s.tz,
       to_date(from_utc_timestamp(s.sold_at, s.tz)) AS biz_date,   -- 业务日按门店时区折算
       sum(s.amt) AS amt
FROM stg_sales s
GROUP BY s.store_id, s.tz, to_date(from_utc_timestamp(s.sold_at, s.tz));   -- 门店时区从维表取,不在各任务里硬编码

折算口径与影响

折算基准表现典型问题
门店当地时区各店按当地日归集跨区汇总需说明业务日定义
总部时区全部门店同一日界东区晚班销售被归到前一天
UTC统一但与营业日不符欧美门店营业日跨两个 UTC 日
门店维里保存时区属性(tz),日期折算统一引用维度值;把时区写死在 ETL 代码里,一旦新开一个时区的门店就要改代码,且历史分区无法复现。
夏令时切换日当地会出现 23 小时或 25 小时,按固定小时数分层聚合的任务会漏算或多算;切换日的门店日报需要单独核对,不能只做常规自动化校验。

易错点

  • 用总部时区折算全部门店,东区晚场销售被归到前一天,日报整体错位
  • 时区硬编码在 ETL 里,新增时区门店要改代码,历史结果无法复现
  • 夏令时切换日未做复核,单日数据出现明显抖动而被当成业务异动
  • 报表未标注业务日基准,跨时区汇总时被误读为同一日界

数据来源与参考

  • 数仓实践:多时区业务日期
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌