给出如下表格:
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
我正在寻找一种有效的方法来计算发生在 x
当前行(当前行包含在总和中)之后的天数,按客户端id分区。
如果 x=6
然后输出表将导致:
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
关注点:
我不想添加所有丢失的日期,然后执行滑动窗口计数 x
因为我的表已经非常大了。
我用 Impala 和 range between interval 'x' days following and current row
不支持。
1条答案
按热度按时间hgb9j2n61#
通用解决方案对于多个时段来说有点麻烦,但是您可以使用多个cte来支持这一点。这样做的目的是根据他们进出的时间来“取消”计数,然后使用一个累积的总和。
所以: