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
请注意 CASE 和 WHEN 关键字之间没有 COLUMN。
我在使用 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
请注意 CASE 和 WHEN 关键字之间没有 COLUMN。