У меня есть DataFrame и список столбцов в виде строк, и мне нужно добавить столбец к исходному фрейму данных, который представляет собой разделенный |
список значений, где null
превращается в строку "null"
Это код, который у меня сейчас есть:
def mergeColumns(cols: Array[String], df: DataFrame, newName: String): DataFrame = {
val dfColumns = cols.map( columnName => df(columnName) )
df.withColumn(newName, concatenate(array(dfColumns: _*), lit("|")))
}
val concatenate: UserDefinedFunction = udf( (columns: Seq[Any], separator: String) => {
columns.map({
case null => "null"
case default => default.toString
}).mkString(separator)
})
И этот код работает, но только если все предоставленные столбцы имеют одинаковый тип, и мой текущий план состоит в том, чтобы попытаться преобразовать их все в тип String. Итак, у меня есть два вопроса:
1) Есть ли лучший способ сделать это в целом?
2) Если нет, как я могу преобразовать все столбцы dfColumns
в строки?