Pular para conteúdo

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: TRUE se o contrato está assinado E dentro do prazo de vigência (não apenas baseado na flag S/N do 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 JOIN obrigatório da fct_contrato para dim_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