两种时间周期
指标的时间限定分两类:滚动窗口(近 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 天窗口与只含起点的窗口只差一天,但在累计口径里会放大成整段系统性偏差。