在数据帧上应用过滤器时出错 - PySpark

用户16798185

我需要从 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章