DataBricks Pyspark DATEADD

whhtz7ly  于 12个月前  发布在  Spark
关注(0)|答案(2)|浏览(186)

我正试图过滤出从当前日期到过去3年的数据,并试图将其用于Pyspark框架。
下面的sql查询需要转换成Pyspark的框架格式
date >= dateadd(month,-4,current_date)
如何在Pyspark框架格式中编写SQL

v1uwarro

v1uwarro1#

让我们创建一个用于测试的框架:

from datetime import date,timedelta
from dateutil.relativedelta import relativedelta
start_date = date(2023,1,1)
dates_list = []
for i in range(0,12):
    curr_date = start_date + relativedelta(months=i)
    print(curr_date)
    dates_list.append((i+1,curr_date))
columns =["id","date"]
dates_df = spark.createDataFrame(dates_list,columns)

字符串
这将创建一个包含12行的字符串,每行对应2023年一个月的1天:

display(dates_df)


的数据
现在让我们将这个新的框架过滤成一个新的框架:

filter_dates_df = dates_df.where("date>=dateadd(month,-4,current_date)")


结果是:

display(filter_dates_df)


mqxuamgl

mqxuamgl2#

你需要结合使用filter和add_months函数,像这样:

from pyspark.sql import functions as F

df = df.filter(F.col("date") >= F.add_months(F.current_date(), -4))

字符串

相关问题