#hive
#улей
Вопрос:
dt1=$1
desfile="data_$dt1"
hql="
select DISTINCT b.mid, b.create_time, d.content from
(select mid, create_time, to_id, dt from table_1 where dt>=$dt1 and to_id='1042015' ) b
join
(select mid, content from table_2 where dt>=$dt1) d
on(b.mid=d.mid)
"
hive -e "$hql"> $desfile
Этот запрос предназначен для получения содержимого из двух таблиц table_1 и table_2, разных полей из разных таблиц. Если я хочу получить еще одно поле из другой таблицы table_3, обусловленное тем же «средним» полем, должен ли я изменить запрос на эту форму ниже:
hql="
select DISTINCT a.off_time, b.mid, b.create_time, d.content from
(select mid, create_time, to_id, dt from table_1 where dt>=$dt1 and to_id='1042015' ) b
join
(select mid, content from table_2 where dt>=$dt1) d
join
(select mid, off_time from table_3 where dt>=dt1) a
on(b.mid=d.mid=a.mid)
"
Ответ №1:
Вы не можете присоединиться ко всем трем таблицам одновременно, но сначала вы должны присоединиться к b и d, а затем присоединиться к a .
select DISTINCT a.off_time, b.mid, b.create_time, d.content from
(select mid, create_time, to_id, dt from table_1 where dt>=$dt1 and to_id='1042015') b
join
(select mid, content from table_2 where dt>=$dt1) d
on(b.mid = d.mid)
join
(select mid, off_time from table_3 where dt>=$dt1) a
on(b.mid = a.mid)