我有一个用例,我需要从 SparkSQL 中的表的不同列中获取最大值。
下面是一个示例表 -
我想在不使用 union 子句的情况下获取 a、b 和 c 列中的最大值。
下面是我执行的 SL 查询 -
SELECT (
SELECT MAX(myval)
FROM (VALUES (a),(b),(c)) AS temp(myval)
) AS MaxOfColumns
FROM
table
但这会引发错误 - “无法在内联表定义中计算表达式outer();第 3 行 pos 16”
你能帮我解决这个问题吗?
with t(id,a,b,c) as (select stack(2 ,100,1,2,3 ,200,5,6,4))
select *, array_max(array(a,b,c)) as MaxOfColumns
from t
id | a | b | c | 最大列数 |
---|---|---|---|---|
100 | 1 | 2 | 3 | 3 |
200 | 5 | 6 | 4 | 6 |
使用最伟大的 Spark sql 函数:
从表中选择 GREATEST(col1、col2 等...)
https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.greatest.html