【问题标题】:How to run case when statement with spark sql?如何在使用 spark sql 的语句时运行 case?
【发布时间】:2020-05-13 00:14:27
【问题描述】:

我想在 spark sql 查询中运行 case when 语句。

这是数据

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)

我尝试将is true 替换为= TRUE= 'TRUE'is TRUE

【问题讨论】:

  • green 列的类型是什么?
  • 这是一个布尔值

标签: sql apache-spark apache-spark-sql


【解决方案1】:

试试 == 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|
//+------+-----+-------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多