spark,检查某些列是否为true,然后用y或n填充新列

6pp0gazn  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(330)

我想用y或n填充一个新的列。为此,我检查两列,如果其中一列的值为真,我在新列中输入y,否则输入n。
例如,我有一个Dataframe:

+--------------+----------+----------+------------------+--------+--------+-------------------+
|Date          |Col1      | Col2     |ChangeinCol1_Col2 | Col3   | Col4   | ChangeinCol3_Col4 |
+--------------+----------+----------+------------------+--------+--------+-------------------+
|2020-12-14    |True      | False    |     Y            | False  | False  |       N           |
|2020-12-14    |False     | False    |     Y            | False  | False  |       N           |

如果col1或col2中有true,则changeincol1\u col2列将是y,changeincol3\u col4也是y,但在这种情况下有n,因为col3和col4中没有更改。
在scala中如何使用apache spark?我尝试用df.withcolumn创建新列,但不知道如何检查cols中的值。

ppcbkaq5

ppcbkaq51#

你可以用 when :

import org.apache.spark.sql.expressions.Window

val df2 = df.withColumn(
    "ChangeinCol1_Col2",
    when(max($"Col1").over(Window.orderBy()) || max($"Col2").over(Window.orderBy()), lit("Y")).otherwise(lit("N"))
).withColumn(
    "ChangeinCol3_Col4",
    when(max($"Col3").over(Window.orderBy()) || max($"Col4").over(Window.orderBy()), lit("Y")).otherwise(lit("N"))
)

相关问题