给出如下表格:
client_id date connections
---------------------------------------
121438297 2018-01-03 0
121438297 2018-01-08 1
121438297 2018-01-10 3
121438297 2018-01-12 1
121438297 2018-01-19 7
363863811 2018-01-18 0
363863811 2018-01-30 5
363863811 2018-02-01 4
363863811 2018-02-10 0
我正在寻找一种有效的方法,将当前行(当前行包含在sum中)之后6天内发生的连接数相加,并按客户端的\u id进行分区,这将导致:
client_id date connections connections_within_6_days
---------------------------------------------------------------------
121438297 2018-01-03 0 1
121438297 2018-01-08 1 5
121438297 2018-01-10 3 4
121438297 2018-01-12 1 1
121438297 2018-01-19 7 7
363863811 2018-01-18 0 0
363863811 2018-01-30 5 9
363863811 2018-02-01 4 4
363863811 2018-02-10 0 0
问题:
我不想添加所有丢失的日期,然后执行一个滑动窗口来计算下面的7行,因为我的表已经非常大了。
我用 Impala 和 range between interval '7' days following and current row
不支持。
编辑:我正在寻找一个通用的答案,考虑到这一事实,我将需要改变窗口大小为更大的数字(例如30天以上)
1条答案
按热度按时间zzwlnbp81#
这回答了问题的原始版本。
Impala 并不完全支持
range between
. 不幸的是,这并没有留下很多选择。一是使用lag()
有很多明确的逻辑:不幸的是,这并不能很好地概括。如果你想要一个大范围的天数,你可能想问另一个问题。