проверьте, существует ли дельта-таблица на пути или нет в блоках данных

Мне нужно удалить определенные данные из таблицы дельта-озера перед ее загрузкой. Я могу удалить данные из дельта-таблицы, если она существует, но не удается, когда таблица не существует.

Scala-код 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)

Приведенный выше код работает, только если на этом пути существуют дельта-данные, в противном случае он не работает.

Может ли кто-нибудь поделиться подходом, при котором оператор удаления выполняется, если существуют дельта-данные, иначе оператор удаления игнорируется?


person VNK    schedule 06.10.2020    source источник


Ответы (1)


Согласно документации DeltaTable, вы можете проверьте наличие дельта-таблицы в указанном пути с помощью следующей команды:

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)
}
person Vincent Doba    schedule 08.10.2020