Python 我们可以删除delta lake中最新版本的delta表吗?

Python 我们可以删除delta lake中最新版本的delta表吗?,python,pyspark,delta-lake,Python,Pyspark,Delta Lake,我有一个具有4个版本的增量表 描述历史cfm-->有4个版本。0,1,2,3 我想删除版本3或2。 我怎样才能做到这一点 我试过了 from delta.tables import * from pyspark.sql.functions import * deltaTable = DeltaTable.forPath(spark, "path of cfm files") deltaTable.delete("'version' = '3'")

我有一个具有4个版本的增量表

描述历史cfm-->有4个版本。0,1,2,3

我想删除版本3或2。 我怎样才能做到这一点

我试过了

from delta.tables import *
from pyspark.sql.functions import *

deltaTable = DeltaTable.forPath(spark, "path of cfm files")

deltaTable.delete("'version' = '3'") 
这不会删除版本3。 说

“删除从最新版本的增量表中删除数据,但在旧版本被显式清空之前,不会从物理存储器中删除数据”


如果必须运行vacum命令,如何在最新日期而不是较旧日期使用它们。

您需要使用vacum命令来执行此操作。但是,真空的默认保留期为7天,如果您试图在7天内真空任何东西,它将出错

我们可以通过设置一个spark配置来绕过默认的保留期检查来解决这个问题

解决方案如下:

from delta.tables import *

spark.conf.set("spark.databricks.delta.retentionDurationCheck.enabled", "false")
deltaTable = DeltaTable.forPath(spark, deltaPath)
deltaTable.vacuum(24)
*deltaPath——是增量表的路径

*24——表示保留版本控制之前的小时数,过去超过24小时创建的任何版本都将被删除


希望这能回答您的问题。

这将删除24个版本之前创建的所有版本。我的问题是,我们是否可以只删除最新版本,保持旧版本不变?它将删除24小时前创建的任何版本,而不是版本。因此,如果只需要保留最新版本,请确定每次更新表的时间间隔,并将该时间间隔设置为24。例如,如果您的表每1小时更新一次,您只需要最新的,请将数字设置为1。