Apache spark 如何基于多个条件更新行
我有一个dfApache 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
+------+-------+-----+
|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.010.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"))))