Dateneingabe, Zeitreise und Tabellen-Rollback
Dieses Lernprogramm führt Sie durch den Prozess der Datenaufnahme in watsonx.data, die Durchführung von Zeitreisen und Rollback-Operationen für Tabellen.
- Dateneingabe
-
Die Datenaufnahme ist der Prozess des Importierens und Ladens von Daten in watsonx.data. Sie können die Dateneingabe in watsonx.data mit den folgenden Methoden durchführen:
- Einlesen von Daten mit der Option Tabelle aus Datei erstellen auf der Seite Datenmanager.
- Einlesen von Daten mit Hilfe von SQL-Abfragen.
- Einlesen von Daten mit dem Befehlszeilentool "
IBM-lh. - Ingesting von Daten mit der Spark-Engine.
Weitere Informationen finden Sie unter Dateneingabe.
- Zeitreise
-
Die Zeitreisefunktion in Apache Iceberg Tabellen ermöglicht es Ihnen, die Tabellenhistorie abzurufen und zu überprüfen. Es verwendet Tabellen-Snapshots zur Unterstützung der Zeitreisefunktionen. Ein Tabellen-Snapshot stellt den Zustand einer Tabelle zu einem bestimmten Zeitpunkt dar. Iceberg erzeugt den Tabellen-Snapshot-Datensatz, wenn die Tabelle erstellt oder geändert wird (Einfügen, Aktualisieren, Löschen). Sie können diesen Snapshot-Datensatz für eine Abfrage verwenden, um die Tabellendetails zu sehen.
Hive unterstützen die Zeitreisefunktion nicht.
- Rollback
- Mit der Tabellen-Rollback-Funktion können Sie eine Tabelle mit Hilfe von Tabellen-Snapshots auf einen früheren Zeitpunkt zurücksetzen.
Anwendungsfall-Szenario
Stellen Sie sich vor, Sie sind Dateningenieur in Ihrem Unternehmen und mit der Verwaltung von Fahrzeugdatensätzen in der Unternehmensdatenbank betraut. Laden Sie die vorhandenen Datensätze in den Speicher hoch. Fügen Sie der vorhandenen Tabelle einen neuen Datensatz hinzu. Nach der Überprüfung stellen Sie fest, dass der neu hinzugefügte Datensatz nicht geeignet ist, und beschließen, die Tabelle auf einen früheren Zustand zurückzusetzen.
Das folgende Video bietet eine visuelle Methode zum Erlernen der Konzepte und Aufgaben in dieser Dokumentation.
Ziel
- Erstellen Sie eine Tabelle und laden Sie die Beispieldaten mit Hilfe der Spark-Engine in eine Tabelle.
- Laden Sie weitere Datensätze in die Tabelle "
cars. - Abrufen von Tabellendatensätzen mit Hilfe von Tabellen-Snapshots.
- Führen Sie Rollback-Operationen für Tabellen durch.
Vorbereitende Schritte
- Laden Sie die Datei
cars.csvvonhttps://ibm.box.com/v/data-cars-csv herunter. - Sie müssen eine Lite-Plan-Instanz eingerichtet haben.
- Die Lite-Plan-Instanz muss Spark- und Presto im laufenden Betrieb enthalten.
- Verknüpfen Sie einen Katalog sowohl mit Presto als auch mit Spark-Motoren. Hier, Apache Iceberg Katalog.
Vorgehensweise
Tabelle erstellen und Daten laden
Dieser Abschnitt führt Sie durch das Verfahren zum Erstellen einer Tabelle mit dem Namen " cars und zum Einlesen von Daten aus der Datei " cars.csv mithilfe der Spark-Engine.
-
Melden Sie sich an der watsonx.data-Konsole an.
-
Wählen Sie im Navigationsmenü die Option Datenmanager.
-
Klicken Sie auf Ingest Data und wählen Sie Local System. Weitere Informationen zum Ingest von Daten finden Sie unter Ingest von Daten aus dem lokalen System.
-
Klicken Sie auf die Registerkarte Daten durchsuchen. Aktualisieren Sie den Iceberg-Katalog, um das neue Schema und die Tabelle mit Daten anzuzeigen. Sie können die Registerkarten Tabellenspalten, Zeitreise, Datenprobe und DDL anzeigen.
-
Klicken Sie auf Zeitreise. Sie können sehen, dass die Tabelle "
406Datensätze enthält.
Laden weiterer Datensätze in die Tabelle
Führen Sie mehrere Transaktionen durch (zwei Transaktionen), um die Tabelle " cars zu aktualisieren. In der ersten Transaktion nehmen Sie zwei weitere Fahrzeugdatensätze für das Modell " TESLA auf und in der
zweiten Transaktion einen Datensatz für das Modell Kia Optima.
Um das zu tun:
-
Gehen Sie zum Arbeitsbereich Abfrage.
-
Wählen Sie den Presto.
-
Verwenden Sie die folgende SQL-Abfrage, um den ersten Satz von Daten in die Tabelle "
carseinzufügen.INSERT INTO iceberg_data.automobiles.cars VALUES ('Tesla Model S', 102, 0, 0, 670, 4766, 3.1, 2023, 'USA'), ('Tesla Model 3', 134, 0, 0, 283, 3582, 5.8, 2023, 'USA'); -
Führen Sie die Abfrage aus. Die Daten werden addiert und der gesamte Datensatz lautet "
408. -
Verwenden Sie die folgende SQL-Abfrage, um den zweiten Satz von Daten in die Tabelle "
carseinzufügen.INSERT INTO iceberg_data.automobiles.cars VALUES ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea'); -
Führen Sie die Abfrage aus. Die Daten werden addiert und der gesamte Datensatz wird zu "
409. -
Gehen Sie zum Datenmanager.
-
Wählen Sie die Tabelle
cars. Wählen Sie im Bereich Fahrzeuge die Registerkarte Zeitreise. Sie können die Snapshot-Datensätze (mit SnapshotID) zu den Datentransaktionen anzeigen.
Abrufen von Tabellendatensätzen mit Hilfe von Tabellen-Snapshots.
Dieser Abschnitt des Tutorials führt Sie durch das Verfahren zum Abrufen von Tabellendatensätzen mit Hilfe von Tabellen-Snapshots. Sie führen Abfragen aus, um Daten zu Prüfungs- und Regulierungszwecken abzurufen.
-
Gehen Sie zum Arbeitsbereich Abfrage.
-
Führen Sie die folgende Abfrage aus, um die Snapshot-Datensätze abzurufen, die den drei durchgeführten Einfügetransaktionen entsprechen.
SELECT * FROM iceberg_data.automobiles."cars$snapshots" ORDER BY committed_at;Die Ergebnismenge enthält drei Snapshot-Datensätze mit snapshot_id, Datum, Uhrzeit und Zeitzone. In diesem Lernprogramm werden die SnapshotID, Datum und die Uhrzeit für jede Transaktion als "code1", "code2", "code3", "code4", "code5" und "code6" bezeichnet:
<Tran1Time>, '<Tran1SnapshotID>, '<Tran2Time>, '<Tran2SnapshotID>, '<Tran3Time>und '<Tran3SnapshotID>.Sie können die Snapshot-Datensätze auch über Datenmanager > Tabelle "
cars> Registerkarte " Zeitreise" einsehen. -
Geben Sie die Snapshot-ID oder den Zeitpunkt in die folgenden Abfragen ein und führen Sie die Abfragen aus, um die Tabelleninformationen zu diesem Zeitpunkt abzurufen.
| Szenario | Abfrage | Ergebnis |
|---|---|---|
| Abrufen von Daten aus dem Ausgangszustand unter Verwendung der Snapshot-ID. | SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran1SnapshotID> ORDER BY Snapshot ID; |
Der Ergebnisbereich zeigt 406 Datensätze an. |
| Abrufen von Daten aus dem Ausgangszustand unter Verwendung des Zeitstempels. | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran1Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
Der Ergebnisbereich zeigt 406 Datensätze an. |
| Abrufen von Daten nach der zweiten Transaktion mit Hilfe der Snapshot-ID. | SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran2SnapshotID> ORDER BY Snapshot ID; |
Im Ergebnisbereich werden 408 Datensätze angezeigt. |
| Abrufen von Daten nach der dritten Transaktion unter Verwendung des Zeitstempels. | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
Im Ergebnisbereich werden 409 Datensätze angezeigt. |
| Abrufen von Daten zu einem Zeitpunkt zwischen der zweiten und dritten Transaktion. | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('Choose-a-time-between-<Tran2Time>-and-<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
Im Ergebnisbereich werden 408 Datensätze angezeigt. |
| Abrufen von Daten aus einer Zeit vor der Erstellung der Tabelle (wird voraussichtlich fehlschlagen). | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('2024-01-01 00:00:00.000 UTC' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
Es wurden keine Aufzeichnungen gefunden. |
Rollback der Tabelle durchführen
{Mit watsonx.data von Snapshots können Sie eine Tabelle auf einen früheren Zeitpunkt zurücksetzen.
Um die Tabellendaten auf einen früheren Snapshot zurückzusetzen, gehen Sie wie folgt vor:
-
Gehen Sie zum Datenmanager.
-
Wählen Sie die Tabelle
cars. Wählen Sie im Bereich Fahrzeuge die Registerkarte Zeitreise. Sie können die Snapshot-Datensätze (mit SnapshotID) anzeigen. -
Klicken Sie auf das Überlaufmenü am Ende der Zeile für den zweiten Snapshot (der zweite Snapshot umfasst 408 Datensätze) und klicken Sie auf Zurück zum Snapshot. Ein Fenster zum Bestätigen des Rollbacks zum Snapshot wird geöffnet. Klicken Sie auf Rollback zum Snapshot. Der Daten-Rollback ist erfolgreich. Die Tabelle muss nun 408 Datensätze enthalten.
-
Um den Rollback zu überprüfen, führen Sie die folgende Abfrage aus, um festzustellen, ob die Zeilen, die der dritten Transaktion entsprechen, entfernt wurden.
- Beispielabfrage, um zu überprüfen, dass die Tabelle den Datensatz "Kia Optima" nicht enthält.
SELECT * FROM iceberg_data.automobiles.cars WHERE car IN ('Kia Optima', 'Tesla Model S', 'Tesla Model 3');Das Ergebnis listet nur die Datensätze für "Tesla Model S" und "Tesla Model 3" auf. Die Tabelle enthält nicht den Datensatz für "Kia Optima" (dritte Transaktion), da die Tabelle jetzt auf den zweiten Snapshot zurückgesetzt wurde.
- Beispielabfrage zum Zählen der Gesamtzahl der Zeilen in der Tabelle.
SELECT COUNT(*) FROM iceberg_data.automobiles.cars;Sie müssen eine Anzahl von 408 Zeilen sehen, die mit der Anzahl übereinstimmt, als Sie die zweite Transaktion in der Tabelle durchgeführt haben. Die Tabelle befindet sich wieder in ihrem vorherigen Zustand (zweite Transaktion).