如何将单行表中的列用作标量?

时间:2013-12-26 23:43:10

标签: sql hive

假设我有一个表tab1,只有一个行和更大的表big1big2。 如何使用tab1中的列(包含单个数字)作为标量,例如,

select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id

2 个答案:

答案 0 :(得分:0)

这有点过分,但你可以在Brickhouse中使用distributed_map UDF(http://github.com/klout/brickhouse)并创建一个只有一个键的地图

insert overwrite directory 'mytab1'
select bar, 'value' from tab1;

add file mytab1;

select a.foo * array_index( map_keys( distributed_map( 'mytab1' ) ),0 ) - b.quux
from big1 a join big2 b on ( big1.id = big2.id )

答案 1 :(得分:0)

再做一次加入。它只有一排,所以它不贵:

select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id join tab1;