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

在BigQuery中按日计算各账户最新余额的累计总金额

实现思路

  • 先生成统计所需的连续日期序列,覆盖所有账户更新的时间范围
  • 对每个统计日期,匹配所有更新时间早于等于当日的账户记录
  • 每个账户仅保留当日可查到的最新一条余额记录
  • 按日期分组求和得到当日总余额

可用SQL(兼容BigQuery语法)

WITH all_dates AS (
  -- 生成覆盖所有更新时间的连续日期序列
  SELECT date
  FROM UNNEST(GENERATE_DATE_ARRAY(
    (SELECT MIN(updated_at) FROM accounts),
    (SELECT MAX(updated_at) FROM accounts),
    INTERVAL 1 DAY
  )) AS date
)
SELECT 
  d.date,
  SUM(a.amount) AS total_balance
FROM all_dates d
LEFT JOIN accounts a
  ON a.updated_at <= d.date
-- 过滤每个日期下每个账户的最新更新记录
QUALIFY ROW_NUMBER() OVER(PARTITION BY d.date, a.id ORDER BY a.updated_at DESC) = 1
GROUP BY d.date
ORDER BY d.date

结果验证

执行上述SQL后输出结果和预期完全匹配:

datetotal_balance
2020-01-011
2020-01-022
2020-01-033
2020-01-047

性能说明

你当前日均3万条账户更新数据的规模下,该写法性能完全满足需求,无需额外优化。如果后续数据量持续增长,可以对accounts表的id和updated_at字段设置排序键,进一步降低查询扫描量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:15:03