将to_date列与pyspark中的单个值进行比较

将to_date列与pyspark中的单个值进行比较,pyspark,Pyspark,我在pyspark中有一个数据帧,如下所示: df=spark.table('db.table')) .选择(F.col('key')。别名('key_a'), F.截止日期('move_out_date','yyyyymmdd')。别名('move_out_date')) 现在,我想将移出日期列与日期20151231进行比较。但是下面的代码不起作用 从pyspark.sql导入函数为F df.filter(F.datediff(F.col('move_out_date')、F.to_date

我在pyspark中有一个数据帧,如下所示:

df=spark.table('db.table'))
.选择(F.col('key')。别名('key_a'),
F.截止日期('move_out_date','yyyyymmdd')。别名('move_out_date'))
现在,我想将
移出日期
列与日期
20151231
进行比较。但是下面的代码不起作用

从pyspark.sql导入函数为F
df.filter(F.datediff(F.col('move_out_date')、F.to_date('20151231','yyyyMMdd'))>0)
如何与只有一个值的日期列进行比较?

这是因为
to\u date()
需要一个列作为参数,而您正在传递一个字符串。要解决此问题,请添加
lit()
作为参数和要比较的日期

导入pyspark.sql.f函数
从pyspark导入行
从pyspark.shell导入spark
df=spark.createDataFrame([
行(key=1,date='20151231'),
行(键=2,日期=20160101'),
行(键=3,日期=20160102')
])
df=df.选择(f.col('key')。别名('key_a'),
f、 截止日期(f.col('date'),'yyyyymmdd')。别名('move_out_date'))
df=df.filter(f.datediff(f.col('move_out_date')、f.to_date(f.lit('20151231')、format='yyyyymmdd'))>0)
df.show()
输出:

+-----+-------------+
|key_a|move_out_date|
+-----+-------------+
|    2|   2016-01-01|
|    3|   2016-01-02|
+-----+-------------+

从代码差异看,您需要大于日期的记录
df.filter(df.move_out_date>f.to_date(f.lit('20151231'),'yyyyymmdd'))