按最大日期和日期范围过滤pyspark df

iyfamqjs  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(913)

我有一个df,它有一个date列,还有一些列我想首先从date列得到最新的日期(max(date))。从那个最大日期开始,我想过滤df,只过滤那些在最大日期(包括最大日期)之前的最后七天有日期的行。
例如,如果最大日期为2021-01-20。然后,过滤器应该保留

2021-01-20(including max date)

2021-01-19

2021-01-18

2021-01-17

2021-01-16

2021-01-15

2021-01-14

过滤掉剩下的日期。我想根据这个日期范围过滤enire df。我正在使用spark 3.0(pyspark)

xxhby3vn

xxhby3vn1#

您可以添加一列最长日期,并进行筛选以获取最长日期后7天内的行。

from pyspark.sql import functions as F, Window

df2 = df.withColumn(
    'maxdate', 
    F.max('date').over(Window.orderBy(F.lit(1)))
).filter('date >= maxdate - interval 7 days').drop('maxdate')

相关问题