2016-03-30 9 views
-1

Ich habe die unten multiset teradata TabelleWie zuletzt eingefügte Zeile in einer Teradata-Tabelle abzuzurufen unter Verwendung von SQL

CREATE MULTISET TABLE pp_scratch.HADOOP_FPTI_DASHBOARD ,NO FALLBACK , 
    NO BEFORE JOURNAL, 
    NO AFTER JOURNAL, 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO 
    (
     job_status VARCHAR(32) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
     current_processing_hr VARCHAR(32) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
     no_of_files_moved VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL) 
PRIMARY INDEX upi_HADOOP_FPTI_DASHBOARD (current_processing_hr); 

Wenn ich die Werte einfügen versuchen es nicht in der Reihenfolge, die ich eingefügt haben. Wenn es in der Reihenfolge ist, die ich eingefügt habe, dann werde ich den Wert abrufen, indem ich Order by Statement verwende. In diesem Fall, wie der zuletzt eingefügte Wert abgerufen wird.

Beispieldaten

enter image description here

+2

Wenn Teradata wie jeder andere RDBMS ist, gibt es keinen Begriff der ‚einfügen Ordnung‘. Was versuchst du eigentlich? –

+0

Gibt es eine Möglichkeit, die zuletzt eingefügte Zeile in einer Tabelle wiederzufinden? – GopiGowtham

+0

@GopiGowtham. . . Wenn Sie die Einfügereihenfolge angeben, können Sie die zuletzt eingefügte Zeile abrufen. Dies würde typischerweise mit einer Identitätsspalte oder einem Erstellungsdatum-Zeitstempel geschehen. –

Antwort

0

Was Sie hier tun, ist eine Folge (Autoinkrement numerische integer) hinzuzufügen. Dazu müssten Sie Ihre Tabelle ändern und eine neue Spalte hinzufügen (Datentyp integer). Diese Spalte erhöht automatisch ihren Zähler um 1 mit jedem Datensatz, den Sie einfügen. Wenn Sie jetzt nach dieser neuen Spalte sortieren, können Sie die letzte Zeile abrufen, die in die Tabelle eingefügt wurde.

+0

Nein, nicht in einem parallelen System wie Teradata, eine "Identität" ist nicht sequentiell, in der Tat ist es mehrere Sequenzen mit verschiedenen Bereichen von Werten, eine pro PE/AMP – dnoeth

2

Teradata Tabellen sind Hash partitoned/sortiert, gibt es keine Möglichkeit, die letzte Reihe zu bekommen, es sei denncurrent_processing_hr einzigartig ist.

Und Sie Datentypen sind falsch:

  • Änderung current_processing_hr zu einem timestamp(2) default current_timestamp(2), wenn Sie nicht mehr Zeilen in der gleichen 1/100stel Sekunde einfügen Sie diesen für die letzte Reihe verwenden können
  • Änderung no_of_files_moved zu INT
Verwandte Themen