假设我有一个表tab1
,只有一个行和更大的表big1
和big2
。
如何使用tab1
中的列(包含单个数字)作为标量,例如,
select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id
答案 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;