Apache spark 如何基于多个条件更新行

Apache spark 如何基于多个条件更新行,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,我有一个df +------+-------+-----+ |values|percent|ecpc | +------+-------+-----+ | 010 | 0.11 | 5| | 100 | 0.22 | 4| | 001 | 0.33 | 3| | 011 | 0.01 | 5| | 101 | 0.005| 4| | 110 | 0.11 | 3| | 000 | 0.21 | 5| | 111 |0.000

我有一个df

+------+-------+-----+
|values|percent|ecpc |
+------+-------+-----+
|  010 |  0.11 |    5|
|  100 |  0.22 |    4|
|  001 |  0.33 |    3|
|  011 |  0.01 |    5|
|  101 |  0.005|    4|
|  110 |  0.11 |    3|
|  000 |  0.21 |    5|
|  111 |0.0001 |    4|
+------+-------+-----+
如果百分比
<0.01
,我想将
1
中的一个值更改为
0
。 并更改百分比
>0.01
,将ecpc更改为新的ecpc

例如:对于值111,百分比
0.01
0.11

将另一个1更改为011,百分比
>0.01
为0.01
0.01假设您希望在单个条件下更新一行(例如,当百分比<0.11时,change=1,否则为0)。您可以这样做:

val newDF = df.withColumn("change", when($"percent" < 0.11, lit(1)).otherwise(lit(0))
val newDF=df.withColumn(“更改”,当($“百分比”<0.11,点亮(1))。否则(点亮(0))
进行添加更改时,只需将其链接:

val newDFCombined = newDF.withColumn("ecpc", when($"percent" < 0.11, myFunc1($"values").otherwise(myFunc2($"values"))))
val newDFCombined=newDF.withColumn(“ecpc”,当($“百分比”<0.11,myFunc1($“值”)。否则(myFunc2($“值”))
其中,myFunc1和MyFunc2是计算所需值的函数

val newDFCombined = newDF.withColumn("ecpc", when($"percent" < 0.11, myFunc1($"values").otherwise(myFunc2($"values"))))