Grundlæggende Dataopdateringer og Sletninger
Stryg for at vise menuen
I standard Data Lakes er det næsten umuligt at opdatere eller slette en enkelt række uden at omskrive hele datasættet. Fordi Delta Lake bruger en transaktionslog, understøtter det standard SQL-kommandoerne UPDATE og DELETE, hvilket muliggør præcise ændringer i dine tabeller.
I det forrige afsnit fokuserede du på at læse og opsummere data. Data er dog sjældent statiske — du kan opdage, at et parti diamantposter har forkerte priser, eller at en bestemt "cut"-type skal fjernes fra din rapportering.
Fordi diamonds-tabellen er en Delta-tabel, kan du ændre den ligesom en traditionel database.
1. Opdatering af poster
Kommandoen UPDATE giver dig mulighed for at ændre værdier i specifikke rækker, der opfylder en betingelse. For eksempel, hvis alle "Fair" cut diamanter får en prisstigning på 10%:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Definerer den nye værdi for kolonnen
- WHERE — Kritisk. Uden en
WHERE-klausul ville du opdatere prisen for hver eneste diamant i hele tabellen
2. Sletning af poster
DELETE-kommandoen fjerner rækker permanent fra tabellen. Anvendes når data ikke længere er relevante eller er blevet indlæst ved en fejl.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Denne kommando identificerer alle diamanter større end 5 karat og fjerner dem fra den aktive version af tabellen.
3. Verificering efter ændring
Efter at have kørt en opdatering eller sletning, bør du altid verificere ændringen med en simpel SELECT count for at sikre, at operationen har fungeret som forventet.
-- 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. Sikkerheden ved Delta-opdateringer
Når du kører DELETE eller UPDATE, sletter Delta Lake ikke data fra de gamle filer direkte. I stedet følger det en tretrinsproces:
- De gamle filer markeres som "ugyldige"
- Der skrives nye filer med de opdaterede data
- Ændringen registreres i transaktionsloggen
Derfor fungerer Time Travel stadig selv efter en sletning — de gamle data eksisterer fortsat i tidligere versioner af tabel-filerne, indtil historikken manuelt slettes.
5. Bedste praksis: Test med SELECT
Før du kører en DELETE eller UPDATE, bør du altid teste dit filter med en SELECT først.
- I stedet for:
DELETE FROM diamonds WHERE color = 'J' - Prøv først:
SELECT * FROM diamonds WHERE color = 'J'
Hvis resultaterne fra SELECT viser præcis det, du havde tænkt dig at fjerne, kan du trygt fortsætte med DELETE-kommandoen.
1. Hvad sker der, hvis du kører en UPDATE-kommando uden en WHERE-klausul?
2. Sletter en DELETE-kommando på en Delta-tabel straks dataene fra den underliggende cloud-lagring for altid?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat