Aggiornamenti e Cancellazioni di Dati di Base
Scorri per mostrare il menu
Nei Data Lake standard, aggiornare o eliminare una singola riga è quasi impossibile senza riscrivere l'intero dataset. Poiché Delta Lake utilizza un registro delle transazioni, supporta i comandi SQL standard UPDATE e DELETE, consentendo modifiche precise alle tabelle.
Nella sezione precedente, l'attenzione era rivolta alla lettura e alla sintesi dei dati. Tuttavia, i dati sono raramente statici: potresti scoprire che un lotto di record di diamanti presenta prezzi errati, oppure che un determinato tipo di "cut" deve essere rimosso dai report.
Poiché la tabella diamonds è una tabella Delta, può essere modificata come un database tradizionale.
1. Aggiornamento dei record
Il comando UPDATE consente di modificare i valori nelle righe specifiche che soddisfano una condizione. Ad esempio, se tutti i diamanti con taglio "Fair" ricevono un aumento di prezzo del 10%:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Definisce il nuovo valore per la colonna
- WHERE — Fondamentale. Senza una clausola
WHERE, il prezzo verrebbe aggiornato per ogni diamante dell'intera tabella
2. Eliminazione dei record
Il comando DELETE rimuove definitivamente le righe dalla tabella. Utilizzare questa operazione quando i dati non sono più rilevanti o sono stati inseriti per errore.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Questo comando identifica tutti i diamanti con peso superiore a 5 carati e li rimuove dalla versione attiva della tabella.
3. Verifica dopo la modifica
Dopo aver eseguito un aggiornamento o una cancellazione, è sempre consigliabile verificare la modifica con un semplice SELECT count per assicurarsi che l'operazione sia stata eseguita correttamente.
-- 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. Sicurezza degli aggiornamenti Delta
Quando si esegue un comando DELETE o UPDATE, Delta Lake non elimina direttamente i dati dai vecchi file. Invece, segue un processo in tre fasi:
- Segna i vecchi file come "non validi"
- Scrive nuovi file contenenti i dati aggiornati
- Registra la modifica nel Transaction Log
Per questo motivo la Time Travel continua a funzionare anche dopo una cancellazione: i vecchi dati esistono ancora nelle versioni precedenti dei file della tabella finché la cronologia non viene eliminata manualmente.
5. Best practice: test con SELECT
Prima di eseguire un DELETE o un UPDATE, testare sempre il filtro con un SELECT.
- Invece di:
DELETE FROM diamonds WHERE color = 'J' - Provare prima:
SELECT * FROM diamonds WHERE color = 'J'
Se i risultati del SELECT mostrano esattamente ciò che si intende rimuovere, è possibile procedere in sicurezza con il comando DELETE.
1. Cosa succede se si esegue un comando UPDATE senza una clausola WHERE?
2. L'esecuzione di un comando DELETE su una tabella Delta cancella immediatamente e per sempre i dati dallo storage cloud sottostante?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione