Repositório dedicado ao controle de versionamento do Banco de Dados "Steam Games Dataset".
Este projeto consiste em um pipeline de Engenharia de dados completo para ingestão, processamento, importação e análise do dataset de jogos da Steam. O sistema envolve a leitura de dados brutos, normalização para um banco transacional (OLTP), criação de automatizações no PostgreSQL e transformação final para um Data Warehouse (OLAP/Star Schema).
O pipeline foi desenhado para ser reproduzível via Docker.
- Extract (Extração): Leitura de arquivo
JSON(Steam Games Dataset) utilizando processamento em stream (ijson) para alta performance. - Transform (Transformação):
- Limpeza de dados (Data Cleaning) e tratamento de tipos.
- Normalização de dados (Terceira Forma Normal) para tabelas relacionais (
games,publishers,developers).
- Load (Carga):
- Modelagem Dimensional (Star Schema).
- Carga na Tabela Fato (
fato_performance_steam) e Dimensões (dim_tempo,dim_jogo,dim_publisher).
Para rodar este projeto, você precisa apenas ter instalado na sua máquina:
- Docker Desktop
- Git (Para clonar o repositório)
Nota: Não é necessário instalar Python ou Airflow localmente. O Docker cuidará de todas as dependências.
Siga estas instruções para subir o ambiente do zero.
Rode o comando:
git clone https://github.com/HenriqueIgreja/Steam-Games-Dataset.git
cd Steam-Games-DatasetVerifique o arquivo dags/Scripts_normalizacao/DML/config.py. O projeto está configurado para rodar no Docker conectando-se ao PostgreSQL local.
Host: host.docker.internal (Padrão para Docker comunicar com Windows/Mac)
Database: postgres (Banco padrão)
Senha: Certifique se a senha no arquivo bate com a senha do seu banco local, ou ajuste conforme necessário
Com docker aberto, abra a raiz do projeto (onde está o docker-compose.yaml), e então execute:
docker compose up -d
Abra seu navegador e acesse:
Usuário: airflow
Senha: airflow
Na lista de DAGs, procure por steam_etl_v1
Ative a DAG clicando no interruptor na esquerda.
Clique no botão play na direita e selecione "Trigger DAG".
Clique no nome da DAG e vá para a aba "Graph". Você verá as tarefas sendo executadas:
✅ 0_instalar_libs: Instala dependências Python (ijson, psycopg2)
✅ 0.5_criar_database: Cria o banco de dados automaticamente se não existir
✅ 1_criar_estrutura: Cria/Recria as tabelas (OLTP e OLAP) e os objetos (Automações: triggers, view, etc)
✅ 2_popular_banco: Popula o banco transacional
✅ 2.5_criar_índices: Cria os índices para as tabelas OLTP
✅ 3_carregar_dw: Carrega o Data Warehouse
OBS: NÃO ESQUEÇA DE COLOCAR O ARQUIVO .JSON NA PASTA Scripts_normalizacao que se encontra na pasta ETL.
- Instale o Python 3.12+
- Clone o repositório
- Crie um ambiente virtual na pasta raiz do projeto com o comando
py -m venv venv - Ative o ambiente com o comando
venv\Scripts\activate - Instale as libs necessárias com o comando
pip install psycopg2 ijson - Ajuste o arquivo config.py colocando sua senha corretamente.
- Rode o arquivo main.py
- Espere a importação de todos registros acabarem
- Pronto!
Compreender completamente a estrutura atual da base de dados original antes de qualquer alteração.
- Analisar a base de dados original (sem modificar nada)
- Listar todas as tabelas existentes
- Documentar cada coluna contendo:
- Tipo de dado
- Descrição
- Observações relevantes
- Identificar todas as chaves:
- Primárias
- Estrangeiras
- Criar o dicionário de dados (Excel, Word ou PDF)
Arquivo .csv contendo o Dicionário de Dados Inicial se encontra no caminho Dicionário_de_Dados_Inicial.
Corrigir problemas estruturais, normalizar, ajustar relações e preparar um novo modelo consistente.
- Identificar problemas da base:
- Falta de normalização
- Relações mal definidas
- Estruturas inadequadas
- Tipos incorretos/inconsistentes
- Propor todas as correções necessárias
- Aplicar as correções no banco
- Criar um script de migração da versão antiga para a nova (preservando 100% dos dados)
- Documentar e justificar cada modificação realizada
- Criar índices para todas as tabelas
- Explicar utilidade dos índices para:
- Performance
- Integridade
- Consultas frequentes
- Explicar utilidade dos índices para:
- Criar o novo dicionário de dados
Criar automações significativas que agreguem valor ao domínio da base.
- 3 Triggers
- 3 Functions
- 3 Views
- 3 Procedures
- Automatizações devem ser coerentes com o domínio
- Não pode ser trivial (ex.: SELECT simples)
- Cada automação deve ter justificativa explicando:
- Por que existe
- Qual problema resolve
- Como melhora o sistema
- Adicionar nova seção no novo dicionário de dados
Desenvolver o DW usando modelagem dimensional.
- Escolher o tipo de modelagem (estrela, floco de neve etc.)
- Criar pelo menos 1 tabela fato
- Criar pelo menos 3 dimensões
- Justificar o DW, explicando:
- Quais perguntas de negócio ele responde
- Qual valor analítico ele gera
Carregar o DW de forma automatizada utilizando uma ferramenta de ETL.
- Apache NiFi
- Apache Airflow
- Pentaho
- Kafka
- Desenvolver o pipeline de ETL
- Popular o DW automaticamente
- Garantir que o processo seja reproduzível
- Demonstrar o funcionamento do ETL
- Implementar backup com:
- pgBackRest
- ou pgBarman
- pgBadger
- TemBoard
- Prometheus + Grafana
- Implementar monitoramento
- Gerar consultas mal otimizadas
- Demonstrar nos dashboards:
- Gargalos
- Alertas
- Problemas de performance
- Mostrar como o monitoramento auxilia na melhoria do banco
- Criar dashboards usando Apache Superset com dados do DW
- Todas as entregas devem ser feitas pelo GitHub
- Commits de cada aluno
- Clareza no histórico do repositório
- Um vídeo de ~10 minutos explicando o que desenvolveu