首页 > 解决方案 > Groupby and Subtract Spark Scala

问题描述

I have a dataframe like below:

group value
B      2
B      3
A      5
A      6

now i need to subtract rows based on group. i.e 2-3 and 5-6. after transformation it should look like this.

group value
B      -1
A      -1

i tried below code but couldnt solve my case.

val df2 = df1.groupBy("Group").agg(first("Value")-second(col("Value")))

标签: scalaapache-sparkapache-spark-sql

解决方案


import org.apache.spark.sql.expressions.Window

val df2 = df1.select("group", "value", $"value" - lead("value").over(Window.partitionBy("group").orderBy("value")))

我猜你想用顺序减去两个相邻的值。


推荐阅读