2014-07-16 22 views
1

有什麼辦法將低於LEAD函數轉換爲HIVE QL格式?HIVE-QL中的LEAD函數語法

NVL(LEAD(START_DT) OVER (PARTITION BY EV_ID,AR_EV_RLTNSHP_TYPE_CD ORDER BY START_DT)-1,'2099-12-31') AS DERIVED_END_DT 

PFB錯誤:

FAILED: ParseException line 1:1599 missing) at 'OVER' near '(' in subquery source line 1:1603 missing FROM at '(' near '(' in subquery source line 1:1604 cannot recognize input near 'PARTITION' 'BY' 'EV_ID' in subquery source

回答

1

它是複雜的HiveSQL,但你可以用left join和聚集做到這一點:

select t.ev_id, t.ar_ev_rltnshp_type_cd, t.start_date, 
     coalesce(min(tnext.start_dt) - 1, '2099-12-31') as derived_end_dt 
from table t left join 
    table tnext 
    on t.ev_id = tnext.ev_id and t.ar_ev_rltnshp_type_cd = tnext.ar_ev_rltnshp_type_cd and 
     tnext.start_date > t.start_date 
group by t.ev_id, t.ar_ev_rltnshp_type_cd, t.start_date; 

這使得一些假設start_date幸福在給定的組內是獨一無二的,但它可能適用於您的目的。

+0

非常感謝Gordon .. :) – Jomy