Job将创建一个新列,其中的年份之间的差异类似于2002年数据-2001年数据
输入:
+----+-------------------+
|col1|col2 |
+----+-------------------+
|2001 |10. |
|2002 |15. |
|2003 |19. |
+----+-------------------+
输出:
+----+-------------------+
|col1|col2 |col3 |
+----+-------------------+
|2001 |10. | 0 |
|2002 |15. | 5 |
|2003 |19. | 4 |
+----+-------------------+
答案 0 :(得分:0)
尝试一下,
import org.apache.spark.sql.functions.{lag, _}
val yearCol = org.apache.spark.sql.expressions.Window.orderBy("col1")
result.withColumn("lag",(col("col2") - (lag(col("col2"), 1).over(yearCol)))).show
如果需要,请处理第一个位置的空值。