← Notas

Nota técnica

Bronze, Silver e Gold

Por que o pipeline de delivery tem três camadas — e o que quebra quando se pula uma.

  • Python
  • Parquet
  • Pandas
  • DuckDB
7 min de leitura
  1. 01 — Problema

    Transformar no mesmo passo em que se ingere impede replay, auditoria e contrato estável para o consumidor.

  2. 02 — Hipótese

    Separar bruto, tratado e analítico deixa reprocessar regra sem perder a origem.

  3. 03 — Implementação

    Parquet append-only na Bronze, unicidade e tipos na Silver, fato dimensional na Gold — Delivery Audit.

  4. 04 — Resultado

    Auditoria e dashboards consomem Gold; Bronze permanece para reconstruir qualquer camada.

  5. 05 — Aprendizado

    Camada não é pasta. É contrato: o que pode mudar e o que o consumidor pode assumir.

O recorte está no Delivery Audit. A nomenclatura medallion só vale se cada camada tiver responsabilidade distinta.

Problema

Ingerir e já “limpar” no mesmo job parece simples. Na segunda semana aparece:

  • um campo da API muda e não há payload original para comparar;
  • a regra de auditoria precisa rodar de novo e o job reescreveu o bruto;
  • o dashboard depende do mesmo schema da origem — qualquer quebra vira incidente de BI.

Hipótese

Três contratos:

CamadaGuardaPode mudar com frequência
BronzePayload próximo da origem, históricoPouco — só partição nova
SilverTipos, chaves, dedupMédio — regras de limpeza
GoldGrão analítico, fatos e dimensõesBaixo — contrato com o consumidor

Implementação

Bronze — Parquet append-only. Mínima transformação. Serve a replay e disputa (“o que a API entregou naquele instante”).

Silver — schema, tipos, order_id único (último evento vence). É a base para join, não para KPI.

Gold — fact_orders com grão de um pedido, dimensões de loja, data e entregador. Auditoria e Streamlit leem daqui.

Pular Silver e ir da Bronze ao dashboard empurra limpeza para o consumidor. Pular Bronze e só guardar Gold impede reconstruir regra antiga.

Resultado

Reprocessar auditoria não exige nova chamada à API. O consumidor (BI ou regra) não conhece o JSON da origem.

Aprendizado

Se a equipe não souber responder “o que quebra se eu mudar esta coluna?”, a camada ainda não existe — só o diretório.