You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MERGE INTO更新Azure Databricks表时出现语法错误

问题分析与解决

核心问题1:临时视图名称不匹配

你创建的临时视图名称是myTemp,但MERGE语句里引用的是temp_table,Spark会找不到对应表,这是第一个错误点。

核心问题2:MERGE INTO语法错误

在Spark Delta Lake的MERGE INTO语法中,WHEN MATCHED分支仅支持UPDATE操作,INSERT操作只能用于WHEN NOT MATCHED分支(用于插入新行)。你的需求是更新匹配id的现有行的列值,必须用UPDATE替代INSERT。

修正后的代码

# 确保临时视图名称正确
spark_df = spark.createDataFrame(df)
spark_df.createOrReplaceTempView("myTemp")

# 修正MERGE INTO语句
spark.sql(
    f"""MERGE INTO prp_b901_group_work.test_cg_policies_multiple_delta AS m
USING myTemp AS s
ON m.id = s.id
WHEN MATCHED THEN UPDATE SET 
    m.premium_usd = s.premium_usd,
    m.limit_usd = s.limit_usd"""
)

补充说明

如果需要同时处理匹配行更新、不匹配行插入的场景,可以扩展语句:

MERGE INTO prp_b901_group_work.test_cg_policies_multiple_delta AS m
USING myTemp AS s
ON m.id = s.id
WHEN MATCHED THEN UPDATE SET 
    m.premium_usd = s.premium_usd,
    m.limit_usd = s.limit_usd
WHEN NOT MATCHED THEN INSERT (id, premium_usd, limit_usd) 
VALUES (s.id, s.premium_usd, s.limit_usd)

内容的提问来源于stack exchange,提问作者pymat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:45:07