We’ve been collecting user data on our site for a while and now we’d like to present the data in an accessible way.
We have a database full of data, we’re just looking for a framework that we can dump all our data into and be able to visualize it.
Some requirements:
- Must be able to sort & filter by multiple dimensions (eg: by user, by action type, by date, by meta data)
- Must be able to export views of data into csv/xml files
- Must be presented through a web interface (no desktop applications)
- Should be usable with either Scala, Java, Python or Ruby
We’ve looked at using Vaadin, and we enjoy the amount of control we can have, but I’d like to explore other potential solutions.
Are there any suggestions for frameworks that might help us display our statistics?
I’m having a lot of joy working with google visualisations and the java library that google provides. I even wrote an adaptor for it – in Scala – to work with LucidDb, as the DB adaptor supplied by default is for MySQL only.
The motion chart in particular is a thing of great beauty.
update
Lucid is a great way to deal with masses of data, happily working with sizes in excess of 1Tb. It’s column-oriented (like vertica or SybaseIQ), so you won’t incur the I/O cost of fetching entire rows of data just to select a couple of columns.
Also useful is the fact that Lucid is queryable via SQL and has a jdbc client driver, coupled with the google visualisation Java library, this is an ideal match, with the library able to translate most of its own query format to SQL, so minimizing the amount of processing it has to do post-query.
I’m running this inside the Scalate framework, building all the javascript to show the charts dynamically. This way I can easily change query params based on other controls in the page and push the new data into the chart without needing a page reload. Depending on how heavyweight your site will be, Lift might be a better fit for you.
The whole thing took me about a week to set up, though I did have previous experience of working with the google library.