Groupby和Subtract Spark Scala

时间:2019-02-13 07:35:37

标签: scala apache-spark apache-spark-sql

我有一个如下数据框:

group value
B      2
B      3
A      5
A      6

现在我需要根据组减去行。即2-3和5-6。转换后,它应该看起来像这样。

group value
B      -1
A      -1

我尝试了以下代码,但无法解决我的情况。

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

2 个答案:

答案 0 :(得分:1)

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

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

我猜您正在尝试按顺序减去两个相邻的值。

答案 1 :(得分:1)

这对我有用。

val df2 = df1.groupBy("Group").agg(first("Value").minus(last(col("Value"))))

您可以建议任何其他替代解决方案。预先感谢