首页 > 解决方案 > 如何使用 pyspark 从每日数据中计算 6 个月移动平均值

问题描述

我正在尝试计算 pyspark 过去六个月的移动平均价格。

目前我的表有 6 个月的滞后日期。

id  dates         lagged_6month  price
1   2017-06-02    2016-12-02     14.8
1   2017-08-09    2017-02-09     16.65
2   2017-08-16    2017-02-16     16
2   2018-05-14    2017-11-14     21.05
3   2017-09-01    2017-03-01     16.75

期望的结果

id  dates       avg6mprice
 1   2017-06-02  20.6
 1   2017-08-09  21.5
 2   2017-08-16  16.25
 2   2018-05-14  25.05
 3   2017-09-01  17.75

示例代码

from pyspark.sql.functions import col
from pyspark.sql import functions as F
df = sqlContext.table("price_table")
w = Window.partitionBy([col('id')]).rangeBetween(col('dates'),col('lagged_6month'))

RangeBetween 似乎不接受列作为窗口函数中的参数。

标签: apache-sparkpyspark

解决方案


推荐阅读