我想根据最近3天的数据计算每个客户id和日期的移动平均值。为了计算5月4日的移动平均数,我们需要计算5月1日至3日的平均购买金额
我想使用一些窗口功能,但我不太清楚如何计算。平均值基于过去3天为一个给定的日期和客户id
Spark测向
date customer_id purchase_sum
2020-05-01 1 200
2020-05-02 1 243
2020-05-03 1 232
2020-05-04 1 253
2020-05-05 1 221
2020-05-06 1 212
2020-05-07 1 233
2020-05-01 2 323
2020-05-02 2 342
2020-05-03 2 342
2020-05-04 2 311
2020-05-05 2 344
2020-05-06 2 321
2020-05-07 2 345
输出Spark测向
date customer_id purchase_sum L3D_moving_avg
2020-05-04 1 253 225
2020-05-05 1 221 243
2020-05-06 1 212 235
2020-05-07 1 233 228
2020-05-04 2 311 336
2020-05-05 2 344 332
2020-05-06 2 321 332
2020-05-07 2 345 325
1条答案
按热度按时间fcg9iug31#
使用
rangeBetween(start, end)
在窗口中创建自定义窗框边界的步骤window
功能。这个start
以及end
相对于当前行。你的情况应该是这样的
rangeBetween(-3, -1)
. 这是从现在开始的3天date
允许你计算移动平均值。