Gopal Vijayaraghavan created HIVE-25589:
-------------------------------------------

             Summary: SQL: Implement HAVING/QUALIFY predicates for 
ROW_NUMBER()=1
                 Key: HIVE-25589
                 URL: https://issues.apache.org/jira/browse/HIVE-25589
             Project: Hive
          Issue Type: Improvement
          Components: CBO, SQL
    Affects Versions: 4.0.0
            Reporter: Gopal Vijayaraghavan


The insert queries which use a row_num()=1 function are inconvenient to write 
or port from an existing workload, because there is no easy way to ignore a 
column in this pattern.

{code}
INSERT INTO main_table 
SELECT * from duplicated_table
QUALIFY ROW_NUMER() OVER (PARTITION BY event_id) = 1;
{code}

needs to be rewritten into

{code}
INSERT INTO main_table
select event_id, event_ts, event_attribute, event_metric1, event_metric2, 
event_metric3, event_metric4, .., event_metric43 from 
(select *, ROW_NUMBER() OVER (PARTITION BY event_id) as rnum from 
duplicated_table)
where rnum=1;
{code}

This is a time-consuming and error-prone rewrite (dealing with a messed up 
order of columns between one source and dest table).

An alternate rewrite would be to do the same or similar syntax using HAVING. 

{code}
INSERT INTO main_table 
SELECT * from duplicated_table
HAVING ROW_NUMER() OVER (PARTITION BY event_id) = 1;
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to