14.1 Pipelines

14.1.1 ¿Qué es un pipeline?

Llanamente es un secuencia de procesos y pasos analíticos aplicados a datos para un propósito particular.

Por ejemplo: * Obtener datos (e.g. a través de una encuesta y trabajo de campo) * Ordenar y limpiar tales datos (e.g. capturar las encuestas y producir una tabla de datos) * Explorar/Visualizar los datos de maneras que nos permitan encontrar ahí patrones * Generar modelos que permitan inferencias más informativas (e.g. una segmentación de las personas encuestadas) * Interpretar todos los resultados y presentarlos (e.g. reportes, infografías, dashboards)

14.1.2 Un ejemplo

Por ejemplo el gobierno de Inglaterra está utilizando R para generar reportes oficiales.

Ellos plantearon, un pipeline para generar reportes se ve más o menos así:

Esto generaba reportes poco reproducibles porque los pasos entre los Datos y los PDFs se generaban de manera manual, por ejemplo escribir y estructurar el reporte en word, lo cuál también con lleva costos elevados.

Por esto, el equipo encargado de esto se unió con desarroladores de software y con gente de DevOps (¿quién se acuerda qué hacía un DevOps?) con dos objetivos principales:

  • Our aim was to see if we could speed up production of the SFR, whilst maintaining the high standard of the publication and QA.
  • At any point in the future we should be able to look back at this work and be able to reproduce everything that we have done today

Ahí comentan que finalmente se decidieron por hacer esto en R pero que bien lo pudieron hacer en Python o en otro lenguaje de programación: the techniques we outline below are language agnostic.

  • Control de versiones
  • Empaquetar código
  • Procedural programming y unit testing
  • Automated Testing
  • Code coverage
  • Manejo de dependencias
  • Verificación de problemas en datos
  • Producir la publicación (reporte)

Lograr un buen balance: Aunque esta manera de trabajar es increíblemente poderosa, no se debe de tomar como la panacea para todos los contextos de producción de reportes, existe un balance que se debe lograr entre los objetivos en cuestión, el grado de automatización que se desea y la dificultad y costos de mantenimiento. Dejando eso dicho, implementar al menos algunos de las cosas anteriores con seguridad trae consigo mejoras en auditabilidad, velocidad, calidad y transferencia de conocimiento.

Formen equipos de 3 y bosquejen un pipeline de algun proyecto que ya estén trabajando o uno hipotético.

14.1.3 Muchos pipelines

En la Dirección General de Proyectos Interinstitucionales conviven varios pipelines de diversas naturalezas:

  • Recibir, ordenar, limpiar y gestionar datos
  • Analizar datos
  • Presentar y diseminar datos

(Recordar primera clase)

Aquí pueden consultar una página con las etapas finales de estas pipeplines (presentación y consulta de datos).