Grundlegende Datenaktualisierungen und -Löschungen
Swipe um das Menü anzuzeigen
In Standard-Data Lakes ist das Aktualisieren oder Löschen einer einzelnen Zeile nahezu unmöglich, ohne den gesamten Datensatz neu zu schreiben. Da Delta Lake ein Transaktionsprotokoll verwendet, unterstützt es die Standard-SQL-Befehle UPDATE und DELETE und ermöglicht so präzise Änderungen an Ihren Tabellen.
Im vorherigen Abschnitt lag der Fokus auf dem Lesen und Zusammenfassen von Daten. Daten sind jedoch selten statisch – es kann vorkommen, dass eine Charge von Diamantdatensätzen falsche Preise enthält oder ein bestimmter "cut"-Typ aus Ihren Berichten entfernt werden muss.
Da die diamonds-Tabelle eine Delta-Tabelle ist, können Sie sie wie eine herkömmliche Datenbank bearbeiten.
1. Aktualisieren von Datensätzen
Der Befehl UPDATE ermöglicht das Ändern von Werten in bestimmten Zeilen, die eine Bedingung erfüllen. Wenn beispielsweise alle Diamanten mit dem "Fair"-Schliff eine Preiserhöhung von 10 % erhalten:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Definiert den neuen Wert für die Spalte
- WHERE — Kritisch. Ohne eine
WHERE-Klausel würden Sie den Preis für jeden einzelnen Diamanten in der gesamten Tabelle aktualisieren
2. Löschen von Datensätzen
Der Befehl DELETE entfernt Zeilen dauerhaft aus der Tabelle. Dies wird verwendet, wenn Daten nicht mehr relevant sind oder versehentlich importiert wurden.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Dieser Befehl identifiziert alle Diamanten mit mehr als 5 Karat und entfernt sie aus der aktiven Version der Tabelle.
3. Überprüfung nach Änderungen
Nach dem Ausführen eines Updates oder Löschvorgangs sollte die Änderung immer mit einem einfachen SELECT count überprüft werden, um sicherzustellen, dass die Operation wie erwartet durchgeführt wurde.
-- Verify how many 'Fair' diamonds are left (count should be the same, but prices changed)
SELECT count(*) FROM workspace.workshop.diamonds WHERE cut = 'Fair'
4. Die Sicherheit von Delta-Updates
Beim Ausführen von DELETE oder UPDATE löscht Delta Lake die Daten nicht direkt aus den alten Dateien. Stattdessen folgt es einem dreistufigen Prozess:
- Die alten Dateien werden als "ungültig" markiert
- Neue Dateien mit den aktualisierten Daten werden geschrieben
- Die Änderung wird im Transaktionsprotokoll aufgezeichnet
Deshalb funktioniert Time Travel auch nach einem Löschvorgang weiterhin – die alten Daten existieren in früheren Versionen der Tabellendateien, bis der Verlauf manuell bereinigt wird.
5. Best Practice: Testen mit SELECT
Vor dem Ausführen eines DELETE oder UPDATE sollte der Filter immer zuerst mit einem SELECT getestet werden.
- Stattdessen:
DELETE FROM diamonds WHERE color = 'J' - Zuerst ausprobieren:
SELECT * FROM diamonds WHERE color = 'J'
Wenn die Ergebnisse des SELECT genau das anzeigen, was entfernt werden soll, kann der DELETE-Befehl sicher ausgeführt werden.
1. Was passiert, wenn ein UPDATE-Befehl ohne WHERE-Klausel ausgeführt wird?
2. Wird durch das Ausführen eines DELETE-Befehls auf einer Delta-Tabelle die zugrunde liegenden Cloud-Speicherdaten sofort und dauerhaft gelöscht?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen