gpt4 book ai didi

hadoop - 通过变量计算 Hive 中的滞后

转载 作者:可可西里 更新时间:2023-11-01 16:51:46 24 4
gpt4 key购买 nike

我的输入表是这样的:

guest_id    days
101 79
101 70
101 68
101 61
102 101
102 90
102 55
103 99
103 90

请注意,天数按 guest_id 降序排列

期望的输出表:

guest_id    days     days_diff
101 79 0
101 70 9
101 68 2
101 61 7
102 101 0
102 90 11
102 55 35
103 99 0
103 90 9

days_diff 是 guest_id 的第一个订单差异(不是天数列)

最佳答案

您还需要有一个唯一的 id 列(否则 Hive 不知道您的行的顺序)。

然后你可以自己加入 id=id+1 来获得你的差异:

select a.guest_id, 
a.days,
case when a.guest_id = b.guest_id then b.days-a.days else 0 end days_diff
from
input a
join input b on a.id=b.id-1

编辑:正如 Kunal 在评论中指出的那样,Hive 确实有一个滞后窗口函数,它需要一个 PARTITION BY ... ORDER BY 子句;你仍然需要一些东西来对你的表格进行排序,例如,如果你有一个 date 列,你可以像下面这样使用它:

SELECT guest_id, 
days,
LAG(days, 1, 0) OVER (PARTITION BY guest_id ORDER BY date)
FROM input;

关于hadoop - 通过变量计算 Hive 中的滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com