2015-04-04 47 views
0

我想在Hive中做一個LATERAL JOIN。 有什麼辦法可以支持這個嗎?實質上,我想使用LHS中的行中的值作爲RHS上任意SQL的參數。我可以在Hive中做左側連接嗎?

下面是Postgres的一個例子:(請原諒我的原油爲例):

create table lhs (
    subject_id integer, 
    date_time BIGINT); 

create table events (
    subject_id integer, 
    date_time BIGINT, 
    event_val integer); 

SELECT * from lhs LEFT JOIN LATERAL (select SUM(event_val) as val_sum, count(event_val) as ecnt from events WHERE date_time < lhs.date_time and subject_id = lhs.subject_id) rhs1 ON true; 

回答

0

蜂房不支持LEFT JOIN橫向,使用下面的查詢,相當於你的query.I與測試樣本數據,它產生相同的結果。

select subject_id,date_time,SUM(event_val) as val_sum,COUNT(event_val) as ecnt 
from (SELECT a.subject_id as subject_id , 
     a.date_time as date_time, b.date_time as bdate , b.event_val as event_val 
     FROM events b LEFT OUTER JOIN lhs a 
     ON b.subject_id = a.subject_id) abc 
where bdate < date_time group by subject_id,date_time; 

希望我會幫助你制定出如何在配置單元中實現同樣的功能。

+0

謝謝..我希望有一個更好的方法..內部連接將創建大量的數據,除非Hive很聰明。 – Jeremy 2015-04-05 23:13:17

相關問題