检查增量表是否在路径中是否存在于数据块中

问题描述

在加载数据之前,我需要从delta-lake表中删除某些数据。我可以从增量表中删除数据(如果存在),但是当表不存在时失败。

下面的Databricks标量代码

// create delete statement
val del_ID = "Check_ID =" + "123"

// get delta table from path where data exists
val deltaTable = DeltaTable.forPath(spark,path)

// delete data from delta table
deltaTable.delete(del_ID)

仅当增量数据存在于该路径上时,以上代码才有效,否则它将失败。

如果增量数据存在,是否有人可以共享执行delete语句的方法,否则delete语句将被忽略?

解决方法

根据DeltaTable's Javadoc,您可以使用以下命令检查指定路径中是​​否有增量表:

DeltaTable.isDeltaTable(spark,"path/to/table")

如果路径不包含增量表或不存在,它将返回false。因此您的代码将是:

val del_ID = "Check_ID ="+ "123" 
if (DeltaTable.isDeltaTable(spark,path)) {
  DeltaTable.forPath(spark,path).delete(del_ID)
}