首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将to_date列与pyspark中的单个值进行比较

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

Stack Overflow用户
提问于 2019-08-31 01:05:26
回答 1查看 759关注 0票数 1

我有一个pyspark格式的dataframe,读起来如下:

代码语言:javascript
复制
df = spark.table('db.table')
            .select(F.col('key').alias('key_a'),
                    F.to_date('move_out_date', 'yyyyMMdd').alias('move_out_date'))

现在,我想将move_out_date列与20151231日期进行比较。但是下面的代码不能正常工作

代码语言:javascript
复制
from pyspark.sql import functions as F

df.filter(F.datediff(F.col('move_out_date'), F.to_date('20151231', 'yyyyMMdd')) > 0)

如何将to_date列与单个值进行比较?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-31 01:46:29

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

代码语言:javascript
复制
import pyspark.sql.functions as f
from pyspark import Row
from pyspark.shell import spark

df = spark.createDataFrame([
    Row(key=1, date='20151231'),
    Row(key=2, date='20160101'),
    Row(key=3, date='20160102')
])

df = df.select(f.col('key').alias('key_a'),
               f.to_date(f.col('date'), 'yyyyMMdd').alias('move_out_date'))

df = df.filter(f.datediff(f.col('move_out_date'), f.to_date(f.lit('20151231'), format='yyyyMMdd')) > 0)

df.show()

输出:

代码语言:javascript
复制
+-----+-------------+
|key_a|move_out_date|
+-----+-------------+
|    2|   2016-01-01|
|    3|   2016-01-02|
+-----+-------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57730715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档