我正试图过滤出从当前日期到过去3年的数据,并试图将其用于Pyspark框架。下面的sql查询需要转换成Pyspark的框架格式date >= dateadd(month,-4,current_date)如何在Pyspark框架格式中编写SQL
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)
的
mqxuamgl2#
你需要结合使用filter和add_months函数,像这样:
from pyspark.sql import functions as F df = df.filter(F.col("date") >= F.add_months(F.current_date(), -4))
字符串
2条答案
按热度按时间v1uwarro1#
让我们创建一个用于测试的框架:
字符串
这将创建一个包含12行的字符串,每行对应2023年一个月的1天:
型
的数据
现在让我们将这个新的框架过滤成一个新的框架:
型
结果是:
型
的
mqxuamgl2#
你需要结合使用filter和add_months函数,像这样:
字符串