gpt4 book ai didi

scala - Spark sql窗口功能滞后

转载 作者:行者123 更新时间:2023-12-03 15:20:06 25 4
gpt4 key购买 nike

我正在寻找Spark SQL Scala中的Spark DataFrame的窗口幻灯片功能。

我有一个带有Col1,Col2,Col3,date,volume和new_col列的数据框。

Col1    Col2    Col3    date     volume new_col
201601 100.5
201602 120.6 100.5
201603 450.2 120.6
201604 200.7 450.2
201605 121.4 200.7`


现在,我想添加一个名称为(new_col)的新列,并向下滑动一行,如上所示。

我尝试了下面的选项来使用窗口功能。

val windSldBrdrxNrx_df = df.withColumn("Prev_brand_rx", lag("Prev_brand_rx",1))


谁能帮我做到这一点。

最佳答案

您做得正确,您错过的只是over(window expression)上的lag

val df = sc.parallelize(Seq((201601, 100.5),
(201602, 120.6),
(201603, 450.2),
(201604, 200.7),
(201605, 121.4))).toDF("date", "volume")

val w = org.apache.spark.sql.expressions.Window.orderBy("date")

import org.apache.spark.sql.functions.lag

val leadDf = df.withColumn("new_col", lag("volume", 1, 0).over(w))

leadDf.show()

+------+------+-------+
| date|volume|new_col|
+------+------+-------+
|201601| 100.5| 0.0|
|201602| 120.6| 100.5|
|201603| 450.2| 120.6|
|201604| 200.7| 450.2|
|201605| 121.4| 200.7|
+------+------+-------+


该代码在Spark Shell 2.0.2上运行

关于scala - Spark sql窗口功能滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41158115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com