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

Cómo ejecutar VACUUM en una tabla Delta en Fabric Lakehouse

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

A medida que actualizas, eliminas y optimizas una tabla Delta en el Lakehouse, se acumulan archivos de datos que ya no pertenecen a la versión actual de la tabla, pero que siguen ocupando espacio en OneLake. El comando VACUUM sirve precisamente para limpiar esos archivos antiguos de forma controlada, recuperando almacenamiento sin afectar a los datos actuales. A continuación verás cómo aplicar VACUUM a una tabla Delta en el Lakehouse de forma segura, empezando por un DRY RUN antes de borrar nada.

Requisitos previos

  • Un workspace de Microsoft Fabric con una capacidad activa.
  • Un Lakehouse con al menos una tabla Delta en la que ya hayas hecho operaciones como UPDATE, DELETE, MERGE u OPTIMIZE.
  • Un notebook de Fabric asociado a ese Lakehouse para ejecutar Spark SQL o PySpark.
  • Conocimientos básicos de SQL.

Paso 1: Entender por qué existen archivos de más

Cada vez que haces un UPDATE, DELETE, MERGE u OPTIMIZE, Delta no modifica los archivos existentes: escribe archivos Parquet nuevos y marca los antiguos como eliminados en el registro de transacciones. Los archivos antiguos se conservan físicamente para que el time travel siga funcionando. Con el tiempo se acumulan y aumentan el coste de almacenamiento, aunque la tabla tenga pocas filas.

Esta acumulación es justo lo que resuelve VACUUM: elimina los archivos que ya no están referenciados por la versión actual y que son más antiguos que la ventana de retención.

Paso 2: Simular la limpieza con DRY RUN

Antes de borrar nada, usa la opción DRY RUN. Muestra la lista de archivos que se eliminarían, sin borrarlos. Es la forma más segura de entender el impacto del comando.

-- Lista los archivos que se eliminarían, sin borrar nada
VACUUM vendas RETAIN 168 HOURS DRY RUN

Sustituye vendas por el nombre de tu tabla. Si la lista sale vacía, no hay archivos lo bastante antiguos para limpiar, y eso es perfectamente normal.

Paso 3: Ejecutar VACUUM con la retención predeterminada

Cuando estés conforme con el resultado del DRY RUN, ejecuta VACUUM sin esa opción. Si no indicas un intervalo, Delta usa la retención predeterminada de siete días (168 horas), es decir, conserva todo lo que pueda hacer falta para leer versiones de la última semana.

-- Elimina archivos de más de 7 días que ya no están referenciados
VACUUM vendas

El comando devuelve la ruta de la tabla y limpia los archivos elegibles. Es seguro ejecutarlo varias veces: si no hay nada que eliminar, no hace nada.

Paso 4: Reducir la ventana de retención (con cuidado)

A veces quieres recuperar espacio más rápido y reducir la retención a menos de siete días. Delta tiene una comprobación de seguridad que lo impide por defecto, porque borrar archivos recientes puede romper el time travel y afectar a lecturas en curso. Solo debes desactivarla si entiendes el impacto.

-- Usar solo cuando entiendes el efecto en el time travel
SET spark.databricks.delta.retentionDurationCheck.enabled = false;
VACUUM vendas RETAIN 24 HOURS;
Aviso: nunca uses RETAIN 0 HOURS en una tabla con escrituras simultáneas: podrías borrar archivos aún en uso y perder datos. En producción, mantén la retención predeterminada siempre que sea posible.

Paso 5: Alternativa en PySpark

Si prefieres trabajar en Python, la API DeltaTable hace lo mismo que el comando SQL. Es útil cuando quieres integrar la limpieza en un notebook de mantenimiento ya existente.

from delta.tables import DeltaTable

dt = DeltaTable.forName(spark, "vendas")
dt.vacuum()        # retención predeterminada de 168 horas
# dt.vacuum(168)   # lo mismo, pero explícito en horas

Comprobar el resultado

Para confirmar que VACUUM se ejecutó, consulta el historial de la tabla. Verás operaciones VACUUM START y VACUUM END registradas con su fecha y hora.

DESCRIBE HISTORY vendas

También puedes notar que el espacio ocupado por la carpeta de la tabla en OneLake ha disminuido. Si intentas hacer time travel a una versión más antigua que la retención definida, esa lectura fallará, que es el comportamiento esperado después de limpiar los archivos.

Conclusión

VACUUM es la pieza final de una buena rutina de mantenimiento: primero compactas los archivos con OPTIMIZE y luego recuperas espacio con VACUUM. En Fabric puedes ejecutar estos comandos manualmente en un notebook o usar la función de mantenimiento de tablas del propio Lakehouse para programarlos. Empieza con la retención predeterminada, observa el historial durante algunas semanas y solo después plantéate ajustar la ventana. ¿Cuál es la tabla de tu Lakehouse que más ha crecido, y sabes cuánto tiempo hace que no pasa por un VACUUM?