Ich habe eine Postgresql-Datenbank (technisch Greenplum) mit Daten über Einzelpersonen im Laufe der Zeit. Die Datenbank hat drei Felder: user_id
, monthly_date
und account_value
. Wenn ich eine Abfrage einfüge, muss ich die Ergebnisse von einem Remote-Server herunterladen, so dass die Bandbreite ein Problem darstellt. Da das Feld user_id
eine sehr lange Zeichenfolge (etwa 50 Zeichen) ist, möchte ich einen Zahlenwert zurückgeben, der 1: 1 mit jedem Wert von user_id
entspricht, da dies weniger Speicherplatz benötigt.Wie kann ich einen langen String-Identifier in einer einzigen Abfrage (aus Gründen der Bandbreite) eindeutig einem numerischen Wert zuordnen?
Zum Beispiel könnte die Datenbank Beispieldaten wie diese:
63a9364385350b13473279 Jan-2000
63a9364385350b13473279 Feb-2000
2066937e2887w206010393 Apr-2001
036686037e507d01764237 Mar-2003
036686037e507d01764237 Jun-2003
036686037e507d01764237 Jul-2003
036686037e507d01764237 Dec-2003
90829x098327549n286418 Apr-2004
90829x098327549n286418 Sep-2004
67518x834512306933u500 Nov-2000
und ich versuche, eine Abfrage zu arbeiten ROW_NUMBER()
und verschiedene Fensterfunktionen wie PARTITION BY
Ergebnisse wie folgt zu erhalten:
1 Jan-2000
1 Feb-2000
2 Apr-2001
3 Mar-2003
3 Jun-2003
3 Jul-2003
3 Dec-2003
4 Apr-2004
4 Sep-2004
5 Nov-2000
Ich weiß, das sind keine tatsächlichen Datenbankformate, aber ich verwende sie nur als Beispieldaten. Ist das möglich? Es ist mir egal (obwohl es nett und sehr nett zu sehen wäre), wenn zum Beispiel 63a9364385350b13473279
auf 1
in einer Abfrage und 2
in der nächsten, aber in jeder beliebigen Abfrage, 63a9364385350b13473279
sollte immer auf den gleichen Wert unabhängig zuordnen des Datums. Die abgebildeten Zahlen müssen nicht der Reihe nach sein oder irgendeinen bedeutungsvollen Wert neben der Einzigartigkeit haben.
Haben Sie sich mit dem 'serial' -Typ von gp angesehen, um einen automatisch generierten Integerschlüssel für Ihre Benutzer zu haben? – jmelesky
@jmelesky Ich kontrolliere das Schema überhaupt nicht. Die Datasets werden wie von einem Drittanbieter erworben und in ein Data Warehouse an einem anderen Ort hochgeladen, und wenn ich Daten aus der Datenbank haben möchte, kann ich nur eine Abfrage in ein Webformular eingeben. Wenn es fertig ist, erhalte ich einen Link zum Download per E-Mail. Leider funktioniert das System meines Unternehmens und ich kann es nicht ändern. –
@jmelesky Also, um klar zu sein, sogar die Datenbankadministratoren meiner Firma kontrollieren das Schema in diesem Sinne nicht wirklich. Der Datenanbieter von Drittanbietern verkauft uns die Daten in diesem Format, und wir können es entweder übernehmen oder verlassen (und leider können wir es nicht verlassen, da es der einzige Anbieter ist, der diese Daten verkauft). –