Controle de versão de dados e viagem no tempo no Delta Lake
O controle de versão de dados e as viagens no tempo são recursos de destaque do Delta Lake que permitem que você acesse e reverta para versões anteriores de seus dados. Essa funcionalidade é útil para auditar alterações, reproduzir experimentos, reverter erros e manter a precisão histórica.
Esta lição mostra como implementar e usar o controle de versão de dados e a viagem no tempo com o Delta Lake no Azure Databricks.
Entender a viagem no tempo do Delta Lake
O Delta Lake rastreia versões de dados em uma tabela Delta usando um log de transações que registra detalhes sobre cada alteração feita na tabela. Cada transação tem um número de versão exclusivo, começando de zero. Essas versões permitem que você acesse o estado dos dados em um ponto específico no tempo.
Criar a tabela Delta
-- Create the Delta table
CREATE TABLE person_data (
id INT,
name STRING,
age INT
);
Inserir alguns dados
Insira alguns dados iniciais na tabela.
-- Insert initial data
INSERT INTO person_data (id, name, age)
VALUES
(1, 'Alice', 30),
(2, 'Bob', 25);
Realizar atualizações
Realize algumas atualizações na tabela. Cada atualização cria uma versão da tabela Delta.
-- Update age of Bob
UPDATE person_data
SET age = 26
WHERE name = 'Bob';
-- Insert a new record
INSERT INTO person_data (id, name, age)
VALUES
(3, 'Charlie', 28);
Consultar histórico da tabela
Você pode exibir o histórico da tabela Delta para ver todas as alterações feitas nela. O comando DESCRIBE HISTORY exibe uma lista de todas as versões da tabela, juntamente com detalhes como a operação executada, o carimbo de data/hora e o usuário que executou a operação.
-- View table history
DESCRIBE HISTORY person_data;
Consultas de viagem no tempo
Você pode consultar versões anteriores da tabela usando a sintaxe VERSION AS OF ou TIMESTAMP AS OF.
-- Query data as of version 0
SELECT * FROM person_data VERSION AS OF 0;
-- Query data as of a specific timestamp
SELECT * FROM person_data TIMESTAMP AS OF '2024-07-22T10:00:00Z';
Reverter para uma versão anterior
Se você precisar reverter a tabela para um estado anterior, poderá usar o comando RESTORE.
-- Restore the table to version 0
RESTORE TABLE person_data TO VERSION AS OF 0;
-- Restore the table to a specific timestamp
RESTORE TABLE person_data TO TIMESTAMP AS OF '2024-07-22T10:00:00Z';
Dica
Imutabilidade: Embora você possa reverter para estados anteriores, trate os dados como imutáveis para evitar históricos de transações complexos e garantir uma linhagem de dados consistente.
Política de retenção: Gerencie o período de retenção de versões antigas, dependendo das necessidades de capacidade de armazenamento e conformidade usando o comando VACUUM.