Предположим, у меня есть таблица tab1 только с одной строкой и большими таблицами big1 и big2. Как использовать столбец в tab1 (который содержит одно число) в качестве скаляра, например, в

select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id
0
sds 27 Дек 2013 в 03:43

2 ответа

Лучший ответ

Просто сделай еще одно соединение. Это всего одна строка, так что это не дорого:

select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id join tab1;
0
Joe K 27 Дек 2013 в 23:44

Это немного излишне, но вы можете использовать UDF distributed_map в Brickhouse (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 )
0
Jerome Banks 27 Дек 2013 в 06:20