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

xlpyo6sf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(398)

我在配置单元中有一个表,有两列:session\u id和duration\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

在以下情况下,我想添加具有唯一id的新列:
会话id正在更改或持续时间>15
我希望输出如下:

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

你知道怎么在Hive里做吗?
谢谢!

htrmnn0y

htrmnn0y1#

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;

相关问题