Написал следующий UDF с целью заставить его обрабатывать случай, когда один параметр не определен.
Ниже приведен код:
val addTimeFromCols: UserDefinedFunction = udf((year: String, month: String, day: String, hour: String) => {
Option(hour) match {
case None => (List(year, month, day).mkString(DASH_SEP)).concat(SPACE).concat(defaultHour)
case Some(x) => (List(year, month, day).mkString(DASH_SEP)).concat(SPACE).concat(hour)
}
})
def addTimestampFromFileCols(): DataFrame = df
.withColumn(COLUMN_TS, addTimeFromCols(col(COLUMN_YEAR), col(COLUMN_MONTH), col(COLUMN_DAY), col(COLUMN_HOUR)).cast(TimestampType))
Моя цель состоит в том, чтобы сделать эту функцию применимой для всех случаев использования (фрейм данных, имеющий столбцы HOUR и другие, у которых в этом случае не будет этого столбца, я определяю значение по умолчанию. К сожалению, это не работает, когда я тестирую снова В кадре данных без столбца я получаю следующую ошибку:
cannot resolve '`HOUR`' given input columns
Любая идея, как это исправить, пожалуйста