Pipeline ETL de criptomonedas construido en Python. Extrae datos desde múltiples fuentes, los transforma y los carga en PostgreSQL y archivos exportables. Incluye una API REST para disparar pipelines manualmente y un scheduler para ejecución automática.
- Python + FastAPI — servidor HTTP y Swagger
- PostgreSQL + SQLAlchemy — base de datos
- Pandas — transformación y limpieza de datos
- APScheduler — ejecución automática de pipelines
- CoinGecko API — fuente de datos de criptomonedas
- Extracción desde API externa, archivos CSV/Excel y PostgreSQL
- Limpieza automática — duplicados, nulls, tipos de datos
- Cálculo de métricas — dominancia de mercado, variación, spread, tendencia
- Carga en PostgreSQL y exportación a CSV y JSON
- API REST para disparar cualquier pipeline manualmente
- Scheduler automático — coins cada hora, historial cada 24hs
- Logging detallado en consola y archivo por cada ejecución
| Pipeline | Fuente | Destino | Frecuencia |
|---|---|---|---|
| Coins | CoinGecko API | PostgreSQL + CSV + JSON | Cada 1 hora |
| Historial | CoinGecko API | PostgreSQL + CSV | Cada 24 horas |
| CSV personalizado | Archivo CSV | PostgreSQL + CSV | Manual |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /health |
Estado del servidor |
| GET | /scheduler/status |
Jobs activos y próxima ejecución |
| POST | /pipeline/coins |
Ejecuta pipeline de precios actuales |
| POST | /pipeline/history |
Ejecuta pipeline histórico |
| POST | /pipeline/csv |
Carga un CSV a PostgreSQL |
| GET | /pipeline/outputs |
Lista archivos exportados |
- Python 3.10+
- PostgreSQL
- Cloná el repositorio
git clone https://github.com/Ramiro-9/crypto-etl.git
cd crypto-etl- Creá el entorno virtual y activalo
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac- Instalá las dependencias
pip install -r requirements.txt- Creá el archivo
.enven la raíz del proyecto
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=tu_password
DB_NAME=crypto_etl
API_PORT=8000-
Creá la base de datos
crypto_etlen PostgreSQL -
Corré el servidor
python main.pyLas tablas se crean automáticamente al ejecutar el primer pipeline.
Con el servidor corriendo, abrí en el navegador:
http://localhost:8000/docs
crypto-etl/
├── src/
│ ├── extractors/ # Extracción desde API, CSV y DB
│ ├── transformers/ # Limpieza y cálculo de métricas
│ ├── loaders/ # Carga a PostgreSQL y archivos
│ ├── pipeline/ # Orquestación de pipelines
│ ├── config.py # Variables de entorno
│ ├── logger.py # Configuración de logs
│ └── scheduler.py # Jobs automáticos
├── data/
│ ├── input/ # Archivos CSV de entrada
│ └── output/ # Archivos exportados
├── logs/ # Logs de ejecución
├── main.py
└── .env