问题描述
在加载数据之前,我需要从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)
}