AyuntamientoMadrid / transparencia

http://transparencia.madrid.es/
GNU Affero General Public License v3.0
53 stars 24 forks source link

Datos abiertos #9

Open voodoorai2000 opened 8 years ago

voodoorai2000 commented 8 years ago

Objetivo

La página deberá ser capaz de importar datos en forma tabular originados de excel/csv.

Notas:

Extras:

http://opendata.aragon.es/ http://ckan.org/

Datos:

http://datos.madrid.es/portal/site/egob/

ianvatega commented 8 years ago

Referencias sobre transparencia

voodoorai2000 commented 8 years ago

Gracias por los videos @ianvatega! La interfaz de Zaragoza esta genial!

dgilperez commented 8 years ago

Buenos días!

Esta tarea me parece muy interesante!

Me gustaría poder colaborar, pero estoy en remoto. ¿Hay algún equipo ya con esto?

voodoorai2000 commented 8 years ago

Grande @dgilperez! Toda tuya :)

dgilperez commented 8 years ago

Ole, toda entera para mi? :smile:

Pues le voy a dar una vuelta a las referencias y vuelvo por aquí con ideas. Tengo ya algunas dudas sobre el alcance, pero prefiero estudiar y volver en un ratito con ellas.

Parece efectivamente una tarea clara para sacar una gema independiente. ¿Propuesta de nombres? ¿Tin-opener, por aquello de abrir latas de datos ;)?

voodoorai2000 commented 8 years ago

Genial! +1 tin-opener

dgilperez commented 8 years ago

@voodoorai2000 estaba revisando las referencias que citas y me surgen dudas, quizás porque no estoy allí con vosotros:

Aparte de esto, dudas y consideraciones sobre alcance:

Me voy a comer, a la vuelta arranco motores :+1:

kikito commented 8 years ago

Esta sería: estructura de cabeceras, ¿y qué más?

Pues en principio eso es lo que necesita. Eso y un nombre. Sugiero estudiar el nombre DataSet más que DataType (DataSet has_many :records?)

Para almacenar los datos, ¿estamos hablando de almacenar cada dato (cada columna de cada excel de cada tipo) en entradas independientes de DB, o simplemente almacenamos el CSV / Excel en un Posgresql usando hstore, o incluso el fichero en S3 / similar? Evidentemente lo primero permitiría mejorar la visualización o procesado, pero no sé si este es el alcance buscado.

Lo que yo había pensado era tener una instancia de record por "fila del excel", utilizando hstore para los "valores de los campos de la fila". Así podríamos hacer manejo básico de datos en la tabla (tipo: ordenar o filtrar). Si tuviéramos libertad para poder elegir la tecnología, para este punto a lo mejor habría buscado algo nosql para esto (Mongo). Pero tenemos la limitación de usar postgres, y hstore es un poco el "nosql para postgres". Aun así estamos abiertos a sugerencias. Pero sí, el requerimiento de "poder mostrar y filtrar" nos lo han dado.

entendemos "encuesta semanal de calidad de vida, semana 43 2015, CSV", o entendemos "fila uno de la encuesta [...]".

Lo segundo ("fila uno de la encuesta").

me despista el requerimiento "Si se importan datos de tipos ya existentes, la página debe chequear que las columnas de los nuevos datos coinciden con las existentes".

El escenario es: subo un nuevo fichero con las columnas "nombre, edad y salario" y lo meto en un nuevo dataset llamado "Personas". Luego subo un segundo fichero, lo asocio al dataset existente ("Personas") pero las columnas del nuevo fichero son "nombre, sexo y salario". El programa debe dar un error y decir "el dataset Personas" tiene la columna edad y no tiene la columna sexo".

Esta gema tiene toda la pinta de ser una Rails Engine, montable en alguna ruta concreta, y que ofrezca una API para cargar, procesar y almacenar los datos. ¿Estamos de acuerdo?

Totalmente de acuerdo :+1:

voodoorai2000 commented 8 years ago

CKAN lo tenemos en el radar y nos gusta mucho. Si se pudiera utilizar sería genial. Parece que hay una gema en Ruby https://github.com/apohllo/CKAN

kikito commented 8 years ago

Sobre CKAN: aunque haya una gema de ruby para leer de CKAN, tendríamos que tener una instalación de CKAN en los servidores del ayuntamiento. Y alguien tendría que mantenerla etc.

Aunque CKAN esté muy bien, creo que si asumimos que lo podemos utilizar, puede que luego lo tengamos que echar para atrás.

dgilperez commented 8 years ago

Aquí os dejo puntero a una primerísima y completamente work-in-progress versión de lo que queremos hacer en esta tarea:

https://github.com/dgilperez/tin_opener

Instrucciones de montaje en el README.

Mañana podré echarle otro rato, a ver si conseguimos dejarlo usable para esta primera versión. Si tenéis algún comentario ya (insisto, WIP), muy bienvenido.

voodoorai2000 commented 8 years ago

Espectacular @dgilperez! :open_mouth: :clap::clap::clap:

Yo seguiría con unos buenos specs y una rake para parsear unos cuantos data sets. Igual la rake ya tendría que ser parte del proyecto de transparencia en sí.

dgilperez commented 8 years ago

Sí, aún tengo que investigar cómo montar los specs en un engine, en una horita o así estaré con ello.

No había pensado en la rake, me parece buena idea. De fuente de datos, todos los CSV de un directorio, por ejemplo, o fichero a fichero? O quizás una URL? Si se hace genérica, puede pertenecer a la gema, y luego montar en el proyecto una tarea que la herede o incluya.

También falta que la interfaz ofrezca la posibilidad de reutilizar un dataset, o crear uno nuevo, creo que eso sale hoy.

¿Hay plan de usarlo para parsear datos para el proyecto hoy? Lo digo por mandar una PR y testar con esas fuentes de datos.

kikito commented 8 years ago

Hola,

He echado un vistazo a tin_opener y tiene buena pinta!

No creo que haga falta utilizarlo para para parsear datos hoy - pero se puede meter para probar.