Grundläggande Datauppdateringar och Borttagningar
Svep för att visa menyn
I vanliga Data Lakes är det nästan omöjligt att uppdatera eller ta bort en enskild rad utan att skriva om hela datasettet. Eftersom Delta Lake använder en transaktionslogg, stöder det standard SQL-kommandon UPDATE och DELETE, vilket möjliggör precisa ändringar i dina tabeller.
I föregående avsnitt fokuserade du på att läsa och sammanfatta data. Men data är sällan statisk — du kan upptäcka att en batch av diamantposter har felaktiga priser, eller att en specifik "cut"-typ behöver tas bort från din rapportering.
Eftersom tabellen diamonds är en Delta-tabell kan du ändra den precis som en traditionell databas.
1. Uppdatera poster
Kommandot UPDATE gör det möjligt att ändra värden i specifika rader som uppfyller ett villkor. Till exempel, om alla diamanter med "Fair" cut får en prisökning på 10 %:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Definierar det nya värdet för kolumnen
- WHERE — Avgörande. Utan en
WHERE-sats skulle du uppdatera priset för varje diamant i hela tabellen
2. Ta bort poster
Kommandot DELETE tar bort rader från tabellen permanent. Använd detta när data inte längre är relevant eller har importerats av misstag.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Detta kommando identifierar alla diamanter större än 5 carat och tar bort dem från den aktiva versionen av tabellen.
3. Verifiering efter ändring
Efter att ha kört en uppdatering eller borttagning bör du alltid verifiera ändringen med ett enkelt SELECT count för att säkerställa att operationen fungerade som förväntat.
-- 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. Säkerheten med Delta-uppdateringar
När du kör DELETE eller UPDATE raderar Delta Lake inte data från de gamla filerna direkt. Istället följer det en process i tre steg:
- Markerar de gamla filerna som "ogiltiga"
- Skriver nya filer med den uppdaterade datan
- Registrerar ändringen i transaktionsloggen
Det är därför Time Travel fortfarande fungerar även efter en borttagning — den gamla datan finns kvar i tidigare versioner av tabellfilerna tills historiken rensas manuellt.
5. Bästa praxis: Testa med SELECT
Innan du kör ett DELETE eller UPDATE, testa alltid ditt filter med en SELECT först.
- Istället för:
DELETE FROM diamonds WHERE color = 'J' - Testa först:
SELECT * FROM diamonds WHERE color = 'J'
Om resultaten från SELECT visar exakt det du tänkte ta bort, kan du säkert fortsätta med DELETE-kommandot.
1. Vad händer om du kör ett UPDATE-kommando utan en WHERE-sats?
2. Raderar ett DELETE-kommando på en Delta-tabell omedelbart datan från den underliggande molnlagringen för alltid?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal