I am working on a reporting tool called Ruport. It is open source / free software. It is in Ruby. It is designed to allow people to do "reporting" by dumping data and having it summarize it rather than writing tricky sql to do the same. It is at the 0.50 stage and now there are two branches, a stable branch and a development branch. It is still VERY much in development. We have three developers now. I pay one, the others are volunteers.
I would like some input into what you think tricky sql is, that ruport could do. Some of my ideas for things I find sql either a pain to do or inefficient to do are:
a. aging reports
b. getting running balance columns
c. difference reports (i.e. you print a report that lists deliquent accounts; but you have one from last week. You want to know which ones on the report were not on the report last week.)
d. summary reports, i.e. you dump a list of sales, and ruport can produce a summary of those sales by month
e. when you want the minimum value of a column in a table, and the rest of values for the fields of that row
Some features or Ruport:
1. pulling data from more than one source - i.e. from sql, from mysql, from a .csv file
2. we can graph pretty easily
3. we do html, pdf, e-mail, and .csv easily
4. plugin for active record / rudimentary support for rails
Here is an open thread where I am exploring the limits of sql using some reporting examples that I need to do:
So, in summary, can you (A) help me define what is commonly needed in reporting (cause we have to be able to generalize it) that is hard to do in sql?
Also, I realize that dumping data to Ruport and calculating will break down if someone thinks they are going to dump 1,000,000 rows and tell it to add.
It is used right now on files that are within the 20,000 - 50,000 range and runs within a minute I think (much faster on 'nix than 'indows)
So what is a reasonable requirement here? We are thinking of at some point dumping into a database, rather than a .csv file and writing
the summary features to take advantage of the speed of a database, which we will never match in Ruby.