Arquitectura Medallion no Microsoft Fabric: Bronze, Silver e Gold
A arquitectura Medallion (ou Lakehouse Architecture) organiza os dados em três camadas com qualidade crescente: Bronze (raw), Silver (limpo) e Gold (pronto para consumo). É o padrão de referência para data engineering moderno e encaixa naturalmente no Microsoft Fabric.
Camada Bronze — Raw
Dados ingeridos tal como chegam da fonte, sem transformações. O objectivo é fidelidade e rastreabilidade.
# Notebook: Ingestão Bronze
df_raw = spark.read.format("csv").option("header","true").load("Files/raw/vendas_*.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_vendas")
Camada Silver — Limpo e Enriquecido
Dados transformados: deduplicação, conversão de tipos, enriquecimento com dimensões de referência.
# Notebook: Transformação Silver
from pyspark.sql.functions import col, to_date, upper, trim
df_silver = spark.read.format("delta").load("Tables/bronze_vendas") \
.dropDuplicates(["id_venda"]) \
.withColumn("data_venda", to_date(col("data_str"), "dd/MM/yyyy")) \
.withColumn("pais", upper(trim(col("pais")))) \
.filter(col("valor") > 0)
df_silver.write.format("delta").mode("overwrite") \
.option("overwriteSchema","true").save("Tables/silver_vendas")
Camada Gold — Agregada para Consumo
Dados modelados para consumo por BI, ciência de dados ou APIs. Geralmente num Warehouse ou como tabelas Delta altamente optimizadas.
-- SQL no Warehouse Gold
CREATE TABLE gold.fact_vendas_mensal AS
SELECT
DATE_TRUNC('month', data_venda) AS mes,
pais,
SUM(valor) AS receita_total,
COUNT(*) AS num_transacoes
FROM silver_vendas
GROUP BY 1, 2
Conclusão
A arquitectura Medallion torna os dados mais confiáveis, os pipelines mais simples de manter e a colaboração entre equipas mais eficiente. No Fabric, cada camada é naturalmente um Lakehouse separado, partilhando o mesmo OneLake com shortcuts.