Check this post in English 🇬🇧.
Recientemente, tuve el privilegio de conocer a David Gasquez y aprender sobre su proyecto, Datadex. Esta iniciativa recopila y comparte un catálogo de conjuntos de datos abiertos, haciéndolos accesibles para que cualquiera pueda analizarlos. Tras contribuir al proyecto, David y yo tuvimos varias discusiones sobre datos y cómo compartir fácilmente descubrimientos y análisis de conjuntos de datos públicos. David me presentó varias herramientas, incluyendo Evidence, que me di cuenta podía ser una manera fantástica de ir más allá de simplemente crear catálogos de datos abiertos y realmente compartir historias y conocimientos derivados de los datos.
Una de las ideas que más me gustó de Datadex fue cómo David logró automatizar la ingesta, transformación y publicación de datos abiertos sin gastar un solo euro. Utilizó GitHub Actions para automatizar workflows y Hugging Face para exponer los conjuntos de datos. Este concepto de crear un flujo de extremo a extremo — desde la ingesta hasta la visualización — sin coste y con capacidades de fácil compartición, me inspiró a comenzar un nuevo proof of concept usando Evidence. Antes de profundizar en los detalles, permítanme proporcionar un poco de contexto.
¿Qué es Evidence?
Evidence es un framework de JavaScript para crear aplicaciones de datos con Markdown y SQL. Puedes construir una aplicación web con componentes preexistentes como gráficos de barras y menús desplegables, e integrarlos usando SQL dentro de tu markdown. El resultado final es un sitio web estático que puede ser alojado en plataformas como Netlify o Vercel.
Las tres cosas que más me gustaron de Evidence son:
-
SQL Universal: Un motor de consulta impulsado por WebAssembly de DuckDB que te permite consultar diferentes fuentes de datos rápidamente y directamente desde tu navegador.
-
Sitio estático: Evidence genera un sitio estático ejecutando todas las consultas en tiempo de construcción, y almacena en caché los datos en archivos parquet que son consultados desde el navegador, lo cual es extremadamente rápido.
-
Páginas hechas con plantillas: Puedes generar páginas a partir de datos, por lo que un solo archivo markdown podría generar una página para cada categoría de datos (por ejemplo, cliente, ciudad, etc.).
Para este proyecto, opté por Evidence en lugar de otras opciones como Streamlit o Rill porque quería desplegar algo sin tener que configurar una máquina virtual en un proveedor de nube o usar los servicios en la nube de esas bibliotecas. Evidence fue el único que me ofreció esa posibilidad al desplegarse como un sitio web estático. También me gustó el hecho de que podía desarrollar la aplicación en Markdown y usar SQL para la preparación de datos.
Creo que Evidence es una excelente opción para analistas que no tienen habilidades en Python o para individuos como yo que prefieren no profundizar en el desarrollo frontend. Para crear aplicaciones más complejas, el desarrollador tiene la flexibilidad de mejorar su funcionalidad utilizando componentes personalizados a través de Svelte.
Caso de uso
Uno de mis hobbies favoritos es correr. Además de entrenar, me encanta participar en carreras para probar mi nivel de condición física actual y obtener esa descarga de adrenalina al correr junto a otros que comparten el mismo hobby. Vivo en la provincia de Cuenca, que alberga una serie de 26 carreras en diferentes pueblos de la región. El club de atletismo de mi pueblo organiza una de estas 26 carreras, y siempre están interesados en conocer las métricas y estadísticas de los participantes en cada carrera para ver si han mejorado en comparación con el año anterior. La empresa que proporciona los chips de cronometraje publica los tiempos finales, pero las estadísticas de participación no son públicas. Así que decidí desarrollar una aplicación que pudiera ayudar a todos los pueblos a acceder a las estadísticas de las carreras que organizan.
Con un script en Python, extraje datos en bruto del sitio web que publica los resultados, los transformé (en realidad, usar dbt para procesar un solo modelo no es necesario, ¿no?), y creé una base de datos DuckDB con los datos limpios. Puedes consultar los datos usando SQL aquí.
La base de datos es bastante pequeña, ocupando solo 3.26 MB, así que decidí publicarla directamente en GitHub porque:
- No se actualizaría muy frecuentemente (como máximo una vez a la semana).
- Solo se leería en tiempo de construcción para generar la capa de caché de Evidence.
- Permitía desplegar la aplicación sin necesidad de preparar los datos o ejecutar scripts.
Hay alternativas gratuitas para almacenar estas bases de datos, como Hugging Face (con 50GB de espacio efímero) o Motherduck (con 10GB de almacenamiento), que permitirían almacenar conjuntos de datos más grandes con una mayor frecuencia de actualización. Con el starter plan de Netlify, cualquier sitio web desarrollado con Evidence puede ser publicado de forma gratuita y bastante fácil (¡ten en cuenta el límite de 100GB de ancho de banda!). Si se necesitan actualizaciones de datos, estas pueden ser automatizadas con GitHub Actions, que incluyen 2000 minutos por mes de forma gratuita.
Todo lo necesario para generar la página web está almacenado en GitHub: consultas, archivos markdown y datos (como base de datos DuckDB). Gracias a las páginas con plantillas, pude generar una página para cada carrera con solo un archivo markdown. Los menús desplegables funcionan muy bien para filtrar los datos, y los usé para filtrar por categoría de edad.
Puedes encontrar la aplicación web aquí.
Conclusión
En mi último proyecto para visualizar datos de coches.net, extrañé la parte de compartir los resultados en una aplicación web. Claro, podrías descargar los datos localmente, configurar un servidor Dash en tu máquina y luego visualizar los datos. Pero seamos realistas, si realmente quieres que los datos sean utilizados y explorados, necesitas proporcionar una aplicación web para ello (ya sea a través de una herramienta de BI o una aplicación ad-hoc).
Con Evidence, es muy fácil crear productos de datos usando la versatilidad de DuckDB, la simplicidad de Markdown y el poder de SQL. ¡Y todo sin gastar un duro!
Puedes encontrar el código completo de la aplicación en GitHub. ¿Crees que Evidence fue una buena elección para este caso de uso? Me encantaría leer tus opiniones.
¡Nos vemos!