fatony
Commander
- Registriert
- Dez. 2009
- Beiträge
- 2.858
Liebe CB'ler,
aktuell habe ich die folgende Tabelle "INFO_A" in Impala SQL (Beispielausschnitt): (Fett markiert, sind doppelte ID Einträge)
Wie man sieht, sind zwei Zeilen für N2340J und B2677K (beides "ID_Person" (String)) vorhanden. In dieser Tabelle soll jedoch nur der aktuelle Wert beibehalten werden. Einzig der "Kontostand" und die "Ausgang"(szeit) sind variabel.
Mein Ziel ist die folgende Tabelle als Ergebnis zu erhalten:
Das größte Problem an der ganzen Geschichte ist, dass die Ausgangszeit als String hinterlegt ist und mit der Impala Dokumentation komme ich nicht wirklich weit und auch nicht mit den Foren via Cast Funktion. Ganz zu schweigen auch nicht mit der normalen SQL Syntax.
Versuche wie hier...
habe ich auch schon probiert. Impala behauptet dann, dass es die Spalte "b.rev" nicht findet.
Übertragen habe ich folgendes gemacht:
Ich habe ein Duplikat von "INFO_A" namens "INFO_B" erstellt und dann versuche ich folgenden SQL Code in der Impala Oberfläche auszuführen:
Leider erhalte ich dann den Fehler, dass IMPALA die Spalte "INFO_B.Ausgang" nicht findet. Wieso?
Und wie kann ich den String-Datum in Timestamp umwandeln?
Impala scheint das ganze eher komplizierter zu machen als die Dinge zu vereinfachen ...
Vielen lieben Dank für eure Hilfe!
LG
fatony
aktuell habe ich die folgende Tabelle "INFO_A" in Impala SQL (Beispielausschnitt): (Fett markiert, sind doppelte ID Einträge)
ID_Person (String) | Spiel (String) | Kontostand (INT) | Ausgang (String; Format: DD/TT/JJJJ HH:MM:SS) |
N2340J | Tennis | 215 | 12/01/2019 14:05:29 |
M456D | Fußball | 245 | 11/03/2019 20:38:17 |
B2677K | Boxen | 123 | 25/02/2019 16:59:49 |
09LOP2 | Basketball | 90 | 09/09/2019 12:03:55 |
B2677K | Boxen | 4 | 27/02/2019 18:09:07 |
N2340J | Tennis | 51 | 24/01/2019 12:04:29 |
Wie man sieht, sind zwei Zeilen für N2340J und B2677K (beides "ID_Person" (String)) vorhanden. In dieser Tabelle soll jedoch nur der aktuelle Wert beibehalten werden. Einzig der "Kontostand" und die "Ausgang"(szeit) sind variabel.
Mein Ziel ist die folgende Tabelle als Ergebnis zu erhalten:
ID_Person (String) | Spiel (String) | Kontostand (INT) | Ausgang (String; Format: DD/TT/JJJJ HH:MM:SS) |
N2340J | Tennis | 51 | 24/01/2019 12:04:29 |
M456D | Fußball | 245 | 11/03/2019 20:38:17 |
B2677K | Boxen | 4 | 27/02/2019 18:09:07 |
09LOP2 | Basketball | 90 | 09/09/2019 12:03:55 |
Das größte Problem an der ganzen Geschichte ist, dass die Ausgangszeit als String hinterlegt ist und mit der Impala Dokumentation komme ich nicht wirklich weit und auch nicht mit den Foren via Cast Funktion. Ganz zu schweigen auch nicht mit der normalen SQL Syntax.
Versuche wie hier...
SQL:
SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
SELECT id, MAX(rev) rev
FROM YourTable
GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev
habe ich auch schon probiert. Impala behauptet dann, dass es die Spalte "b.rev" nicht findet.
Übertragen habe ich folgendes gemacht:
Ich habe ein Duplikat von "INFO_A" namens "INFO_B" erstellt und dann versuche ich folgenden SQL Code in der Impala Oberfläche auszuführen:
SQL:
SELECT INFO_A.ID_Person, INFO_A.rev, INFO_A.contents
FROM INFO_A
INNER JOIN (
SELECT ID_Person, MAX(Ausgang)
FROM INFO_A
GROUP BY ID_Person, Spiel
) INFO_B ON INFO_A.ID_Person = INFO_B.ID_Person AND INFO_A.Ausgang = INFO_B.Ausgang
Leider erhalte ich dann den Fehler, dass IMPALA die Spalte "INFO_B.Ausgang" nicht findet. Wieso?
Und wie kann ich den String-Datum in Timestamp umwandeln?
Impala scheint das ganze eher komplizierter zu machen als die Dinge zu vereinfachen ...
Vielen lieben Dank für eure Hilfe!
LG
fatony