Hadoop 为配置单元表中的唯一ID添加新列
我在hive中有一个表,有两列:session\u id和duration\u time,如下所示: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
|| 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上运行了它。非常感谢你