You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark DataFrame日期列转换后输出为null问题解决求助

问题根因
  • unix_timestamp方法传入的日期格式与原数据格式不匹配:原DATE_Landing的日期部分为年-月-日结构,你传入的格式为dd-MM-yyyy(日-月-年),无法匹配所以解析结果为null。
  • 逻辑冗余且列覆盖错误:你在SQL查询中已经通过replace得到了截断后的日期字符串,但后续的withColumn操作直接覆盖了DATE列,且仍使用未处理的原始DATE_Landing字段做解析,直接导致结果异常。
解决方法

Spark原生支持to_date函数直接从带时分秒的时间字段中提取日期,不需要手动做字符串替换,两种实现方案如下:

方案1:纯Spark SQL实现(更简洁)

final_query_RAW = spark.sql("""
    select 
        sum(salary) as salary, 
        to_date(DATE_Landing) as DATE 
    from empytable 
    group by DATE_Landing
""")

方案2:DataFrame API实现

final_query_RAW = spark.sql("select sum(salary) as salary, DATE_Landing from empytable group by DATE_Landing") \
    .withColumn('DATE', to_date(col('DATE_Landing')))

如果你的Spark版本较低无法自动识别格式,可以显式指定格式字符串:

.withColumn('DATE', to_date(col('DATE_Landing'), 'yyyy-MM-dd HH:mm:ss.S'))

内容的提问来源于stack exchange,提问作者hari_agg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:39:03