Apache spark 按最大日期和日期范围筛选pyspark df
我有一个df,它有一个date列,还有一些列我想首先从date列中获取最新的日期(max(date))。从该最大日期开始,我希望只将df过滤到那些日期在最大日期前七天的行(包括最大日期) 例如,如果最大日期为2021-01-20。然后,然后过滤器应该保留日期Apache spark 按最大日期和日期范围筛选pyspark df,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我有一个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 然后过滤掉剩下的日期。 我想根据
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)您可以添加一列最长日期,并进行筛选以获取最长日期后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')
请你解释一下'F.max('date')。over(Window.orderBy(F.lit(1))`这行代码到底在做什么。想要理解这里的概念。@ritzen101,它获取所有行的最大日期。需要一个虚拟窗口(按虚拟列排序)来聚合所有行。