Confome avanzan nuestros proyectos, va aumentando el volumen y calidad de la información subida por los usuarios desde sus dispositivos Android. Toda esta información se va agregando en la nube y poquito a poco vamos entrando en una nueva etapa en la que el data mining va cobrando más importancia. De momento, tenemos claros ciertos tipos de informes y gráficas imprescindibles para nuestro negocio, pero las posibilidades de jugar con los datos son enormes y, por eso, necesitábamos un modelo que nos permitiera diseñar de forma ágil prototipos funcionales para ser mostrados y estudiados por nuestro equipo, clientes y colaboradores.
Es necesario explicar que, aunque ya tenemos varios agregados e informes mostrados en la propia nube, también descargamos y desnormalizamos los datos sobre una MySQLinstalada en un servidor local, ya que, las posibilidades de "retorcer" los datos en una base de datos relacional son mucho mayores que en un sistema como Big Table . Por tanto, llegados a este punto, contamos con un servidor local, una base de datos MySQL y un equipo de ingenieros preparados para torturar a los datos con las más despiadadas queries.
Una vez obtenida la información que pensamos que interesa a nuestros usuarios, las posibilidades de representarla son muchas, existiendo innumerables librerías Javascript para mostrar tablas y gráficos, (o incluso empresas ofreciendo herramientas SaaS muy potentes). El problema es que todas ellas requieren preparar los datos con un formato concreto y cierto trabajo de programación y maquetación para integrarlas en una web. En nuestro caso, pensamos que es pronto para emplear tiempo en ese tipo de tareas, puesto que no estamos seguros de qué tipo de representaciones van a ser valiosas y cuáles no. Aquí es donde entra en juego una gran idea de nuestro CEO: tanto Google Spreadsheets como Fusion Tables permiten importar datos desde CSV y la generación de listados, figuras y gráficas es potente y muy sencilla.
Las ventajas son muchas:
- Ambas herramientas permiten importar los datos desde CSV. Y cualquier cliente SQL permite exportar los resultados de una query en dicho formato, por lo que la tarea de formato de datos estaría resuelta.
- Ambas permiten generar automáticamente un script para incrustar los datos en cualquier web.
- Los datos generados en el prototipo, aunque estáticos, son reales. Y su actualización (manualmente o usando las APIs proporcionadas) sería muy sencilla. Tan fácil como ejecutar de nuevo la consulta y exportar el CSV.
¿Qué usamos entonces para tener listo un conjunto de listados y gráficos demo con información real?
- Google App Engine con Django: La facilidad de despliegue de una nueva aplicación en el GAE unida a la rapidez de desarrollo en Django nos permitieron montar la estructura de navegación del nuevo portal en una sola mañana (reutilizando plantillas y diseños que ya teníamos).
- Listados y gráficas: Una vez obtenida la consulta sql con los datos que nos interesaban, la exportamos a CSV y la importamos en una de las dos herramientas comentadas:
- Google Spreadsheets: una vez importado el CSV y obtenida la URL, podemos hacer uso de los múltiples google gadgets disponibles para incrustar en nuestras webs. Por ejemplo, tablas, gráficos de líneas o de tarta.
- Fusion Tables: una vez importado el CSV y obtenida la URL, podemos probar los distintos tipos de visualizaiones a partir del menú Visualize. Las opciones son variadas y potentes. Alguna de ellas bastante espectacular (Motion, Timeline, Story Line...).
Normalmente utilizamos Balsamiq para proptotipar y hacer pruebas de usabilidad en la fase de diseño, pero en este caso necesitábamos algo más real. Con todo lo anterior, en muy poco tiempo, logramos desplegar un prototipo operativo que permite mostrar el potencial de los datos recogidos y experimentar con distintas formas de mostrar la información. ¿Qué ventajas e inconvenientes le veis? ¿Qué alternativas usáis vosotros para esta tarea?