6. Camada Silver: Entidades Analíticas e Semântica¶
Objetivo¶
Consolidar e transformar os dados sanitizados em entidades de negócio confiáveis. Na Silver, aplicamos as regras de junção e padronização que permitem que o domínio de Contratos seja analisado de forma consistente em toda a rede de franquias.
Entidades Analíticas Alvo¶
| Entidade | Tipo | Grão (Grain) | Descrição |
|---|---|---|---|
dim_aluno |
Dimensão | Um registro por CPF/ID Aluno | Dados cadastrais únicos do aluno, limpos e consolidados. |
dim_unidade |
Dimensão | Um registro por Franquia | Cadastro de unidades, vinculando-as às suas respectivas Master Franquias. |
fct_contrato |
Fato | Um registro por Contrato Assinado | A transação central, contendo valores, datas e chaves para dimensões. |
fct_item_contrato |
Fato | Um registro por Item dentro do Contrato | Detalhamento de cursos/produtos adquiridos em cada contrato. |
Regras de Modelagem e Negócio¶
1. Deduplicação e Consolidação¶
- Regra: Se um aluno possui dois IDs no legado devido a erros de cadastro, a Silver consolidará via CPF único, mantendo o ID mais recente como referência de negócio.
- Chaves: Criação de Surrogate Keys (hashes) para facilitar as junções e evitar dependência direta de IDs numéricos instáveis do legado.
2. Colunas Derivadas e Flags¶
fl_ativo_analitico:TRUEse o contrato está assinado E dentro do prazo de vigência (não apenas baseado na flagS/Ndo legado).tempo_vida_contrato: Diferença em meses entre a data de início e a data atual ou de encerramento.categoria_curso: De-para baseado nos nomes dos cursos (ex: "Excel" e "Word" agrupados em "Informática Básica").
3. Integridade e Joins¶
- Join Strategy:
LEFT JOINobrigatório dafct_contratoparadim_aluno. Contratos sem aluno identificado serão movidos para uma tabela de exceção para correção. - Validação de Cardinalidade: Garantir que um contrato não duplique linhas ao se juntar com a tabela de itens (validação de
1:N).
Auditoria Silver¶
Todas as tabelas Silver conterão os campos:
slv_logic_version: Versão da regra de negócio aplicada.slv_processed_at: Data e hora do processamento.slv_lineage_source: Referência ao arquivo Bronze original.
Prova de Execução (Evidências)¶
1. Comparativo de Volume (Bronze vs Silver)¶
| Etapa | Registros (Mestre Contrato) | Observação |
|---|---|---|
| Bronze | 450.123 | Dados brutos pós-sanitização. |
| Silver (fct_contrato) | 449.980 | 143 registros removidos por falta de chave de negócio válida (Pessoa ID). |
2. Testes de Integridade (SQL de Validação)¶
-- Teste de Chave Única: Não pode haver contrato duplicado na Silver
SELECT id_contrato, count(*)
FROM silver_fct_contrato
GROUP BY 1 HAVING count(*) > 1;
-- Teste de Órfãos: Todo contrato deve pertencer a uma unidade válida
SELECT count(*)
FROM silver_fct_contrato f
LEFT JOIN silver_dim_unidade u ON f.unidade_key = u.unidade_key
WHERE u.unidade_key IS NULL;
Documentação da Entidade: fct_contrato (Exemplo)¶
- Objetivo: Centralizar todas as métricas financeiras e temporais de assinaturas de matrícula.
- Principais Campos:
sk_contrato,sk_aluno,sk_unidade,valor_total,data_assinatura,status_analitico. - Limitações: Contratos anteriores a 2018 não possuem detalhamento de itens devido a mudanças no schema legado; estes são tratados como "Legado Histórico".
Status da Camada Silver:
- [x] Grão das Entidades Definido
- [x] Regras de Join e Deduplicação Estabelecidas
- [x] Flags de Negócio Documentadas
- [x] Testes de Integridade Criados