当我执行下面的代码行时,我得到一个错误:
deltaTarget.alias('target').merge(df.alias('source'), mergeStatement).whenMatchedUpdateAll().whenNotMatchedInsertAll().execute()
字符串
错误如下:
分析异常:无法解析UPDATE子句中给定列{List of target columns}的new_column。“new_column”确实不在目标增量表的模式中,但根据文档,这应该只是更新增量表的现有模式并添加列。
我还使用以下命令启用autoMerge:
spark.conf.set("spark.databricks.delta.schema.autoMerge.enabled ","true")
型
我不确定到底是什么原因导致了这个错误,因为在过去,我能够用这些精确的代码自动进化增量表的模式。
是不是有什么我忽略了?
5条答案
按热度按时间mpbci0fu1#
必须删除
spark.conf.set
中..autoMerge.enabled
之后的空格--> It's
字符串
,不是
型
polkgigr2#
我也有同样的问题,但我发现在delta lake docs中,它可能不太支持upsertAll()和insertAll()的部分列;所以我选择了upsertExpr()和insertExpr(),其中一个大map包含所有列。
delta lake merge : Schema validation
5gfr0r5j3#
如果我没有弄错的话,您需要在MERGE操作中使用insertAll或updateAll选项
pinkon5k4#
spark.conf.set(“spark.databricks.delta.schema.autoMerge.enabled”,“true”)
确保在上面一行中的“enabled”之后没有空格。
然后你可以使用pass a spark sql:
字符串
pnwntuvh5#
字符串