如何将增量表回滚到以前的版本

QPe*_*ran 5 apache-spark databricks delta-lake

有没有一种简单的方法可以选择以前的增量表版本作为当前/工作版本?

我们可以不通过 创建另一个版本overwrite/truncate,而是将一个版本指定为“当前/最新”版本吗?

这个操作更像是undo,完全去掉一些步骤,让数据回到前一个阶段。然后在执行select * from MYTABLE此操作时MYTABLE可以指向恢复的版本。

SQL 或 PySpark 都会受到赞赏!

Ehs*_*zir 16

您可以使用以下方式找到增量表的历史记录

DESCRIBE HISTORY yourTblName
Run Code Online (Sandbox Code Playgroud)

它将为您提供表的历史记录,其中包括Version, TimesStamp, UserId/Name ,Operation

在此输入图像描述

要获取以前的版本,您可以执行几个步骤,如下

SELECT max(version) -1 as previousVersion  FROM (DESCRIBE HISTORY yourTblName)
Run Code Online (Sandbox Code Playgroud)

它会给你以前的版本(你可以将其保存在某个变量中),然后在版本中使用它

select * from yourTblName Version as of 7
Run Code Online (Sandbox Code Playgroud)

您将有以前版本的记录。

将数据表恢复到早期版本:

RESTORE TABLE yourTblName  TO VERSION AS OF 7
Run Code Online (Sandbox Code Playgroud)

Databricks 文档:https://docs.databricks.com/delta/delta-utility.html#restore-a-delta-table-to-an-earlier-state