Hadoop 为配置单元表中的唯一ID添加新列

Hadoop 为配置单元表中的唯一ID添加新列,hadoop,hive,unique,calculated-columns,unique-key,Hadoop,Hive,Unique,Calculated Columns,Unique Key,我在hive中有一个表,有两列:session\u id和duration\u time,如下所示: || session_id || duration|| 1 14 1 10 1 20 1 10 1 12 1

我在hive中有一个表,有两列:session\u idduration\u time,如下所示:

|| session_id || duration||

    1               14          
    1               10      
    1               20          
    1               10          
    1               12          
    1               16          
    1               8       
    2               9           
    2               6           
    2               30          
    2               22
session_id      duration    unique_id
1               14          1
1               10          1
1               20          2
1               10          2
1               12          2
1               16          3
1               8           3
2               9           4
2               6           4
2               30          5
2               22          6
我想在以下情况下添加具有唯一id的新列:

会话id正在更改持续时间>15

我希望输出如下:

|| session_id || duration||

    1               14          
    1               10      
    1               20          
    1               10          
    1               12          
    1               16          
    1               8       
    2               9           
    2               6           
    2               30          
    2               22
session_id      duration    unique_id
1               14          1
1               10          1
1               20          2
1               10          2
1               12          2
1               16          3
1               8           3
2               9           4
2               6           4
2               30          5
2               22          6
你知道如何在蜂巢QL中做到这一点吗

谢谢

SQL表表示无序集。您需要一个列来指定值的顺序,因为您似乎关心顺序。例如,这可以是一个id列或一个created at列

您可以使用累积总和来完成此操作:

select t.*,
       sum(case when duration > 15 or seqnum = 1 then 1 else 0 end) over
           (order by ??) as unique_id
from (select t.*,
             row_number() over (partition by session_id order by ??) as seqnum
      from t
     ) t;

它与ID列完美配合,我在impala上运行了它。非常感谢你