Data Warehouse

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.

 

 

 

Sugestão para Busca em Projeto

cão no parque

📖 Glossário dos Termos Técnicos + Explicação de Cada Pergunta

🔮 0. Informações Heurísticas

O quê? São “palpites educados” ou estimativas que ajudam a guiar a busca de forma mais inteligente, sem precisar explorar todas as opções. Uma heurística é uma função que estima o custo restante para alcançar o objetivo.

Exemplo clássico: Em um mapa de cidades, a distância em linha reta entre duas cidades (distância euclidiana) é uma heurística útil. No quebra-cabeça dos 8 números, o número de peças fora do lugar é uma heurística comum.

No sistema: Se você tem informações heurísticas (ex: estimativa de distância, custo aproximado), responda SIM e o sistema usará busca informada (A*, Gulosa). Se não tem, usará buscas cegas (BFS, DFS, UCS, IDDFS).

✅ 1. Solução ótima

O quê? É a melhor solução possível para o problema, com o menor custo (tempo, distância, dinheiro, etc.).

Exemplo: Se você quer o menor caminho entre duas cidades, a solução ótima é o menor trajeto possível.

No sistema: Se você responde que precisa da solução ótima, o sistema vai sugerir algoritmos como A* ou UCS. Se não precisa, ele aceita soluções mais rápidas, mesmo que não sejam perfeitas (como Gulosa).

💰 2. Custo de ação variável

O quê? Cada ação (mover, comprar, ligar) pode ter um custo diferente.

Exemplo: Num mapa, andar de bicicleta custa 1, de carro custa 5, a pé custa 2. Nem tudo é igual.

No sistema: Se você responde SIM, ele sugere UCS (Uniform Cost Search) ou Dijkstra, que lidam bem com custos diferentes. Se NÃO, assume custos iguais.

🌌 3. Espaço de estados

O quê? É o conjunto de todas as situações possíveis que seu problema pode assumir.

Exemplo: No jogo da velha, o espaço de estados são todas as configurações do tabuleiro (cerca de 9! estados). No xadrez, são bilhões.

No sistema: Se o espaço é muito grande (>10^9) e a memória é limitada, sugere IDA* em vez de A*.

👁️ 4. Ambiente completamente observável vs. parcialmente observável

Completamente observável: Você sabe tudo sobre o estado atual. Ex: Robô num grid 3×3 vê exatamente onde está.
Parcialmente observável: Você tem informação incompleta. Ex: Aspirador não sabe se o quarto ao lado está sujo até ir lá.
No sistema: Se é parcial, sugere POMCP ou LRTA*. Se completo, segue para outras perguntas.

⚙️ 5. Ambiente determinístico vs. estocástico

Determinístico: A ação sempre leva ao mesmo resultado. Ex: Andar uma casa pra frente sempre te leva àquela casa.
Estocástico: O resultado tem aleatoriedade. Ex: Dados: você pode andar 1, 2 ou 3 casas com certa probabilidade.
No sistema: Se estocástico com adversário → MCTS. Se determinístico e jogo → Minimax.

🌳 6. Profundidade (da árvore de jogo)

O quê? Quantos movimentos à frente você pode olhar até o final do jogo.

Exemplo: Jogo da velha: profundidade 5-6 é suficiente. Xadrez: profundidade 20+ é enorme.

No sistema: Se profundidade pequena (≤6) → Minimax. Se grande → MCTS.

🧩 7. Restrição CSP (Constraint Satisfaction Problem)

O quê? Problemas onde você tem variáveis com domínios e regras que ligam elas.

Exemplo: Sudoku: cada célula (variável) tem número 1-9, e linhas/colunas não podem repetir (restrição).

No sistema: CSP pequeno (≤30 variáveis) → Backtracking + MRV. Médio/grande → Forward Checking com propagação.

📦 8. Problema de otimização combinatória

O quê? Escolher a melhor combinação dentre muitas possibilidades discretas.

Exemplo: Caixeiro viajante (TSP) – qual a menor rota que passa por 20 cidades? Escalonamento de tarefas.

No sistema: Se SIM, entra no ramo das meta-heurísticas (Hill Climbing, Simulated Annealing, Tabu Search, Algoritmo Genético).

🧠 9. Meta-heurística

O quê? Estratégias de alto nível para buscar soluções boas em problemas difíceis, sem garantia de ótimo.
Exemplos: Hill Climbing (sobe a montanha), Simulated Annealing (aceita pioras no início), Tabu Search (evita ciclos), Algoritmo Genético (evolução de população).
No sistema: Você escolhe o tipo preferido conforme seu problema.

⚡ 10. Problema booleano SAT

O quê? Problema com variáveis verdadeiro/falso e fórmulas lógicas em CNF (forma normal conjuntiva) que precisam ser satisfeitas.

Exemplo: (A ∨ B) ∧ (¬A ∨ C) – existe valor para A,B,C que torne tudo verdade?

No sistema: Se SIM, sugere um SAT Solver (DPLL ou CDCL).

📈 11. Espaço de estados contínuo

O quê? Variáveis podem assumir qualquer valor real dentro de um intervalo.

Exemplo: Posição (x,y) de um robô contínuo (3.45, 7.89). Ao contrário de discreto (casa 1, casa 2).

No sistema: Se contínuo, pergunta sobre gradiente. Se discreto, segue para outras perguntas.

📉 12. Gradiente

O quê? É a inclinação da função objetivo. Mostra a direção de maior crescimento.

Exemplo: Numa montanha, o gradiente aponta pra subida mais íngreme.

No sistema: Se você tem acesso ao gradiente → Gradiente Descendente (L-BFGS, Adam). Se não tem → CMA-ES ou Otimização Bayesiana.

∀∃ 13. Quantificadores ∀ (para todo) e ∃ (existe)

O quê? Lógica de primeira ordem: ∀x P(x) significa “para todo x, P(x) vale”. ∃x P(x) significa “existe algum x tal que P(x)”.

Exemplo: ∀aluno (aprovado → estudou). ∃aluno (nota > 9).

No sistema: Se seu problema usa quantificadores (QBF) → QBF/QCSP Solver (mais difícil, PSPACE-completo).

👥 14. Agentes (múltiplos)

O quê? Mais de uma entidade tomando decisão, podendo ser cooperativa ou competitiva.

Exemplo: Duas equipes de robôs competindo (adversário) ou cooperando para levantar uma caixa.

No sistema: Se tem múltiplos agentes, vai para Dec-POMDP (geral) ou MCTS (competitivo).

🎲 15. Modelo MDP (Markov Decision Process)

O quê? Um jeito matemático de modelar problemas de decisão sequencial com estados, ações, recompensas e transições probabilísticas.

Exemplo: Robô que escolhe ações (andar, girar) e ganha recompensa por chegar ao destino.

No sistema: Se pode ser modelado como MDP → Value/Policy Iteration.

🔄 16. Replanejamento

O quê? Capacidade de recalcular um plano quando algo dá errado ou o ambiente muda.

Exemplo: GPS recalcula a rota quando você vira na rua errada.

No sistema: Se precisa replanejar dinamicamente → D* Lite. Caso contrário → Busca Local simples.

🧠 Dica de uso do sistema:
• Consulte este glossário sempre que tiver dúvida sobre um termo.
• Cada pergunta do fluxograma está explicada acima.
• Se ainda assim tiver dúvida, escolha a resposta mais parecida com seu cenário e reinicie se necessário.