Grunnleggende Dataoppdateringer og Slettinger
Sveip for å vise menyen
I vanlige Data Lakes er det nesten umulig å oppdatere eller slette en enkelt rad uten å skrive om hele datasettet. Siden Delta Lake bruker en transaksjonslogg, støtter det standard SQL-kommandoene UPDATE og DELETE, noe som gir mulighet for presise endringer i tabellene dine.
I forrige seksjon fokuserte du på å lese og oppsummere data. Data er imidlertid sjelden statisk — du kan oppdage at en batch med diamantdata har feil pris, eller at en bestemt "cut"-type må fjernes fra rapporteringen.
Siden diamonds-tabellen er en Delta-tabell, kan du endre den på samme måte som en tradisjonell database.
1. Oppdatering av poster
UPDATE-kommandoen lar deg endre verdier i spesifikke rader som oppfyller en betingelse. For eksempel, hvis alle diamanter med "Fair" cut fikk en prisøkning på 10 %:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Definerer den nye verdien for kolonnen
- WHERE — Kritisk. Uten en
WHERE-setning ville du oppdatert prisen for hver eneste diamant i hele tabellen
2. Slette poster
Kommandoen DELETE fjerner rader fra tabellen permanent. Brukes når data ikke lenger er relevant eller ble lastet inn ved en feil.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Denne kommandoen identifiserer alle diamanter større enn 5 carat og fjerner dem fra den aktive versjonen av tabellen.
3. Verifisering etter endring
Etter å ha kjørt en oppdatering eller sletting, bør du alltid verifisere endringen med en enkel SELECT count for å sikre at operasjonen fungerte 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. Sikkerheten ved Delta-oppdateringer
Når du kjører DELETE eller UPDATE, sletter ikke Delta Lake data fra de gamle filene direkte. I stedet følger den en trestegsprosess:
- Marker de gamle filene som "ugyldige"
- Skriv nye filer med de oppdaterte dataene
- Registrer endringen i transaksjonsloggen
Dette er grunnen til at Time Travel fortsatt fungerer selv etter en sletting — de gamle dataene eksisterer fortsatt i tidligere versjoner av tabellfilene inntil historikken manuelt fjernes.
5. Beste praksis: Test med SELECT
Før du kjører en DELETE eller UPDATE, test alltid filteret ditt 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 resultatene fra SELECT viser nøyaktig det du hadde tenkt å fjerne, kan du trygt fortsette med DELETE-kommandoen.
1. Hva skjer hvis du kjører en UPDATE-kommando uten en WHERE-klausul?
2. Sletter en DELETE-kommando på en Delta-tabell umiddelbart dataene fra den underliggende skylagringen for alltid?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår