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¶
- Volume de Novas Matrículas: Contagem de contratos com
Flag_Novo_Aluno = True. - Taxa de Ativação: % de contratos assinados que já possuem a primeira parcela paga.
- 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
SUMouCOUNTque exijam lógica deCASE WHENcomplexa. - [ ] Todos os nomes de colunas estão em português e sem abreviações técnicas (ex: em vez de
cd_und, usarUnidade). - [ ] 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