La arquitectura medallón es el patrón por defecto en un Lakehouse de Microsoft Fabric: organizas tus datos en tres capas de calidad creciente —Bronze, Silver y Gold— y cada una tiene una responsabilidad clara. Suena simple, y lo es… hasta que mezclas responsabilidades y acabas con un lago que nadie entiende.
En este artículo lo montamos sobre un caso real de ventas retail, todo en OneLake con tablas Delta, y terminamos exponiendo la capa Gold a Power BI mediante DirectLake.
Las 3 capas del medallón
La idea central: los datos fluyen en una sola dirección y nunca saltan capas. Bronze guarda el dato tal cual llega, Silver lo limpia y lo conforma, y Gold lo modela para consumo. Cada salto añade calidad y reduce volumen.
Usa un schema por capa (bronze, silver, gold) dentro del mismo Lakehouse, o un Lakehouse por capa si los equipos están separados. Lo importante es que el límite sea explícito.
Capa Bronze: la verdad cruda
Bronze es un volcado fiel de la fuente. No transformes nada aquí: ingiere tal cual, añade columnas de auditoría (fecha de carga, fichero origen) y escribe en Delta. Si mañana cambias una regla de negocio, siempre puedes reconstruir Silver y Gold desde Bronze.
# Ingesta cruda del CSV de origen → Delta en Bronze
from pyspark.sql.functions import current_timestamp, input_file_name
df = (spark.read
.option("header", True)
.csv("Files/landing/ventas/*.csv")
.withColumn("_ingesta_ts", current_timestamp())
.withColumn("_origen", input_file_name()))
(df.write
.mode("append")
.saveAsTable("bronze.ventas")) Capa Silver: limpiar y conformar
En Silver aplicas tipado, deduplicación, reglas de calidad y unificación de claves. El resultado son tablas limpias y conformadas, todavía a nivel de detalle, listas para que cualquier consumidor confíe en ellas.
- Castea tipos y normaliza fechas y monedas.
- Deduplica con
MERGEusando una clave de negocio estable. - Aplica reglas de calidad y aparta lo que no pasa a una tabla de quarantine.
-- Upsert incremental de Bronze a Silver
MERGE INTO silver.ventas AS t
USING bronze.ventas AS s
ON t.venta_id = s.venta_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *; Capa Gold: listo para negocio
Gold es el modelo dimensional —hechos y dimensiones— optimizado para análisis. Aquí agregas, calculas métricas y dejas las tablas con la forma que tu modelo semántico espera. Sobre esta capa apuntas el dataset de Power BI en modo DirectLake, que lee el Delta directamente sin importar ni duplicar datos.
“Si un analista tiene que hacer un JOIN raro para sacar su informe, esa lógica debería vivir en Gold, no en su cabeza.”
5 buenas prácticas
- Idempotencia: reejecutar un notebook no debe duplicar datos. Diseña para
MERGE, no paraappendciego. - OPTIMIZE + V-Order en Gold para que DirectLake vuele.
- Nombra por capa y nunca leas de una capa superior hacia una inferior.
- Particiona por fecha solo si las tablas son realmente grandes; el sobre-particionado mata el rendimiento.
- Documenta el contrato de cada tabla Gold: es tu API hacia negocio.
Con esto tienes un Lakehouse mantenible y un modelo que Power BI consume al instante. En el próximo artículo montamos el pipeline de orquestación que encadena las tres capas con control de errores.
Kilian Baccaro Salinas
Arquitecto de Datos especializado en Microsoft Fabric.