Skip to content

Ramiro-9/crypto-etl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto ETL

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.

Stack

  • 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

Características

  • 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

Pipelines

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

Endpoints

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

Instalación

Requisitos

  • Python 3.10+
  • PostgreSQL

Pasos

  1. Cloná el repositorio
git clone https://github.com/Ramiro-9/crypto-etl.git
cd crypto-etl
  1. Creá el entorno virtual y activalo
python -m venv venv
venv\Scripts\activate  # Windows
source venv/bin/activate  # Linux/Mac
  1. Instalá las dependencias
pip install -r requirements.txt
  1. Creá el archivo .env en 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
  1. Creá la base de datos crypto_etl en PostgreSQL

  2. Corré el servidor

python main.py

Las tablas se crean automáticamente al ejecutar el primer pipeline.

Documentación

Con el servidor corriendo, abrí en el navegador:

http://localhost:8000/docs

Estructura

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

About

Pipeline ETL de criptomonedas con múltiples fuentes, transformaciones automáticas, scheduler y API REST.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages