My current task is to produce a report on a collection of fairly large linear data set (ie where value 10 depends upon some average factors from 9 8 7 6 5 4 3 etc
The problem also is that this logic (lets call it moving average now) is not fixed and will most probably change. I need to not only generate a report in HTML but in Excel and perhaps email it to use automatically (so some of the variables will be relative, ie generate a report of last month for example)
So my question is should I use a reporting engine or not? (Jasper, Pentaho, Birt)
My drivers here are -The reporting logic will change, but it will be changed by the developers. It will be complex logic so it will be easiest done in code in Java. -The report has to be saved and emailed in excel format. -The reporting task will be huge (some thing where ETL might be helpful) -Future reporting requirements are not a consideration here, the system will go a rewrite if it needs to be generic and extend-able.
I could just create an entity called report, store its type (an enum) and the parameters list (from the restful URL) and other metardata (who created, what date etc, where to send, and relative parameters are stored) And then when some processing has been done, store it in DB, just to retrieve the processed data for controller to consume. It greatly simplifies the technologies involved (I use spring mvc and it should be enough with a little sprinkle of POI). But I wonder if using reporting engine would be simpler.
My experience with Jasper and Birt (and the commercial Windward Reports) is that they will not help you much with the number crunching part of the report; they are best suited to presenting data that you have already transformed into a suitable structure. Jasper, Birt and Windward Reports can easily handle running totals and averages, but any calculations more complex than that are a real pain (and may be impossible depending on your calculations). I am not familiar with Pentaho.
In your situation I would either implement the calcuations in custom Java code, or in an ETL process.
You could then use a reporting engine to present the results of the calculations in HTML and Excel formats. But if you don't have Jasper or Birt, etc, already integrated into your application then I wouldn't recommend adding one just for this. It would be quicker to manually write out the report data using JSP and POI respectively. Jasper and Birt reports are fairly easy to create, but only once you've got the reporting engine integrated properly!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With