【问题标题】:filter pyspark df by max date and date range按最大日期和日期范围过滤 pyspark df
【发布时间】: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)

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案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 获取所有行的最大日期。需要一个虚拟窗口(按虚拟列排序)来聚合所有行。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多