比较scala中两列的字符串值



我在一个数据帧中有两个字符串列,x和y,我想进行比较。如果它们相同(不区分大小写(,我想返回x,如果它们不同,我想连接x和y。我知道我可以在SQL中做到这一点,但我正在尝试在scala 中做到这

select (case when x = y then x else concat(x + ". " + y) end) as match from test

在标量中

df.select(when(col("x") == col("y"), col("x") )
.otherwise(concat(col("x"),lit('. '), col("y")))
.as("match"))

当我测试时,我得到了以下错误

错误:类型不匹配;已找到:需要布尔值:org.apache.spark.sql.Column

使用===而不是===对scala spark进行相等检查。

df.select(when(col("x") === col("y"), col("x") )
.otherwise(concat(col("x"),lit('. '), col("y")))
.as("match"))

这更像是一个火花问题,而不是标量问题。您应该使用===而不是==

最新更新