Cómo crear una tabla Delta con PySpark en el Lakehouse
Guardar los datos transformados en una tabla Delta es la forma más práctica de dejarlos disponibles para su análisis en Microsoft Fabric. Con unas pocas líneas de PySpark, puedes crear una tabla Delta administrada a partir de un DataFrame de Spark, directamente en un notebook y sin salir del Lakehouse. Una vez creada, la tabla queda lista de inmediato para consultas en SQL e informes en Power BI, por lo que saber cómo crear una tabla Delta en el Lakehouse es la base de casi todos los pipelines de datos en Fabric.
Requisitos previos
- Una capacidad de Microsoft Fabric activa (prueba gratuita, Premium o una SKU F).
- Un Lakehouse ya creado en tu workspace.
- Permisos de Contributor (o superiores) en ese workspace, necesarios para escribir tablas.
- Conocimientos básicos de Python. No necesitas instalar ni configurar Spark: ya viene listo en Fabric.
Paso 1: Crear un notebook y adjuntar el Lakehouse
Abre tu Lakehouse y selecciona Open notebook > New notebook. Como alternativa, crea un notebook desde la experiencia de Data Engineering y, en el panel Explorer de la izquierda, usa Add lakehouse para adjuntarlo. Este paso es esencial: el Lakehouse adjuntado se convierte en el destino predeterminado de las tablas que escribas. Sin un Lakehouse adjuntado, Spark no sabe dónde guardar y la escritura falla.
Paso 2: Cargar los datos en un DataFrame
Para crear una tabla primero necesitas un DataFrame de Spark. En este ejemplo leemos un archivo CSV almacenado en la sección Files del Lakehouse, pero el origen puede ser cualquier otro: una tabla existente, el resultado de una transformación o una consulta. Las opciones header e inferSchema ayudan a Spark a interpretar correctamente la fila de encabezado y los tipos de datos.
df = (spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv("Files/ventas/ventas.csv"))
df.printSchema()
display(df)
El comando display(df) muestra una vista previa interactiva. Aprovecha para confirmar que las columnas y los tipos quedaron como esperabas antes de continuar.
Paso 3: Escribir el DataFrame como tabla Delta
Con los datos en el DataFrame, solo tienes que escribirlos en la sección Tables en formato Delta. El método saveAsTable() crea una tabla administrada: Fabric escribe los archivos Parquet y registra la tabla en el metastore en un solo paso.
(df.write
.format("delta")
.mode("overwrite")
.saveAsTable("ventas"))
El modo overwrite reemplaza la tabla si ya existe; cambia a append cuando quieras añadir filas a una tabla existente. Un detalle importante para evitar errores: el Lakehouse de Fabric solo admite tablas administradas. No uses CREATE TABLE ... LOCATION ni crees subcarpetas dentro de Tables, porque el Lakehouse no las reconoce como tablas y las muestra como "Unidentified".
Paso 4: Optimizar la escritura con V-Order (opcional)
Fabric puede organizar los archivos Parquet para lecturas más rápidas y menos espacio en disco. Si quieres esa mejora, activa V-Order y Optimize Write en una celda al inicio del notebook, antes de escribir:
spark.conf.set("spark.sql.parquet.vorder.enabled", "true")
spark.conf.set("spark.microsoft.delta.optimizeWrite.enabled", "true")
Estos ajustes reducen el número de archivos generados y mejoran la compresión, sin necesidad de cambiar el código de escritura del Paso 3.
Verificar el resultado
Confirma que la tabla se creó de dos maneras. Primero, en el panel Explorer, expande la carpeta Tables, haz clic en los puntos suspensivos (...) y elige Refresh: la tabla ventas debería aparecer con el icono de tabla Delta. Después, valida por código leyendo la tabla de nuevo:
spark.sql("SELECT COUNT(*) AS total FROM ventas").show()
# o directamente desde la ruta en la sección Tables
spark.read.format("delta").load("Tables/ventas").show(5)
Si el número de filas coincide con lo que esperabas, todo está correcto. La tabla también queda disponible de inmediato en el SQL analytics endpoint del Lakehouse, donde puedes consultarla con T-SQL.
Conclusión
Con el formato Delta y el método saveAsTable(), convertiste un DataFrame en una tabla administrada y lista para analizar en segundos, el patrón que repetirás en prácticamente todos los pipelines del Lakehouse. Como próximos pasos, prueba a programar esta escritura dentro de un pipeline de Fabric o a usar el modo append para cargas incrementales. Una pregunta para pensar antes de continuar: ¿cómo vas a garantizar que una nueva ejecución no cree filas duplicadas en tu tabla?