首页/数据/数仓建模速查/时间周期限定的实现方式
指标体系63 条

时间周期限定的实现方式

滚动窗口(近 7 日)与自然周期(本周/MTD)语义不同:滚动窗口随统计日移动,自然周期按月历切分;实现与对账都要分开处理。

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

两种时间周期

指标的时间限定分两类:滚动窗口(近 7 日、近 30 日)随统计日移动,每天的窗口都不同;自然周期(本周、本月、MTD)按日历切分,同一周期内所有日期共享同一个起点。两者语义不同,实现与对账方法都要分开处理,不能都叫「近 7 天」。

基本信息

滚动窗口统计日往前推 N 天,需明确是否含首尾
自然周期按日历切分,例如月初到统计日
常用函数date_sub、date_trunc、月历维表
边界约定起止日包含与否必须写进口径文档
对账要点窗口类型不同时两边数字不可直接比较

典型使用场景

  • 移动平均:近 7 日均值用于平滑日常波动
  • 累计指标:MTD、QTD、YTD 用于财务与经营口径
  • 周报月报:自然周与自然月按日历切分,保证各期可比
  • 留存与复购:以注册日或首单日为起点的滚动窗口
  • 边界验证:月末、年初、闰年这些日期要单独测试

两类窗口的实现

两类窗口的实现
-- 滚动 7 日:含统计日在内的 7 天
SELECT sum(pay_amt) AS pay_7d
FROM fact_pay
WHERE dt BETWEEN date_sub('2026-10-11', 6) AND '2026-10-11';

-- 自然月 MTD:从月初累计到统计日
SELECT sum(pay_amt) AS pay_mtd
FROM fact_pay
WHERE dt BETWEEN '2026-10-01' AND '2026-10-11';

窗口类型对照

维度滚动窗口自然周期
起点统计日减 N 天日历固定起点
跨日变化每天整体移动周期内固定,跨期重置
典型指标近 7 日金额、30 日活跃MTD、QTD、YTD、周报月报
常见误用把本周当成近 7 日把滚动值填进自然周期报表
月末与年初的边界要单独测试:短月份会让「近 30 日」与「本月」的差异急剧放大,平时看不出的口径问题这时才暴露出来。
起止日的包含规则要写清:含两端的 7 天窗口与只含起点的窗口只差一天,但在累计口径里会放大成整段系统性偏差。

易错点

  • 两种周期混用近 7 天与本月两种叫法:对账时数字对不上,各说各有理
  • 边界日包含与否未定义:跨部门口径差一天,需要逐条核对才能发现
  • 用字符串直接比较日期范围:格式不一致时过滤失效,数据悄悄漏掉
  • 自然月用固定 30 天代替:不同月长的可比性被破坏
  • 窗口参数硬编码在 SQL 里:调整周期要改代码并全量回归,容易漏改
  • 窗口口径变更不通知下游:同一张报表在不同日期用不同窗口取数,趋势线上出现无法解释的跳变

数据来源与参考

  • 指标实践:时间窗口口径
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌