【发布时间】:2020-11-25 23:40:44
【问题描述】:
我正在使用左连接连接两个数据框。 左表中的行可能不匹配,所以我尝试使用合并函数设置默认值
import pyspark.sql.functions as F
joined = t1\
.join(t2, on="id", how='left')\
.select(t1["*"],
F.coalesce(t2.date, F.to_date('2019-01-01')))
我收到以下错误
pyspark.sql.utils.AnalysisException: 'cannot resolve \'CAST(t1.`2019-01-01` AS DATE)\' due to data type mismatch: cannot cast decimal(38,3) to date;;\n\...
我已经确认 t2.date 实际上是一个日期类型。其他 t1 列是错误中看到的十进制数据类型,因此在我看来,它正在尝试将每一列都转换为此日期类型:S
任何帮助将不胜感激
【问题讨论】:
-
'2019-01-01'在您的代码中被视为列名,将其更改为F.lit('2019-01-01')。
标签: apache-spark pyspark apache-spark-sql