【发布时间】:2022-01-23 02:45:39
【问题描述】:
我有以下数据,final_column 是我想要得到的确切输出。我正在尝试做 flag 的累积总和,如果 flag 为 0 则想休息,然后将值设置为 0 如下数据
cola date flag final_column
a 2021-10-01 0 0
a 2021-10-02 1 1
a 2021-10-03 1 2
a 2021-10-04 0 0
a 2021-10-05 0 0
a 2021-10-06 0 0
a 2021-10-07 1 1
a 2021-10-08 1 2
a 2021-10-09 1 3
a 2021-10-10 0 0
b 2021-10-01 0 0
b 2021-10-02 1 1
b 2021-10-03 1 2
b 2021-10-04 0 0
b 2021-10-05 0 0
b 2021-10-06 1 1
b 2021-10-07 1 2
b 2021-10-08 1 3
b 2021-10-09 1 4
b 2021-10-10 0 0
我试过了
import org.apache.spark.sql.functions._
df.withColumn("final_column",expr("sum(flag) over(partition by cola order date asc)"))
我尝试在 sum 函数中添加 case when flag = 0 then 0 else 1 end 之类的条件,但不起作用。
【问题讨论】:
标签: scala apache-spark apache-spark-sql