Data Warehouse

Data Warehouse (DW)

 

Modelagem Dimensional Proposto

Tabelas Fato

Fato_Combustivel

Coluna Tipo Descrição Relação
id_fato (PK) INT Chave primária
id_tempo (FK) INT Chave para dimensão de tempo Dim_Tempo.id_tempo
id_localizacao (FK) INT Chave para dimensão de local Dim_Localizacao.id
id_produto (FK) INT Chave para dimensão de produto Dim_Produto.id
valor_medio_venda DECIMAL Valor médio de venda (ex: R$/litro)

Dimensões

Dim_Tempo
Coluna Tipo Descrição Exemplo
id_tempo (PK) INT Chave primária 1
ano INT Ano completo 2023
mes INT Mês (1-12) 7
mes_ano VARCHAR Formato “MM/YYYY” “07/2023”
Dim_Localizacao
Coluna Tipo Descrição Exemplo
id (PK) INT Chave primária 1
pais VARCHAR País (ex: Brasil) “Brasil”
regiao VARCHAR Região (ex: Sudeste) “Sudeste”
estado VARCHAR UF (ex: SP) “SP”
municipio VARCHAR Cidade “São Paulo”
Dim_Produto
Coluna Tipo Descrição Exemplo
id (PK) INT Chave primária 1
produto VARCHAR Nome do produto “Gasolina”
unidade VARCHAR Unidade de medida “Litro”

Fluxo de Carga (ETL/ELT)

  • Extração:

    • APIs ou arquivos CSV, XLSX, JSON.

    • Ferramentas: Python (Pandas, Requests) para orquestração.

  • Transformação:

    • Limpeza (valores nulos, duplicatas).

    • Padronização (unidades de medida, nomes de campos).

    • Ferramentas: SQL.

  • Carga:

    • Load para o DW em cloud (BigQuery, Redshift, Snowflake) ou on-premise (SQL Server, PostgreSQL).

 

1. Tabela de Fato (Fato_Combustivel)

Campo Tipo Descrição
id_fato INT (PK) Chave primária autoincremento.
id_tempo INT (FK) Chave para a dimensão de tempo.
id_localizacao INT (FK) Chave para a dimensão de local.
id_produto INT (FK) Chave para a dimensão de produto.
valor_medio_venda DECIMAL(10,2) Preço médio de venda (ex: 5.99).
volume_vendido DECIMAL(10,2) Opcional: Se tiver dados de volume.

2. Dimensões

Dim_Tempo
Campo Tipo Descrição
id_tempo INT (PK) Chave no formato AAAAMM (ex: 202307 = jul/2023).
ano INT Ano (2023, 2024…).
mes INT Mês (1-12).
mes_ano VARCHAR(7) Formato “MM/AAAA” (apresentação gráfico histórico).
Dim_Localizacao
Campo Tipo Descrição
id_localizacao INT (PK) Chave primária.
pais VARCHAR(50) Padronizado (ex: “Brasil”).
regiao VARCHAR(50) “Norte”, “Sudeste”, etc.
estado VARCHAR(50) “SP”, “RJ”, etc.
Dim_Produto
Campo Tipo Descrição
id_produto INT (PK) Chave primária.
produto VARCHAR(50) Nome (“Gasolina”, “Etanol”, …).
unidade VARCHAR(10) “R$/litro”, “R$/m³”, etc.

Carga:

 

1. Carga Inicial (Full Load)

Objetivo: Popular todas as tabelas do DW com dados históricos completos pela primeira vez.

Passos:
Extrair dados brutos

Fontes: APIs, arquivos CSV/XLSX com histórico completo (ex: dados de 2010 a 2023).

Carregar Dimensões

Dim_Tempo:

2. Cargas Incrementais (Delta Load)

Objetivo: Atualizar o DW apenas com dados novos ou modificados (ex: novos meses).

Passos:
Identificar Deltas

Fonte: Novo arquivo CSV/XLSX ou API com dados apenas do último mês (ex: 06/2023).

Controle: Use uma tabela de controle para saber a última data carregada:

Filtrar apenas registros com datas posteriores a ultima_data_carregada.

Exemplo em Python:

Verificar se há novos municípios ou produtos:

3. Automatização com Airflow (Opcional)

Para orquestrar as cargas incrementais mensais:

4. Boas Práticas

Teste de Idempotência: Garanta que a carga incremental possa ser reexecutada sem duplicar dados.

Backup: Antes da carga inicial, faça backup do DW.

Particionamento: Para grandes volumes, particione Fato_Combustivel por ano/mês.