Arquitectura Medallion en Microsoft Fabric: Bronze, Silver y Gold
La arquitectura Medallion (o Lakehouse Architecture) organiza los datos en tres capas de calidad creciente: Bronze (raw), Silver (limpio) y Gold (listo para consumo). Es el patrón de referencia para la ingeniería de datos moderna y encaja naturalmente en Microsoft Fabric.
Capa Bronze — Raw
Datos ingeridos tal como llegan de la fuente, sin transformaciones. El objetivo es fidelidad y trazabilidad.
# Notebook: Ingesta Bronze
df_raw = spark.read.format("csv").option("header","true").load("Files/raw/ventas_*.csv")
df_raw = df_raw.withColumn("_ingest_ts", current_timestamp()) \
.withColumn("_source_file", input_file_name())
df_raw.write.format("delta").mode("append").save("Tables/bronze_ventas")
Capa Silver — Limpia y Enriquecida
Datos transformados: deduplicación, conversión de tipos, enriquecimiento con dimensiones de referencia.
# Notebook: Transformación Silver
from pyspark.sql.functions import col, to_date, upper, trim
df_silver = spark.read.format("delta").load("Tables/bronze_ventas") \
.dropDuplicates(["id_venta"]) \
.withColumn("fecha_venta", to_date(col("fecha_str"), "dd/MM/yyyy")) \
.withColumn("pais", upper(trim(col("pais")))) \
.filter(col("importe") > 0)
df_silver.write.format("delta").mode("overwrite") \
.option("overwriteSchema","true").save("Tables/silver_ventas")
Capa Gold — Agregada para Consumo
Datos modelados para el consumo por BI, ciencia de datos o APIs. Generalmente en un Warehouse o como tablas Delta altamente optimizadas.
-- SQL en el Warehouse Gold
CREATE TABLE gold.fact_ventas_mensual AS
SELECT
DATE_TRUNC('month', fecha_venta) AS mes,
pais,
SUM(importe) AS ingresos_total,
COUNT(*) AS num_transacciones
FROM silver_ventas
GROUP BY 1, 2
Conclusión
La arquitectura Medallion hace los datos más fiables, los pipelines más simples de mantener y la colaboración entre equipos más eficiente. En Fabric, cada capa es naturalmente un Lakehouse separado, compartiendo el mismo OneLake con shortcuts.