按序列号命名行

时间:2015-02-13 05:18:19

标签: hive

我有TableA -

NRow
----
   1
   2
 ...
1000000

和TableB -

RowCount  Name
--------------
     100    A
      10    B
     200    C
     ...   ...

我想在TableA中添加一个标签,前100行为“A”,接下来10行为“B”,接下来的200行为“C”,依此类推。 Hive可以这样做吗?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题 - 可以通过交叉加入。

select a.*, b.Name
from tablea a,
(select RowCount, sum(RowCount) rows over (order by Name) as CumRow from tableb) b
where a.NRow between b.CumRow-b.RowCount+1 and b.CumRow

UDF也可以这样做 - 但它必须有效地模拟交叉连接(因为它需要携带TableB的全部信息并扫描TableA)。