Inicio / Lakehouse / Arquitectura medallón en Fabric, sin morir en el intento
Lakehouse

Arquitectura medallón en Fabric, sin morir en el intento

Bronze, Silver y Gold explicado con un caso real de ventas: de la ingesta cruda al modelo semántico que consume Power BI con DirectLake.

[ imagen de portada · diagrama Bronze → Silver → Gold en OneLake ]

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.

[ diagrama: flujo Bronze → Silver → Gold con notebooks y pipelines ]
Fig. 1 — Cada capa es un esquema (o lakehouse) distinto; el linaje fluye en una dirección.
TIP

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.

01_bronze_ventas.py PySpark
# 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 MERGE usando una clave de negocio estable.
  • Aplica reglas de calidad y aparta lo que no pasa a una tabla de quarantine.
02_silver_ventas.sql Spark SQL
-- 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 para append ciego.
  • 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.

#Lakehouse#OneLake#Delta#PySpark#DirectLake#Medallion

Kilian Baccaro Salinas

Arquitecto de Datos especializado en Microsoft Fabric.

Sigue entrenando

todos los artículos →
[ captura: portal OneLake ]
OneLake

Cómo organizar tu OneLake desde el día 1

6 MIN
[ code: pipeline.json ]
Data Factory

Pipelines incrementales paso a paso

11 MIN
[ diagrama: benchmark ]
DirectLake

DirectLake vs Import: el benchmark definitivo

9 MIN
Newsletter

¿Te ha servido? Recibe el próximo entreno

Un tutorial práctico de Fabric cada semana, directo a tu bandeja.

1 email / semana · cancela cuando quieras · 0 spam