Вы можете использовать when
и otherwise
, используя условие ИЛИ.
val df = spark.createDataFrame(Seq((1,1,0), (1,2,3),(2,5,0))).toDF("a","b","c")
df.withColumn("d", when(col("a") === 0 or col("b") === 0 or col("c") === 0, lit(0)).otherwise(lit(1))).show()
Вы также можете оценивать столбцы динамически на основе списка столбцов.
val df = spark.createDataFrame(Seq((1,1,0), (1,2,3),(2,5,0))).toDF("a","b","c")
val cols = Seq("a","b","c")
val initCol = lit(0)===1
val col1 = cols.foldLeft(initCol)((x,y) => x or col(y) ===0)
df.withColumn("d", when(col1, lit(0)).otherwise(lit(1))).show()
Результат
+---+---+---+---+
| a| b| c| d|
+---+---+---+---+
| 1| 1| 0| 0|
| 1| 2| 3| 1|
| 2| 5| 0| 0|
+---+---+---+---+