Delta SQL执行时间旅行语句报mismatched input ‘AS’错误求正确语法
问题原因
你使用的VERSION AS OF直接跟随Delta路径的语法,仅在Delta 2.0及更高版本中支持,你当前的Delta 1.0.0 + Spark 3.1.2环境不兼容该写法。你已配置的Spark参数符合Delta SQL功能的启用要求,无需调整配置,仅修改SQL语法即可。
正确语法
该环境下有两种可正常运行的时间旅行SQL写法:
- 路径加版本后缀写法
无需额外函数包裹,直接在Delta表路径后拼接对应标识即可:
-- 按版本号查询 SELECT * FROM delta.`/delta/events@v1` -- 按时间戳查询 SELECT * FROM delta.`/delta/events@2023-01-01 00:00:00`
- table函数包裹写法
如果要使用VERSION AS OF/TIMESTAMP AS OF关键字,需要将表表达式整体用table()函数包裹:
-- 按版本号查询 SELECT * FROM table(delta.`/delta/events` VERSION AS OF 1) -- 按时间戳查询 SELECT * FROM table(delta.`/delta/events` TIMESTAMP AS OF '2023-01-01 00:00:00')
内容的提问来源于stack exchange,提问作者zjffdu
相关产品推荐
相关产品推荐

