Я смотрю на функцию слайда окна для Spark DataFrame в Spark SQL.
У меня есть кадр данных со столбцами id
, month
и volume
.
id month volume new_col
1 201601 100 0
1 201602 120 100
1 201603 450 220
1 201604 200 670
1 201605 121 870
Теперь я хочу добавить новый столбец с именем new_col
, значение new_col
является суммой volume
и new_col
перед текущей строкой, как показано выше.Значение первой строки new_col
будет равно нулю.
Я опробовал ниже вариант использования оконной функции lag
с помощью PySpark.Но я обнаружил, что столбец new_col
будет использоваться рекурсивно.Способ только с помощью функции lag
не может сделать это:
window = Window.partitionBy(F.col('id')).orderBy(F.col('month').asc())
df.withColumn('new_col', F.lag(col('volume'), 1).over(window) + F.lag(col('new_col'), 1).over(window))
Есть ли способ динамически отстать от new_col
с помощью оконных функций?Или есть другие хорошие решения?