我在配置单元中有一个表格,其中有两列: session_id 和 duration_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的新列:
session_id正在更改或 duration_time> 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 QL 中做到这一点?
谢谢!
答案 0 :(得分:1)
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;