我想在火花SQL查询中运行一个案例当语句。
这是数据
object green
______ _____
1 true
2 false
3 true
这是查询
%sql
select
object,
case when green is true then 'A'
when green is false then 'B'
else 'C' end as case_when_statement
from my_table
此查询给我此错误:mismatched input 'object' expecting <EOF>(line 3, pos 14)
我尝试用= TRUE
、= 'TRUE'
和is TRUE
替换is true
尝试使用==
true。
spark.sql("""select
object,
case when green == true then 'A'
when green == false then 'B'
else 'C' end as case_when_statement
from tmp""").show()
//+------+-------------------+
//|object|case_when_statement|
//+------+-------------------+
//| 1| A|
//| 2| B|
//| 3| A|
//+------+-------------------+
In dataframe Api:
使用===
真实
df.withColumn("case_when_statement", when(col("green") === true,lit("A")).when(col("green")===false,lit("B")).otherwise(lit("c"))).show()
//+------+-----+-------------------+
//|object|green|case_when_statement|
//+------+-----+-------------------+
//| 1| true| A|
//| 2|false| B|
//| 3| true| A|
//+------+-----+-------------------+