Control de versiones de datos y desplazamiento y viaje en el tiempo en Delta Lake

Completado

El control de versiones de datos y el viaje en el tiempo son características destacadas de Delta Lake que permiten acceder a las versiones anteriores de los datos y revertirlas a ellas. Esta funcionalidad es útil para auditar los cambios, reproducir experimentos, revertir errores y mantener la precisión histórica.

En esta lección se muestra cómo implementar y usar el control de versiones de datos y el viaje de tiempo con Delta Lake en Azure Databricks.

Descripción del viaje en tiempo de Delta Lake

Delta Lake realiza un seguimiento de las versiones de datos de una tabla Delta mediante un registro de transacciones que registra detalles sobre cada cambio realizado en la tabla. Cada transacción tiene un número de versión único, a partir de cero. Estas versiones permiten acceder al estado de los datos en un momento dado específico.

Creación de la tabla Delta

-- Create the Delta table
CREATE TABLE person_data (
    id INT,
    name STRING,
    age INT
);

Inserte algunos datos

Inserte algunos datos iniciales en la tabla.

-- Insert initial data
INSERT INTO person_data (id, name, age)
VALUES
(1, 'Alice', 30),
(2, 'Bob', 25);

Realice actualizaciones

Realice algunas actualizaciones en la tabla. Cada actualización crea una nueva versión de la tabla 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);

Historial de tablas de consulta

Puede ver el historial de la tabla Delta para ver todos los cambios realizados en ella. El comando DESCRIBE HISTORY muestra una lista de todas las versiones de la tabla, junto con detalles como la operación realizada, la marca de tiempo y el usuario que realizó la operación.

-- View table history
DESCRIBE HISTORY person_data;

Consultas de viaje de tiempo

Puede consultar versiones anteriores de la tabla mediante la sintaxis VERSION AS OF o 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';

Revertir a una versión anterior

Si necesita revertir la tabla a un estado anterior, puede usar el 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';

Sugerencia

Inmutabilidad: Aunque puede revertir a estados anteriores, trate los datos como inmutables para evitar historiales de transacciones complejos y garantizar un linaje de datos coherente.

Directiva de retención: Administre el período de retención de versiones anteriores en función de la capacidad de almacenamiento y las necesidades de cumplimiento mediante el comando VACUUM.