Atualizações e Exclusões Básicas de Dados
Deslize para mostrar o menu
Em Data Lakes padrão, atualizar ou excluir uma única linha é praticamente impossível sem reescrever todo o conjunto de dados. Como o Delta Lake utiliza um log de transações, ele oferece suporte aos comandos SQL padrão UPDATE e DELETE, permitindo modificações precisas em suas tabelas.
Na seção anterior, o foco foi na leitura e sumarização de dados. No entanto, os dados raramente são estáticos — pode-se descobrir que um lote de registros de diamantes possui preços incorretos ou que um tipo específico de "cut" precisa ser removido dos relatórios.
Como a tabela diamonds é uma tabela Delta, ela pode ser modificada assim como em um banco de dados tradicional.
1. Atualização de Registros
O comando UPDATE permite alterar valores em linhas específicas que atendam a uma condição. Por exemplo, se todos os diamantes com "Fair" cut receberam um aumento de preço de 10%:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Define o novo valor para a coluna
- WHERE — Essencial. Sem uma cláusula
WHERE, o preço de todos os diamantes da tabela seria atualizado
2. Exclusão de Registros
O comando DELETE remove linhas da tabela de forma permanente. Utilizado quando os dados não são mais relevantes ou foram ingeridos por engano.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Este comando identifica todos os diamantes com mais de 5 quilates e os remove da versão ativa da tabela.
3. Verificação Após Modificação
Após executar um update ou delete, é recomendada a verificação da alteração com um simples SELECT count para garantir que a operação ocorreu conforme esperado.
-- 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. Segurança nas Atualizações Delta
Ao executar DELETE ou UPDATE, o Delta Lake não apaga os dados dos arquivos antigos diretamente. Em vez disso, segue um processo em três etapas:
- Marca os arquivos antigos como "inválidos"
- Escreve novos arquivos contendo os dados atualizados
- Registra a alteração no Transaction Log
Por isso, o Time Travel continua funcionando mesmo após uma exclusão — os dados antigos permanecem em versões anteriores dos arquivos da tabela até que o histórico seja removido manualmente.
5. Melhor Prática: Testando com SELECT
Antes de executar um DELETE ou UPDATE, sempre teste seu filtro com um SELECT primeiro.
- Em vez de:
DELETE FROM diamonds WHERE color = 'J' - Teste primeiro:
SELECT * FROM diamonds WHERE color = 'J'
Se os resultados do SELECT mostrarem exatamente o que você pretende remover, é seguro prosseguir com o comando DELETE.
1. O que acontece se você executar um comando UPDATE sem uma cláusula WHERE?
2. Executar um comando DELETE em uma tabela Delta apaga imediatamente os dados do armazenamento em nuvem subjacente para sempre?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo