我在一个数据帧中有两个字符串列,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"))
这更像是一个火花问题,而不是标量问题。您应该使用===
而不是==
。