【问题标题】:specifying a string to date datatype using pyspark使用 pyspark 指定字符串到日期数据类型
【发布时间】:2021-02-14 02:18:51
【问题描述】:

我想过滤按日期划分的镶木地板。 当我应用过滤器时

.filter(col('DATE')>= '2020-08-01')

在进行过滤时,它会将值2020-08-01 转换为字符串,如物理计划中所示。我读到这效率不高,会导致整个文件扫描。

PartitionFilters: [isnotnull(DATE#5535), (cast(DATE#5535 as string) >= 2020-08-01)]

如何在过滤子句中将string 转换为date?互联网上的所有示例都提到使用to_date,但这仅适用于列。 这是可能的,甚至值得吗? 请指教。 谢谢你

【问题讨论】:

    标签: filter pyspark partition


    【解决方案1】:

    试试这个 -

    import pyspark.sql.functions as F
    .filter(F.expr(" `Date` >= to_date('2020-08-01','yyyy-MM-dd' )"))
    

    【讨论】:

    • 我试过了,但出现以下错误:\nextraneous input '<EOF>' expecting {')', ','}(line 1, pos 45)\n\n== SQL ==\n DATE` >= to_date('2020-08-01','yyyy-MM-dd' \n------ ---------------------------------------^^^\n"`
    • @thentangler 在子句末尾缺少)。已修复 IMO。
    • 谢谢,双引号实际上是在第一个右括号之后。以下对我有用:f.expr(" `DATE` >= to_date('2020-08-01', 'yyyy-MM-dd' ) ") )
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多