Camada Gold (Business & Modeling)
A camada Gold é o estágio final da nossa jornada de dados. Aqui, as informações são modeladas no formato Star Schema (Modelo Estrela), otimizadas para consultas rápidas e criação de dashboards em ferramentas como Power BI ou Tableau.
Objetivos da Camada
- Modelagem Dimensional: Criação de Tabelas Fato e Dimensões.
- Identidade Única: Implementação de Surrogate Keys (SK) para garantir a integridade histórica.
- Regras de Negócio: Consolidação de métricas e relacionamentos complexos.
O Modelo de Dados
Nosso modelo foca no processo de Ouvidoria, relacionando-o com as dimensões de Tempo, Usuário e Localidade.
1. Dimensão Tempo
Essencial para análises de sazonalidade e evolução temporal das manifestações.
-- Criamos a dimensão tempo com base no intervalo de datas das ouvidorias
CREATE TABLE workspace.gold.dim_tempo USING DELTA AS
SELECT
EXPLODE(SEQUENCE(to_date('2024-01-01'), to_date('2026-12-31'), interval 1 day)) AS DATA,
YEAR(DATA) AS ANO,
MONTH(DATA) AS MES,
DAY(DATA) AS DIA;
2. Dimensão Localidade (Merge Incremental)
Aqui resolvemos a normalização entre Cidades e Estados. Utilizamos o comando MERGE para garantir que, se um nome de cidade mudar, a Gold seja atualizada sem duplicar registros.
MERGE INTO workspace.gold.dim_localidade AS d
USING (
SELECT c.ID_CIDADE, c.NOME_CIDADE, e.NOME_ESTADO, e.SIGLA_ESTADO
FROM silver_cidade c
INNER JOIN silver_estado e ON c.COD_ESTADO = e.ID_ESTADO
) AS r
ON d.ID_CIDADE = r.ID_CIDADE
WHEN NOT MATCHED THEN
INSERT (ID_CIDADE, NOME_CIDADE, NOME_ESTADO, SIGLA_ESTADO)
VALUES (r.ID_CIDADE, r.NOME_CIDADE, r.NOME_ESTADO, r.SIGLA_ESTADO);
3. Tabela Fato Ouvidoria (O Coração do Projeto)
O maior desafio técnico foi a Ponte de Localidade. Como a tabela de ouvidoria não possuía a cidade diretamente, cruzamos os dados através do usuário.
INSERT INTO workspace.gold.fato_ouvidoria
SELECT
t.DATA AS FK_TEMPO,
u_dim.SK_USUARIO AS FK_USUARIO,
l.SK_LOCALIDADE AS FK_LOCALIDADE,
COUNT(1) AS QUANTIDADE_OUVIDORIA
FROM silver_ouvidoria o
INNER JOIN workspace.gold.dim_tempo t ON CAST(o.DATA_OUVIDORIA AS DATE) = t.DATA
INNER JOIN workspace.gold.dim_usuario u_dim ON o.COD_USUARIO = u_dim.ID_USUARIO
INNER JOIN silver_usuario u_silv ON o.COD_USUARIO = u_silv.ID_USUARIO
INNER JOIN workspace.gold.dim_localidade l ON u_silv.COD_CIDADE = l.ID_CIDADE
GROUP BY t.DATA, u_dim.SK_USUARIO, l.SK_LOCALIDADE;
Valor Agregado ao Negócio
Com a Camada Gold finalizada, conseguimos responder perguntas como:
-
"Qual o estado com maior número de reclamações?"
-
"Qual a evolução mensal de ouvidorias por perfil de usuário?"
-
"Existe concentração de problemas em cidades específicas?"
Conclusão Técnica
O uso de Surrogate Keys (SK_USUARIO, SK_LOCALIDADE) garante que, mesmo que o ID do banco operacional mude, nosso histórico analítico permaneça íntegro.