2012-03-29 7 views
3

Ich habe einen Bienenstock Tisch etwas wie folgt aus:Hive: Suche nach Maximalwert in einer Gruppe von

create external table test(
    test_id string, 
    test_name string, 
    description string, 
    clicks int, 
    last_referred_click_date string 
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE LOCATION '{some_location}'; 

Ich brauche insgesamt Klicks für test_id, um herauszufinden, und dem letzten Klick Datum (max Datum in dieser Gruppe von test_id)

ich tue so etwas wie diese

insert overwrite table test partition(weekending='{input_date}') 
    select s.test_id,s.test_name,s.description,max(click_date), 
    sum(t.click) as clicks 
    group by s.test_id,s.test_name,s.description order by clicks desc; 

Does max() Funktion funktioniert für Strings? Mein click_date hat das Format'yyyy-mm-dd 'und ist ein String-Datentyp? Wenn nicht, was kann ich hier tun? UDF?

Antwort

1
SELECT s.test_id, 
     s.test_name, 
     s.description, 
     MAX(CAST(last_referred_click_date as DateTime)), 
     sum(t.clicks) as Total_Clicks 
FROM test s 
WHERE s.test_id=1 
GROUP BY s.test_id,s.test_name,s.description 
ORDER BY clicks desc; 
Verwandte Themen