我需要从 run_date 中减去 10days 并对数据帧应用过滤器。但是在运行下面的代码时出现错误。- 错误:AnalysisException:“无法解析' 2020-01-10
'给定的输入列:[cust,activity_day];;\n'Filter (to_date(activity_day#1341, Some(YYYY-MM-DD)) > date_sub(cast(to_date('2020) -01-10, Some(YYYY-MM-DD)) 作为日期), 10))\n+- LogicalRDD [cust#1340L, activity_day#1341]\n"。
数据:
df = spark.createDataFrame(
[
(123,"2020-01-01"),
(123,"2020-01-01"),
(123,"2019-01-01")
],
("cust", "activity_day")
)
代码:我需要从 run_date 中减去 10 天并对数据框应用过滤器
from pyspark.sql.functions import *
subtract_days=10
run_date = to_date("2020-01-10","YYYY-MM-DD").cast("date")
df.filter(to_date(df["activity_day"],"YYYY-MM-DD") > date_sub(run_date,subtract_days)).show()
有人可以帮忙吗?
to_date 函数仅适用于列属性。因此,您需要使用lit
函数创建一列 run_date 文字值
from pyspark.sql.functions import *
subtract_days=10
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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句