Tabelas Fato
Tipos de Fatos
1. Fatos Transacionais
CREATE TABLE fato_vendas (
sk_data INT,
sk_produto INT,
sk_cliente INT,
sk_loja INT,
quantidade INT,
valor_venda DECIMAL(10,2),
custo DECIMAL(10,2),
PRIMARY KEY (sk_data, sk_produto, sk_cliente, sk_loja)
);
2. Fatos Periódicos
CREATE TABLE fato_estoque_mensal (
sk_data INT,
sk_produto INT,
sk_loja INT,
quantidade_media INT,
valor_estoque DECIMAL(10,2),
giro_estoque DECIMAL(5,2)
);
3. Fatos Acumulativos
CREATE TABLE fato_pedidos (
sk_pedido INT,
sk_cliente INT,
sk_data_pedido INT,
sk_data_aprovacao INT,
sk_data_envio INT,
sk_data_entrega INT,
valor_total DECIMAL(10,2)
);
Granularidade
1. Níveis Comuns
Transação individual
Diário
Semanal
Mensal
2. Agregações
-- Exemplo de agregação
CREATE TABLE fato_vendas_diarias AS
SELECT
sk_data,
sk_produto,
sk_loja,
SUM(quantidade) as qtd_total,
SUM(valor_venda) as valor_total
FROM fato_vendas
GROUP BY sk_data, sk_produto, sk_loja;
Métricas
1. Tipos de Métricas
Aditivas
Semi-aditivas
Não-aditivas
2. Cálculos Comuns
-- Exemplo de métricas calculadas
SELECT
d.mes,
SUM(f.valor_venda) as receita_total,
AVG(f.valor_venda) as ticket_medio,
SUM(f.valor_venda - f.custo) as margem_bruta
FROM fato_vendas f
JOIN dim_tempo d ON f.sk_data = d.sk_data
GROUP BY d.mes;
26 abril 2025