我有TableA -
NRow
----
1
2
...
1000000
和TableB -
RowCount Name
--------------
100 A
10 B
200 C
... ...
我想在TableA中添加一个标签,前100行为“A”,接下来10行为“B”,接下来的200行为“C”,依此类推。 Hive可以这样做吗?
答案 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)。