Как отфильтровать данные с начала текущего года и трех предыдущих лет?

#date #apache-spark #datetime #pyspark #apache-spark-sql

#Дата #apache-spark #дата и время #pyspark #apache-spark-sql

Вопрос:

В настоящее время у меня есть:

 last3years_dates = ('2020-01-01 08:56:00', '2020-10-29 09:18:00')
df_NIRS = df_NIRS.where(F.col('RaisedDate').between(*last3years_dates))
 

‘2020-01-01 08:56:00’ и ‘2020-10-29 09:18:00’ являются заполнителями. Как можно отфильтровать данные с начала этого года, то есть «2020-01-01 00:00:00» до 3 предыдущих лет «2017-01-01 00:00:00» без их жесткого кодирования. Возможно, использовать current_timestamp() ?

Ответ №1:

 df.filter(
    F.col('RaisedDate').between(
        F.to_date(
            (F.year(F.current_timestamp()) - F.lit(3)).cast('string'), 'yyyy'
        ),
        F.to_date(
            F.year(F.current_timestamp()).cast('string'), 'yyyy'
        )
    )
)
 

Ответ №2:

Попробуйте использовать приведенный ниже код.

 df
.filter("dtCol between (current_timestamp - INTERVAL   3 YEARS) AND date_trunc('Year',current_timestamp)")
.show()