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

PySpark对DataFrame应用filter过滤时报AnalysisException错误求助

问题原因
  • 常量日期未用lit()包裹:PySpark内置SQL函数的参数如果直接传入字符串,默认会被识别为DataFrame的列名而非字面量。你代码内to_date("2020-01-10","YYYY-MM-DD")的第一个参数是固定日期字符串,没有用lit()函数包裹,导致Spark尝试在你的DataFrame中查找名为2020-01-10的列,触发列不存在的报错。
  • 日期格式符使用错误:格式串中大写DD代表年积日(即一年中的第N天),匹配月内天数需要使用小写dd,错误的格式符会导致后续日期解析、计算结果不符合预期。另外格式串中年份建议用小写yyyy(代表标准日历年),大写YYYY是基于周计算的年份,普通日期场景下使用会出现边界问题。
修正后可运行代码
from pyspark.sql.functions import *

subtract_days=10
# 用lit包裹常量字符串,修正日期格式符,to_date返回结果已经是date类型,无需额外cast
run_date = to_date(lit("2020-01-10"),"yyyy-MM-dd")
df.filter(to_date(df["activity_day"],"yyyy-MM-dd") > date_sub(run_date,subtract_days)).show()
运行输出结果
+----+------------+
|cust|activity_day|
+----+------------+
| 123|  2020-01-01|
| 123|  2020-01-01|
+----+------------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:48:02