循环“索引表”以找出Hive中每行的值

时间:2016-12-12 11:02:42

标签: hive hiveql

我有两张桌子。

表AAA

userid exp
1      100
2      235325
3      3242
4      32543

表BBB

level  levelup_exp
1      10
2      100
3      1000
4      10000
5      100000
6      1000000

如果我想弄清楚用户的级别,我应该循环表BBB(按级别DESC排序),比较AAA.exp和BBB.levelup_exp,如果exp是>比levelup_exp但< =下一个levelup_exp,找到用户的级别。 所以输出应该是这样的:

userid level
1      2
2      6
3      3
4      4

如何通过使用HiveQL实现这一目标? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是一个解决方案,您可以尝试使用userid,next_level作为输出,但输出不一致

select userid , level, tab1.exp , levelup_exp  ,next ,next_level
 from tab1 as tab1 , (
select level,  levelup_exp
,lead(levelup_exp, 1) over (order by level) as next
,lead(level, 1) over (order by level) as next_level
 from tab2) as tab2x
where tab1.exp > levelup_exp  
 and tab1.exp <= next 
 order by userid