Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 按最大日期和日期范围筛选pyspark df_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 按最大日期和日期范围筛选pyspark df

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 然后过滤掉剩下的日期。 我想根据

我有一个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)

您可以添加一列最长日期,并进行筛选以获取最长日期后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,它获取所有行的最大日期。需要一个虚拟窗口(按虚拟列排序)来聚合所有行。