(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo hacer time travel en una tabla Delta en el Lakehouse

João Barros 06 de July de 2026 4 min de lectura

El time travel de Delta Lake permite consultar una tabla tal como estaba en el pasado — antes de una actualización, de una eliminación o de una carga con problemas. Funciona porque Delta guarda un registro (transaction log) de cada cambio y numera las versiones automáticamente. En un Lakehouse de Microsoft Fabric todas las tablas son Delta, así que esta capacidad está disponible de fábrica, sin ninguna configuración. Es perfecta para auditorías, para recuperarse de errores y para reproducir informes antiguos con los datos correctos.

Requisitos previos

  • Un workspace de Microsoft Fabric con un Lakehouse creado.
  • Un Notebook asociado a ese Lakehouse, donde ejecutará celdas de Spark SQL.
  • Una tabla Delta para explorar (todas las tablas del Lakehouse son Delta) o las ganas de crear la tabla de ejemplo de abajo.
  • Nociones básicas de SQL.

Paso 1: Preparar la tabla y generar versiones

El time travel solo es útil si la tabla tiene historial, y cada escritura (INSERT, UPDATE, DELETE o MERGE) crea una nueva versión. Vamos a crear una pequeña tabla vendas y a modificarla, para tener versiones que explorar:

CREATE TABLE vendas (id INT, produto STRING, total INT);
INSERT INTO vendas VALUES (1, 'Teclado', 80), (2, 'Rato', 25);
UPDATE vendas SET total = 120 WHERE id = 1;

La creación queda registrada como versión 0, el INSERT como versión 1 y el UPDATE como versión 2. Ya tenemos suficiente historial.

Paso 2: Ver el historial de versiones

El comando DESCRIBE HISTORY enumera todas las versiones de la tabla, con su número, la fecha y hora y la operación que las creó:

DESCRIBE HISTORY vendas;

Fíjese en las columnas version, timestamp y operation. Cada fila es una versión; cuantas más escrituras haga, más atrás podrá viajar. Aquí es donde decide a qué punto en el tiempo quiere volver.

Paso 3: Consultar una versión con VERSION AS OF

Para leer la tabla tal como estaba en una versión concreta, añada VERSION AS OF seguido del número de versión. Veamos el estado en la versión 1, antes del UPDATE:

SELECT id, produto, total FROM vendas VERSION AS OF 1;

El total del Teclado aparece como 80 (el valor original), aunque en la tabla actual ya sea 120. La consulta lee el pasado sin cambiar nada en el presente.

Paso 4: Consultar por fecha y hora con TIMESTAMP AS OF

También puede viajar a un instante en el tiempo, en lugar de a un número de versión — útil cuando sabe "cómo estaba a cierta hora" pero no el número exacto. Copie una fecha y hora de la columna timestamp del Paso 2:

SELECT id, produto, total FROM vendas TIMESTAMP AS OF '2026-07-06 04:02:00';

Delta devuelve la versión que estaba activa en ese instante. La fecha debe estar dentro del historial de la tabla: no puede ser anterior a su creación.

Paso 5: Restaurar una versión anterior

Si de verdad quiere devolver la tabla a un estado antiguo — por ejemplo, para deshacer un cambio erróneo — use RESTORE. Este comando crea una nueva versión con el contenido antiguo y conserva todo el historial:

RESTORE TABLE vendas TO VERSION AS OF 1;
Consejo: RESTORE no elimina versiones. Si restaura por error, puede volver atrás de nuevo — el historial sigue ahí.

Verificar el resultado

Vuelva a ejecutar DESCRIBE HISTORY vendas y verá una nueva entrada cuya operation es RESTORE. Después confirme el valor restaurado:

SELECT id, produto, total FROM vendas WHERE id = 1;

El total del Teclado debería haber vuelto a 80, el valor de la versión 1. Si ese es el número que ve, el time travel y el RESTORE funcionaron como se esperaba.

Conclusión

Con DESCRIBE HISTORY, VERSION AS OF, TIMESTAMP AS OF y RESTORE ha ganado una auténtica máquina del tiempo para sus datos — ideal para auditorías, recuperación de errores y para reproducir análisis antiguos. Solo tenga en cuenta que el historial no es infinito: el comando VACUUM elimina archivos de datos antiguos (de forma predeterminada conserva los últimos 7 días), lo que limita hasta cuándo puede viajar. ¿Cuál es la primera tabla donde le habría gustado tener esta red de seguridad?