正在加入2个数据帧pyspark



我是Pyspark的新手。我在下面的两张表中有这样的数据。我正在使用数据帧。

表1:

日期2021年4月1日2021年4月2日[/tr>2021年5月6日
Id 金额
1 £100
1 £50 2021年4月8日
2 £60
2 20英镑

IdDate上使用完全联接,然后使用lag窗口函数从前一个最接近的Date行获取StatusAmount的值:

from pyspark.sql import Window
import pyspark.sql.functions as F
w = Window.partitionBy("Id").orderBy(F.to_date("Date", "dd/MM/yyyy"))
joined_df = df1.join(df2, ["Id", "Date"], "full").withColumn(
"Status",
F.coalesce(F.col("Status"), F.lag("Status").over(w))
).withColumn(
"Amount",
F.coalesce(F.col("Amount"), F.lag("Amount").over(w))
)
joined_df.show()
#+---+----------+------+------+
#| Id|      Date|Amount|Status|
#+---+----------+------+------+
#|  1|01/04/2021|  £100|    S1|
#|  1|05/04/2021|  £100|    S2|
#|  1|08/04/2021|   £50|    S2|
#|  1|10/04/2021|   £50|    S3|
#|  2|02/04/2021|   £60|    S1|
#|  2|10/04/2021|   £60|    S2|
#|  2|06/05/2021|   £20|    S2|
#+---+----------+------+------+

最新更新