Skip to main content

Command Palette

Search for a command to run...

Cómo recuperar objetos eliminados de tu Lakehouse en Microsoft Fabric

Updated
5 min read
Cómo recuperar objetos eliminados de tu Lakehouse en Microsoft Fabric

¿Has eliminado accidentalmente una tabla Delta crítica o un archivo importante de tu lakehouse? No entres en pánico. Microsoft Fabric implementa un mecanismo de "soft delete" que mantiene tus objetos eliminados disponibles para recuperación durante 7 días. En este artículo te mostraré cómo aprovechar esta característica usando la librería semantic-link-labs.

El problema: Eliminaciones accidentales

Trabajar con lakehouses implica gestionar grandes volúmenes de datos y múltiples artefactos. Es fácil cometer errores:

  • Eliminar una tabla Delta pensando que era de desarrollo cuando era de producción

  • Borrar un archivo de configuración crítico durante una limpieza

  • Ejecutar un script que elimina carpetas completas por error

  • Sobrescribir datos importantes durante un proceso ETL

Hasta hace poco, estos errores podían significar pérdida permanente de datos o recurrir a backups externos. Ahora, con el soft delete de OneLake, tienes una red de seguridad de 7 días.


¿Qué es Soft Delete en OneLake?

OneLake, el sistema de almacenamiento subyacente de Microsoft Fabric, implementa soft delete similar a Azure Blob Storage. Cuando eliminas un objeto:

  1. El objeto no se borra físicamente de inmediato

  2. Se marca como "eliminado" y se oculta de las vistas normales

  3. Permanece accesible para recuperación durante 7 días

  4. Después de 7 días, se elimina permanentemente

Esta funcionalidad aplica a todo el contenido de un lakehouse:

  • Tablas Delta completas (incluyendo sus archivos Parquet y logs de transacciones)

  • Archivos individuales en la sección Files

  • Carpetas completas con toda su estructura

  • Esquemas con múltiples tablas


Instalación de semantic-link-labs

La librería semantic-link-labs extiende las capacidades de Fabric con funciones avanzadas para lakehouses, semantic models y más. Para instalarla en tu notebook:

%pip install semantic-link-labs

Explorando objetos eliminados

Antes de recuperar nada, es fundamental identificar qué objetos están disponibles para restauración. La función list_blobs() nos permite listar todos los objetos, incluidos los eliminados.

Listar todos los blobs

import sempy_labs.lakehouse as lake

# Listar todos los objetos del lakehouse
all_blobs = lake.list_blobs(
    lakehouse=None,  # None usa el lakehouse del notebook
    workspace=None   # None usa el workspace del notebook
)

print(f"Total de blobs encontrados: {len(all_blobs)}")
all_blobs.head()

Filtrar objetos eliminados

El DataFrame resultante incluye una columna Is Deleted que podemos usar para filtrar:

deleted_objects = all_blobs[all_blobs['Is Deleted'] == True]

print(f"Objetos eliminados: {len(deleted_objects)}")

if len(deleted_objects) > 0:
    print("\nObjetos disponibles para recuperación:")
    print("-" * 80)
    for _, obj in deleted_objects.iterrows():
        print(f"📁 {obj['Blob Name']}")
        print(f"   Eliminado: {obj['Deleted Time']}")
        print(f"   Días restantes: {obj['Remaining Retention Days']}")
        print(f"   Tamaño: {obj['Content Length']} bytes")
        print()
else:
    print("✓ No hay objetos eliminados en este lakehouse")

Filtrar por tipo de contenedor

Puedes especificar si quieres listar solo objetos de Tables o Files:

# Solo tablas eliminadas
deleted_tables = lake.list_blobs(
    lakehouse=None,  # None usa el lakehouse del notebook
    workspace=None,   # None usa el workspace del notebook
    container="Tables"
)
deleted_tables = deleted_tables[deleted_tables['Is Deleted'] == True]

# Solo archivos eliminados
deleted_files = lake.list_blobs(
    lakehouse=None,  # None usa el lakehouse del notebook
    workspace=None,   # None usa el workspace del notebook
    container="Files"
)
deleted_files = deleted_files[deleted_files['Is Deleted'] == True]

print(f"Tablas eliminadas: {len(deleted_tables)}")
print(f"Archivos eliminados: {len(deleted_files)}")


Recuperando objetos

Una vez identificado el objeto a recuperar, el proceso es muy simple usando recover_lakehouse_object().

import sempy_labs.lakehouse as lake

lake.recover_lakehouse_object(
    file_path='ruta/del/objeto',
    lakehouse=None,  # Nombre o ID del lakehouse
    workspace=None   # Nombre o ID del workspace
)

Ejemplo 1: Recuperar una Tabla Delta

Las tablas Delta son estructuras complejas con múltiples archivos Parquet y un transaction log. La recuperación restaura toda la estructura:

# Recuperar tabla en el nivel raíz
lake.recover_lakehouse_object(
    file_path='Tables/green_tripdata_2022',
    lakehouse="000xxx-xxxx-xxxx-xxxx-xxx000",
    workspace="000xxx-xxxx-xxxx-xxxx-xxx000"
)

Ejemplo 2: Recuperar archivos individuales

Los archivos en la sección Files se recuperan de la misma manera:

lake.recover_lakehouse_object(
    file_path='Files/Maestros/MaestroFechas.xlsx',
    lakehouse=None,
    workspace=None
)

Ejemplo 3: Recuperar carpetas completas

Puedes recuperar carpetas enteras con todo su contenido:

# Recuperar carpeta completa
lake.recover_lakehouse_object(
    file_path='Files/Maestros',
    lakehouse=None,
    workspace=None
)

Importante: Al recuperar una carpeta, se restauran recursivamente todos los archivos y subcarpetas que contenía.


Limitaciones y consideraciones

⏱️ Ventana de recuperación

7 días es el límite absoluto. Después de este período:

  • Los objetos se eliminan permanentemente de OneLake

  • No hay forma de recuperarlos sin un backup externo

  • El contador comienza en el momento de la eliminación

Recomendación: Implementa alertas automáticas para objetos próximos a expirar.

📂 Estructura de Paths

Los paths deben seguir la estructura exacta:

✓ Correcto:
  - Tables/FactSales
  - Tables/sales/FactSales
  - Files/raw/data.csv
  - Files/configs/app.json

✗ Incorrecto:
  - FactSales (falta el contenedor)
  - Tables\FactSales (barra invertida)
  - tables/FactSales (minúsculas)

🔄 Tablas Delta y consistencia

Al recuperar una tabla Delta:

  • Se restaura el estado exacto en el momento de eliminación

  • El transaction log se recupera completo

  • Todas las particiones y archivos Parquet se restauran

  • Los metadatos del Hive Metastore pueden requerir sincronización

⚠️ Conflictos de nombres

Si existe un objeto con el mismo nombre que el que intentas recuperar:

  • La operación puede fallar

  • Puede sobrescribirse el objeto actual (según configuración)

  • Es mejor renombrar o mover el objeto actual antes de recuperar

🔐 Permisos requeridos

Para recuperar objetos necesitas:

  • Permisos de escritura en el lakehouse

  • Permisos de administrador para carpetas del sistema

  • El rol de Contributor o superior en el workspace

💾 Impacto en el almacenamiento

Los objetos en soft delete cuentan para tu cuota de almacenamiento de OneLake. No se libera espacio hasta la eliminación permanente.

Cómo recuperar objetos eliminados de tu Lakehouse en Microsoft Fabric