سؤال

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!

نصائح أخرى

I've never used Birt, but I have used Jasper, and my one comment would be: using a reporting engine has a learning curve, and adds overhead of it's own. So if you're doing some one-off report, and if the actual report layout is fairly simple, you may not gain a lot from a reporting engine. But, on the flipside, Jasper IS really good at things like letting you write the logic once, then easily generate your report in multiple formats (including Excel).

If there's a strong requirement that the generated report "look pretty" and if it has a really complex layout, and if you need to generate lots of formats, then you may find the reporting engine valuable.

If you can justify spending a couple of hours on it, download Jasper (or Birt or whatever) and run through some of the tutorials / demos and get a feel for it. That'll probably be more valuable to you than all the comments you get here.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top