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

在Azure Databricks中读取启用CDF的Delta表时Spark SQL报错求助

问题解决:Azure Databricks中table_changes函数解析表名失败

错误原因

你的代码生成的SQL语句里,table_changes函数的表名参数没有被引号包裹,Spark将db.t1识别为未解析的列/参数,而非合法的表标识符。实际生成的SQL是:

SELECT MAX(_commit_version) as max_version FROM table_changes(db.t1,0)

db.t1缺少引号,不符合table_changes函数对表名参数的格式要求(需为字符串形式)。

修正方案

有两种可行的修正方式:

方式1:给变量添加引号

直接在表名变量中包含单引号,确保插入SQL后参数为合法字符串:

tab = "'db.t1'"
df = spark.sql(f"SELECT MAX(_commit_version) as max_version FROM table_changes({tab},0)")
df.first()["max_version"]

方式2:在f-string中包裹变量

格式化SQL时,给tab变量外层加上单引号,保证生成的SQL参数格式正确:

tab = 'db.t1'
df = spark.sql(f"SELECT MAX(_commit_version) as max_version FROM table_changes('{tab}',0)")
df.first()["max_version"]

验证说明

修正后生成的SQL会变为:

SELECT MAX(_commit_version) as max_version FROM table_changes('db.t1',0)

此时table_changes能正确识别'db.t1'为目标表,可正常查询变更历史中的最大提交版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:10:06