You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中实现WTD计算及周度聚合差值统计

日度数据转周度聚合+WTD计算实现方案

以下实现默认原表名为daily_user_data,周度统计默认以周一为每周起始日,如果你的业务规则以周日为周起始,调整日期截断函数的偏移参数即可。

核心实现逻辑

  • 周粒度聚合:先给每条日度数据映射对应周的标识字段calendar_week(取当周第一天的日期值),再按周分组计算当周user_id合计值
  • 相邻周差值计算:用窗口函数错位取上一周的合计值,和本周值做差得到周环比变动
  • WTD(周迄今)计算:不需要等整周结束,取当周起始日到指定统计截止日的累计值即可

可直接运行的SQL代码

-- 1. 先完成周度基础聚合
WITH weekly_base AS (
    SELECT
        -- 按你用的SQL引擎选对应周起始日期计算逻辑:
        -- PostgreSQL/Redshift: DATE_TRUNC('week', calendar_date)::DATE
        -- MySQL: DATE_SUB(calendar_date, INTERVAL WEEKDAY(calendar_date) DAY)
        -- Hive/SparkSQL: date_sub(calendar_date, pmod(datediff(calendar_date, '1900-01-01'), 7))
        -- BigQuery: DATE_TRUNC(calendar_date, WEEK(MONDAY))
        DATE_TRUNC('week', calendar_date)::DATE AS calendar_week,
        -- 如果是统计活跃用户数,把SUM换成COUNT(DISTINCT user_id)
        SUM(user_id) AS weekly_user_sum
    FROM daily_user_data
    GROUP BY calendar_week
),
-- 2. 计算相邻周差值
weekly_with_diff AS (
    SELECT
        calendar_week,
        weekly_user_sum,
        -- 第一周没有上一周数据,差值默认返回NULL
        weekly_user_sum - LAG(weekly_user_sum, 1) OVER (ORDER BY calendar_week) AS wow_diff
    FROM weekly_base
)
-- 输出周度聚合结果
SELECT * FROM weekly_with_diff ORDER BY calendar_week;

WTD指标单独计算逻辑

如果需要动态取任意统计日的周迄今累计值,用下面的代码即可,只需要替换统计日期参数:

-- 替换成你要统计的截止日期即可
WITH param AS (SELECT '2024-06-18'::DATE AS stat_date),
daily_tag AS (
    SELECT
        calendar_date,
        user_id,
        DATE_TRUNC('week', calendar_date)::DATE AS calendar_week
    FROM daily_user_data, param
    -- 只取截止统计日之前、且和统计日同属一周的数据
    WHERE calendar_date BETWEEN DATE_TRUNC('week', (SELECT stat_date FROM param))::DATE 
        AND (SELECT stat_date FROM param)
)
SELECT
    calendar_week,
    (SELECT stat_date FROM param) AS stat_date,
    SUM(user_id) AS wtd_user_sum
FROM daily_tag
GROUP BY calendar_week, stat_date;

注意点

如果业务侧周度定义是周日为一周第一天,所有DATE_TRUNC相关的周截断逻辑要对应调整成周日起始的参数,避免周度数据对齐出错。
如果user_id字段是字符串类型的用户唯一标识,所有SUM(user_id)的逻辑都要替换成COUNT(DISTINCT user_id),否则会报类型错误或者统计值完全失真。

内容的提问来源于stack exchange,提问作者pologe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:30:53