Delta lake RESTORE 问题(Databricks)

Delta lake RESTORE issue (Databricks)

我正在使用 Azure 数据块并在 ADLS Gen2 上创建了一个增量 table。

我已经创建了 4 个版本的 delta lake。

我正在尝试使用以下命令恢复到版本号 2。

%sql
RESTORE TABLE Sales TO VERSION AS OF 2

有人可以告诉我为什么我无法恢复到旧版本吗? 现在发生如下错误。

Error in SQL statement: ParseException: 
extraneous input 'RESTORE' expecting {'(', 'CONVERT', 'COPY', 'OPTIMIZE', 'ADD', 'ALTER', 'ANALYZE', 'CACHE', 'CLEAR', 'COMMENT', 'COMMIT', 'CREATE', 'DELETE', 'DESC', 'DESCRIBE', 'DFS', 'DROP', 'EXPLAIN', 'EXPORT', 'FROM', 'GRANT', 'IMPORT', 'INSERT', 'LIST', 'LOAD', 'LOCK', 'MAP', 'MERGE', 'MSCK', 'REDUCE', 'REFRESH', 'REPLACE', 'RESET', 'REVOKE', 'ROLLBACK', 'SELECT', 'SET', 'SHOW', 'START', 'TABLE', 'TRUNCATE', 'UNCACHE', 'UNLOCK', 'UPDATE', 'USE', 'VALUES', 'WITH'}(line 1, pos 0)

== SQL ==
RESTORE TABLE Sales TO VERSION AS OF 2

请检查您使用的 Databricks Runtime 版本是否正确。根据 documentation 它仅在 DBR 7.4 之后可用,在早期版本中不可用。我刚刚检查了 DBR 7.5,它工作正常

如果你使用的是早期版本的 Databricks Runtime,那么你可以使用 INSERT OVERWRITE 语句和 select 特定版本的 table:

insert overwrite <table> SELECT * FROM <table> VERSION AS OF <version>

或者另一种可能性是使用 TRUNCATE TABLE + INSERT INTO:

truncate table <table>;
INSERT INTO <table> SELECT * FROM <table> VERSION AS OF <version>