合并不同十进制数据类型的databricks sql

xwmevbvl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(404)

我有一个databricks sql搜索,结果是一个数据类型 decimal(18,0) 我想将此搜索的结果附加到现有表中( df.write.format("delta").mode("append").save("a_path") )但不能,因为它的数据类型为 decimal(38,18) 当我尝试附加时,得到的错误是: AnalysisException: Failed to merge fields 'id' and 'id'. Failed to merge decimal types with incompatible precision 38 and 18 & scale 18 and 0; 有办法吗?
我试图将搜索结果转换为十进制(38,18) select cast(id decimal(38,18))... 但这不起作用
有什么建议吗

ndasle7k

ndasle7k1#

作为解决方法,我在pyspark中将sql搜索列转换为decimal类型,然后继续合并:

query="""select * from ..."""

df=spark.sql(query)
df=df.withColumn("id",df["id"].cast(DecimalType(38,18)))
df.write.format("delta").mode("append").save("a_path")

相关问题