Мне нужно добавить новый столбец в фрейм данных с логическим значением, оценивая столбец внутри фрейма данных.Например, у меня есть кадр данных
+----+----+----+----+----+-----------+----------------+
|colA|colB|colC|colD|colE|colPRODRTCE| colCOND|
+----+----+----+----+----+-----------+----------------+
| 1| 1| 1| 1| 3| 39|colA=1 && colB>0|
| 1| 1| 1| 1| 3| 45| colD=1|
| 1| 1| 1| 1| 3| 447|colA>8 && colC=1|
+----+----+----+----+----+-----------+----------------+
. В моем новом столбце мне нужно оценить, является ли выражение colCOND истинным или ложным.
Это просто, если у вас есть что-то вроде этого:
val df = List(
(1,1,1,1,3),
(2,2,3,4,4)
).toDF("colA", "colB", "colC", "colD", "colE")
val myExpression = "colA<colC"
import org.apache.spark.sql.functions.expr
df.withColumn("colRESULT",expr(myExpression)).show()
+----+----+----+----+----+---------+
|colA|colB|colC|colD|colE|colRESULT|
+----+----+----+----+----+---------+
| 1| 1| 1| 1| 3| false|
| 2| 2| 3| 4| 4| true|
+----+----+----+----+----+---------+
Но мне нужно оценить разные выражения в каждой строке, и это внутри столбца colCOND.
Я думал создать функцию UDF со всеми столбцами, но в моем реальном кадре данных много столбцов.Как я могу это сделать?
Спасибо всем