按最大日期和日期范围过滤 pyspark df
Posted
技术标签:
【中文标题】按最大日期和日期范围过滤 pyspark df【英文标题】:filter pyspark df by max date and date range 【发布时间】:2021-04-06 18:59:03 【问题描述】:我有一个 df,它有一个日期列,还有一些列我想首先从日期列中获取最新的日期(最大(日期))。并且从那个最大日期开始,我想将 df 过滤到仅具有 最大日期前 7 天(包括最大日期)的那些行。
例如,如果最大日期是 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)
【问题讨论】:
【参考方案1】:您可以添加最大日期的列,并进行过滤以获取最大日期后 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 获取所有行的最大日期。需要一个虚拟窗口(按虚拟列排序)来聚合所有行。以上是关于按最大日期和日期范围过滤 pyspark df的主要内容,如果未能解决你的问题,请参考以下文章