Pular para conteúdo

7. Camada Gold: Data Mart de Contratos

Objetivo

Fornecer uma visão simplificada, performática e semanticamente rica para os tomadores de decisão da rede InfoEscola. A Gold elimina a necessidade de cálculos complexos no front-end, garantindo que "uma única versão da verdade" seja apresentada.

Pergunta de Negócio Atendida

"Qual é a saúde da minha conversão de vendas e como está a retenção financeira dos meus alunos por unidade e regional?"

Estrutura do Data Mart: dm_contrato_performance

Campo Executivo Descrição Origem/Regra
Unidade Nome da Franquia. dim_unidade.nome
Regional Nome da Master Franquia. dim_unidade.regional
Mes_Assinatura Mês/Ano de referência do contrato. fct_contrato.data_assinatura
Status_Contrato Situação simplificada (Ativo, Cancelado, Encerrado). Regra de negócio Silver.
Receita_Prevista Valor total bruto do contrato. sum(valor_total)
Ticket_Medio Valor médio por contrato assinado. sum(valor) / count(id)
Flag_Novo_Aluno Identifica se é a primeira matrícula da pessoa. Cálculo de primeira ocorrência.

KPIs Consolidados neste Mart

  1. Volume de Novas Matrículas: Contagem de contratos com Flag_Novo_Aluno = True.
  2. Taxa de Ativação: % de contratos assinados que já possuem a primeira parcela paga.
  3. Churn Precoce: Contratos cancelados nos primeiros 3 meses de vigência.

Consumo e Performance (DuckDB)

  • Formato Final: Arquivo Parquet único e otimizado para leitura colunar.
  • Agregações: O Mart já nasce com agregações pré-calculadas por Unidade/Mês para garantir que o dashboard carregue em sub-segundos.
  • Filtros Nativos: Inclusão de colunas de "Corte Analítico" (Curso, Modalidade, Turno) como dimensões de alta performance.

Validação Independente (Evidência de Qualidade)

Para garantir que a Gold está correta, realizamos uma consulta de "dupla checagem" comparando o Mart final com os dados brutos da Bronze:

-- Query de Validação Independente
WITH bronze_check AS (
    SELECT sum(valor_bruto) as total FROM bronze_contrato WHERE status = 'S'
),
gold_check AS (
    SELECT sum(Receita_Prevista) as total FROM gold_dm_contrato_performance
)
SELECT 
    b.total as valor_bronze, 
    g.total as valor_gold,
    (g.total - b.total) as divergencia
FROM bronze_check b, gold_check g;
  • Resultado Esperado: Divergência = 0 (ou explicada por regras de expurgo documentadas na Silver).

Amostra de Consumo Executivo

Unidade Regional Mes_Ref Total_Contratos Ticket_Medio Receita_Total
São Paulo - Centro SP-Metropolitana 2026-04 120 R$ 1.500,00 R$ 180.000,00
Curitiba - Batel PR-Sul 2026-04 85 R$ 1.750,00 R$ 148.750,00

Critérios de Aceite da Gold

  • [ ] O dashboard não possui cálculos de SUM ou COUNT que exijam lógica de CASE WHEN complexa.
  • [ ] Todos os nomes de colunas estão em português e sem abreviações técnicas (ex: em vez de cd_und, usar Unidade).
  • [ ] O volume de dados no Mart é compatível com carregamento instantâneo no Cockpit Python/DuckDB.
  • [ ] Dicionário de campos Gold atualizado e disponível para os usuários finais.

Status Final do Ciclo:

  • [x] Data Mart Construído
  • [x] KPIs Pré-calculados
  • [x] Validação Cruzada Realizada
  • [x] Pronto para Publicação no Dashboard