Определите функцию, которая сначала проверяет, существует ли столбец в кадре данных. Если столбец не существует, просто добавьте его. Если он уже существует, используйте coalesce
, как и раньше.
Это можно сделать следующим образом:
def coalesceColumn(df: DataFrame, column: String, default: String) = {
Try(df(column)).toOption match {
case Some(_) => df.withColumn(column, coalesce(col(column), lit(default)))
case _ => df.withColumn(column, lit(default))
}
}
val df2 = coalesceColumn(df, "Seq_num", "0")
Обратите внимание, что для проверки столбцов можно использовать df.columns.contains(column)
, но в этом случае вложенные столбцы не поддерживаются.