PySpark sql CASE 失败

PySpark sql CASE fails

我在使用 PySpark sqlContext 时遇到了奇怪的行为。下面的代码最好地说明了这个问题。

我正在检查简单 case 语句中 COLUMN 的值。但是,即使条件检查为 TRUE 并始终跳转到 ELSE,也不会触发 WHEN。我在这里的语法有问题吗?

dataTest = spark.sql("""SELECT 
COLUMN > 1,
CASE COLUMN 
    WHEN COLUMN > 1 THEN 1
    ELSE COLUMN 
    END AS COLUMN_2,
COLUMN
FROM TABLE
""")


dataTest.sort(col("COLUMN").desc()).show(5, False)

+---------------+-------------+---------+ 
|COLUMN >1      |COLUMN_2     |COLUMN   | 
+---------------+-------------+---------+ 
|true           |14           |14       | 
|true           |5            |5        | 
|true           |4            |4        | 
|true           |3            |3        | 
|true           |2            |2        | 
+---------------+-------------+---------+

您缺少语法,请尝试:

SELECT 
COLUMN > 1,
CASE WHEN COLUMN > 1 THEN 1
     ELSE COLUMN 
     END AS COLUMN_2,
COLUMN
FROM TABLE

请注意 CASEWHEN 关键字之间没有 COLUMN