我的问题是关于滑动窗口总结在bigquery .
我有一张如下表
run_id year_week value
001 201451 5
001 201452 8
001 201501 1
001 201505 5
003 201352 8
003 201401 1
003 201405 5
每周这一周的时间范围从01到53.例如,2014年的上一周是201452,但2015年的上周是201553 . 如果它让生活更轻松我只有5年,2013年,2014年,2015年, 2016年和2017年,只有2015年有几周达到53 .
现在,对于每次运行,我试图获得值的滑动窗口总和 . 每个 year_week
将假定当前run_id(例如 001
)的下一个值_ year_week
(包括其自身)的总和 . 例如,以下可以是当前表的输出
run_id year_week aggregate_sum
001 201451 5+8+1+0+0
001 201452 8+1+0+0+0
001 201501 1+0+0+0+5
001 201502 0+0+0+5+0
001 201503 0+0+5+0+0
001 201504 0+5+0+0+0
001 201505 5+0+0+0+0
003 201352 8+1+0+0+0
003 201401 1+0+0+0+5
003 201402 0+0+0+5+0
003 201403 0+0+5+0+0
003 201404 0+5+0+0+0
003 201405 5+0+0+0+0
为了解释发生的情况,201451的未来5周包括其自身将是201451,201452,201501,201502,201503 . 如果当前 run_id
表中有这些周的值,我们只需将它们相加,即5 8 1 0 0,因为 year_week
的相应值如果不在表中则为0 .
是否可以使用bigquery中的滑动窗口操作来实现?
1 回答
以下是BigQuery Standard SQL
您可以使用您问题中的虚拟数据进行上述测试/播放,如下所示
结果为
注意;这是为了
I only have 5 years, 2013, 2014, 2015, 2016 and 2017
,但可以在几周的CTE中轻松延长