Saltar al contenido
← Volver al portafolio de Bruno Orozco

Proyecto personal · Python y datos · Versión inicial 0.1

Datos económicos trazables con Python: oecd-universe

Por Bruno Orozco Mejía · Revisión técnica del

Una muestra de código público para explorar cómo conservar el origen de los datos, transformar observaciones y consultarlas con SQL. El proyecto combina Python con Polars, Parquet y DuckDB; se encuentra en fase inicial y no se presenta como un sistema de producción ni como un producto oficial de la OECD.

El problema: poder explicar de dónde sale cada dato

Al reunir series económicas, guardar solamente el valor y el año pierde información útil: proveedor, conjunto de datos, unidad de medida y dimensiones propias de cada serie. También dificulta distinguir una descarga nueva de una anterior. Este repositorio separa los archivos originales, las observaciones normalizadas y la capa de consulta para que esa procedencia siga siendo revisable.

Mi formación es en Economía por la UNAM y mi experiencia profesional incluye procesos ETL con Python y desarrollo backend. Este caso es una muestra personal complementaria a esa experiencia laboral.

Cómo está organizado el flujo

  1. Descubrimiento y estimación: el catálogo y la política de sincronización delimitan qué adquirir antes de descargar observaciones.
  2. BRONZE — archivos de origen: los bytes se guardan con una ruta derivada de su hash SHA-256. Un manifiesto registra URL, fecha de recuperación, tamaño y checksum.
  3. SILVER — observaciones: Polars transforma las series de DBnomics en archivos Parquet de observaciones y de dimensiones asociadas.
  4. Consulta: DuckDB crea vistas sobre Parquet para explorar la información con SQL, sin copiar las observaciones a otra tabla materializada.

Tres decisiones que se pueden revisar en el código

1. Identificar el contenido por su hash

El registro de artefactos calcula SHA-256 antes de guardar los bytes. Si la ruta ya existe, comprueba su contenido; si los bytes cambian, se obtiene otra ruta. Esto permite conservar versiones distintas sin sobrescribir el archivo anterior. El hash identifica contenido: por sí solo no demuestra que los datos sean correctos ni que la fuente sea auténtica.

2. Conservar las dimensiones específicas

La normalización proyecta campos comunes, como país y frecuencia, a columnas. Además, conserva las dimensiones en una tabla puente y en JSON ordenado. Así, una dimensión particular de un conjunto no desaparece sólo porque no tenga una columna dedicada. Las consultas deben conservar el contexto del proveedor y del conjunto: un código idéntico no implica un significado igual.

3. Consultar los archivos sin duplicarlos en DuckDB

La capa de consulta usa vistas sobre los Parquet. Permite explorar observaciones de México con un filtro como WHERE ref_area = 'MEX'. Es una decisión de almacenamiento; aquí no se atribuyen mejoras de velocidad o ahorro porcentual que no se hayan medido.

Qué se verificó y cómo reproducirlo

La revisión del commit 9a2503a ejecutó la suite existente: 7 pruebas pasaron con Python 3.13.5. Entre sus casos están la conservación de artefactos, las dimensiones adicionales, identificadores reproducibles y una consulta de México en DuckDB.

git clone https://github.com/borozco-horus/oecd-universe.git
cd oecd-universe
git checkout 9a2503acb27cf91b0a6d594f4607716f5d0660da
uv run --frozen --extra dev pytest -q

Se necesita Git, uv y Python 3.12 o posterior. La primera ejecución instala dependencias. Los casos usan datos controlados: pasar estas pruebas no verifica una descarga completa de OECD/DBnomics, el rendimiento a escala ni la exactitud de una investigación económica. El README de esta versión describe el flujo de adquisición por separado.

Límites de esta versión

  • El repositorio contiene código y configuración; no incluye un universo de datos ya descargado ni un panel final listo para investigación.
  • La conversión de límites de períodos sólo materializa años gregorianos deterministas. Otros formatos de período conservan su etiqueta y pueden tener fechas nulas.
  • La adquisición normalizada usa DBnomics. Los datos relevantes para una investigación requieren contraste con la fuente oficial OECD antes de construir indicadores.
  • Este caso no acredita una certificación, experiencia laboral con DuckDB ni un despliegue de producción. Describe el código público y la comprobación local indicada.

Revisar el proyecto o conversar sobre backend

El repositorio público de oecd-universe permite revisar el código, las pruebas y la licencia MIT. Para conocer mi experiencia con Java/Spring Boot, Python, Kubernetes y Terraform, consulta mi perfil profesional o contáctame por correo.