Mariela Estefany Ramos Loza
Construimos un pipeline que procesa los viajes de Citi Bike de Nueva York de enero de 2024 y genera un dashboard público con las salidas por día, hora y estación. La ejecución publicada conservó 1 888 085 viajes válidos.
Carga con Python y DuckDB
Python descarga el ZIP mensual, extrae los CSV a un directorio temporal y carga en DuckDB el identificador del viaje, las fechas de inicio y término y la estación de salida. Los campos se leen como texto para que el modelo SQL controle cómo interpretar los valores inválidos. La tabla de origen se reconstruye en cada ejecución para evitar acumular filas al reprocesar el archivo. Fuente oficial de Citi Bike
Transformación y pruebas con dbt
El modelo de viajes convierte las fechas con try_cast. Si alguna fecha es ilegible, devuelve un valor nulo y la comparación entre fechas excluye esa fila. Después se eliminan los identificadores vacíos y se conserva una sola fila por viaje.
select * from typed where ride_id is not null and ended_at > started_at qualify row_number() over ( partition by ride_id order by started_at, ended_at, station ) = 1 El modelo de actividad agrupa las salidas por día, hora y estación. Los viajes válidos sin nombre de estación siguen contando en los totales por día y hora. El ranking usa las salidas con un nombre de estación. Las pruebas comprueban que haya datos, que los identificadores sean únicos, que las fechas estén presentes y que las duraciones sean positivas.
Despliegue automático
Cada cambio en la rama principal inicia GitHub Actions. El primer trabajo instala las dependencias y ejecuta el pipeline. El script llama a dbt build y se detiene si falla. Cuando la compilación y las pruebas terminan correctamente, el segundo trabajo publica el HTML en GitHub Pages. Ejecución exitosa
Reproducir el resultado
Desde la raíz del repositorio, con Python 3.12, ejecuta estos comandos.
python -m pip install -r requirements.txt python pipeline.py Abre site/index.html para ver las filas de origen, los viajes válidos, los descartes y los tres gráficos de actividad. Repositorio público · Dashboard publicado

