BigQuery中实现最小窗口为3的滑动窗口最大值计算方法
BigQuery 实现3天滚动最大值方案
你可以直接通过BigQuery的窗口函数实现和Pandas df['total_items'].rolling(3, min_periods=3).max() 完全等效的计算,完整查询语句如下:
SELECT day, MAX(total_items) OVER ( ORDER BY day ASC ROWS BETWEEN 2 PRECEDING AND CURRENT ROW ) AS min_3_days_total_items FROM items_table ORDER BY day ASC
逻辑说明
- 窗口的
ORDER BY day ASC规则和你原始数据的排序逻辑保持一致,保证滚动窗口取数顺序正确 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW定义了窗口范围:包含当前行,以及当前行往前的2行,窗口固定为3行,对应Pandas的rolling(3)参数- 当窗口内有效行数不足3时(比如第1、2行没有足够的前序行),MAX计算会自动返回NULL,完全匹配
min_periods=3的要求 - 执行该语句得到的输出和你给出的预期结果完全一致
内容的提问来源于stack exchange,提问作者gidutz
相关产品推荐
相关产品推荐

