Adrián López Rendón · proyectos

Pipeline DLT de Open Library

300 words 2 min read #Ingeniería de Datos#DuckDB#dlt#Python

Un pipeline ELT para centralizar datos bibliográficos de la API pública de Open Library en una base de datos analítica local, permitiendo exploración estructurada de metadata de libros y autores para apoyar decisiones basadas en datos y su consumo analítico posterior.

Arquitectura y Stack

  • Ingesta → Fuente de API REST de dlt con rest_api_resources()
  • Almacenamiento → DuckDB (base de datos analítica embebida, basada en archivo)
  • Transformación y Consultas → Capa de abstracción SQL de Ibis
  • Visualización → Altair dentro de un notebook interactivo de Marimo
  • Entornouv con un lock file determinista

Logros Técnicos Clave

Ingesta declarativa de API REST — Se configuró una fuente de API REST de dlt usando @dlt.source y rest_api_resources(), con una disposición de escritura replace que garantiza cargas idempotentes de refresco completo e inferencia automática de esquema a partir de respuestas JSON anidadas (por ejemplo, la tabla hija books__authors autogenerada por dlt).

Aislamiento de dependencias y herramientas modernas — Dependencias del proyecto declaradas en pyproject.toml y bloqueadas con uv.lock vía uv, asegurando entornos completamente reproducibles. Los secretos y la configuración en tiempo de ejecución se aíslan en .dlt/secrets.toml y .dlt/config.toml (excluidos del control de versiones), siguiendo buenas prácticas de seguridad para el manejo de credenciales.

Capa de consultas estructurada — Las respuestas crudas anidadas de la API son normalizadas por dlt en tablas relacionales de DuckDB (books, books__authors). Una capa de consultas Ibis se sitúa encima para realizar agregaciones a nivel autor (conteo de libros por autor, ranking top-10), desacoplando el almacenamiento crudo del consumo analítico y proporcionando una abstracción SQL reutilizable lista para evolucionar hacia un modelo dimensional.

Repositorio

github.com/sargent-mg/open-library-dlt-pipeline