der Tabelle zu finden ist:Hive SQL, um die letzte Aufzeichnung
create table test (
id string,
name string,
age string,
modified string)
Daten wie folgt aus:
id name age modifed
1 a 10 2011-11-11 11:11:11
1 a 11 2012-11-11 12:00:00
2 b 20 2012-12-10 10:11:12
2 b 20 2012-12-10 10:11:12
2 b 20 2012-12-12 10:11:12
2 b 20 2012-12-15 10:11:12
ich die neueste Aufzeichnung erhalten möchten (einschließlich jeder colums ID, Name, Alter, modifed) Gruppe von id, wie die oben genannten Daten ist das richtige Ergebnis:
1 a 11 2012-11-11 12:00:00
2 b 20 2012-12-15 10:11:12
ich tun, wie folgt:
insert overwrite table t
select b.id, b.name, b.age, b.modified
from (
select id,max(modified) as modified
from test
group by id
) a
left outer join test b on (a.id=b.id and a.modified=b.modified);
Diese sql kann das richtige Ergebnis erhalten, aber wenn Massendaten, läuft es langsam.
** Gibt es eine Möglichkeit, dies ohne linke äußere Verbindung zu tun? **
danke für die Frage und die Antwort, lösten sie mein Problem vollständig! – eleforest