如何提取 Hive 中行内具有最高值的列?

数据挖掘 sql 蜂巢
2022-03-05 08:40:42

我有一张桌子,或多或少采用以下格式

col1 col2 col3 ... col100
val1 val2 val3 ... val100

其中 val* 是双打。有没有办法为每一行提取 Hive 中哪一列是最高值的行?

例如,对于像这样的表

col1 col2 col3
2     4   5
8     1   2

我会得到

col3
col1
1个回答

我无法在 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;

附加说明:您应该检查如何处理领带,在我的解决方案中,我简单地选择第一列。