Este projeto implementa um pipeline ETL (Extract, Transform, Load) que coleta dados históricos do Bitcoin em intervalos de 15 minutos. Os dados são inicialmente armazenados em um banco NoSQL (TinyDB) e posteriormente migrados para um banco PostgreSQL hospedado no Render. A visualização dos dados é feita através de um dashboard no Streamlit.
- Python 3.x
- Requests (para chamadas API)
- TinyDB (banco NoSQL local)
- PostgreSQL (banco de dados final)
- Streamlit (dashboard)
- Render (hospedagem do banco PostgreSQL)
- Extração de dados do Bitcoin a cada 15 minutos
- Armazenamento temporário em TinyDB
- Migração automática para PostgreSQL
- Dashboard interativo com Streamlit
- Histórico de preços do Bitcoin
- Análises estatísticas básicas
pip install requests tinydb psycopg2-binary streamlit python-dotenv
-
Clone o repositório git clone https://github.com/seu-usuario/bitcoin-etl.git cd bitcoin-etl
-
Configure as variáveis de ambiente (.env) DATABASE_URL=sua_url_do_render_postgres API_KEY=sua_chave_api_se_necessario
python etl_pipeline.py
streamlit run dashboard.py
bitcoin-etl/ ├── etl_pipeline.py # Script principal do ETL ├── database.py # Configurações dos bancos de dados ├── api_handler.py # Gerenciamento de chamadas API ├── dashboard.py # Interface Streamlit ├── .env # Variáveis de ambiente └── README.md
- Extração: Coleta de dados via API a cada 15 minutos
- Transformação: Limpeza e formatação dos dados
- Carga:
- Armazenamento inicial em TinyDB
- Migração para PostgreSQL no Render
- Visualização: Dashboard Streamlit
- Logs de execução do ETL
- Métricas de sucesso/falha das extrações
- Monitoramento de latência do banco de dados
- O pipeline está configurado para executar a cada 15 minutos
- Os dados históricos são mantidos no PostgreSQL
- O dashboard atualiza automaticamente com novos dados
Sinta-se à vontade para contribuir com o projeto:
- Faça um Fork
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Breno Teodomiro - [[email protected]]