0

Hive で LATERAL JOIN を実行したいと考えています。これをサポートする方法はありますか?本質的に、LHS の行の値を RHS の任意の SQL のパラメーターとして使用したいと考えています。

以下は 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;
4

1 に答える 1

0

Hive はLEFT JOIN LATERALをサポートしていません。クエリと同等の以下のクエリを使用します。サンプル データでテストしましたが、同じ結果が得られます。

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;

ハイブで同じことを達成する方法を策定するのに役立つことを願っています。

于 2015-04-05T10:32:45.650 に答える