我有一张桌子,或多或少采用以下格式
col1 col2 col3 ... col100
val1 val2 val3 ... val100
其中 val* 是双打。有没有办法为每一行提取 Hive 中哪一列是最高值的行?
例如,对于像这样的表
col1 col2 col3
2 4 5
8 1 2
我会得到
col3
col1
我有一张桌子,或多或少采用以下格式
col1 col2 col3 ... col100
val1 val2 val3 ... val100
其中 val* 是双打。有没有办法为每一行提取 Hive 中哪一列是最高值的行?
例如,对于像这样的表
col1 col2 col3
2 4 5
8 1 2
我会得到
col3
col1
我无法在 hive 中进行测试,但可能的 SQL 查询如下(最大返回列表中的最大值):
select
case
when col1 = greatest(col1,col2,col3) then 'col1'
when col2 = greatest(col1,col2,col3) then 'col2'
when col3 = greatest(col1,col2,col3) then 'col3'
end as c1
from test;
附加说明:您应该检查如何处理领带,在我的解决方案中,我简单地选择第一列。