Unconventional statistical tasks are not uncommon in creating reports with reporting tools like Jasper and BIRT. One of the cases is to display the result of certain comparisons between the current record and the next/previous record. It is difficult to handle it using only the reporting tool or the SQL. Yet esProc can assist the handling thanks to its powerful computing engine for processing structured data and the feature of being integration-friendly. An example will be cited to explain the esProc method of doing it.
esProc code for handling it:
A1: Execute the SQL statement to calculate sales amount of each month in a certain year and to sort them by the month.theYear is a parameter passed from the report. The result is as follows:
A2:=A1.derive((amount-amount[-1])/amount[-1]:LRR)
Append a field to A1’s table and compute the link relative ratio for the current month. esProc uses amount[-1] to reference the previous record. The result is as follows:
A3=A2.sort(-amount)
This line of code sorts A2’s table by amount field in descending order.
A4=A3.derive(amount-amount[1]:DIFF)
This line calculates differences between rankings. esProc uses amount[1] to reference the next record. A4’s result is what the report needs:
result A4
This line returns A4’s table to the reporting tool. esProc provides JDBC interface for integrating with the reporting tool that will identify esProc as a database. See related documents for the integration solution.
Define a parameter – pthisYear – in the report to correspond to its counterpart in the esProc script. Click on Preview to see the final report:
The reporting tool calls the esProc script in the same way as that in which it calls the stored procedure. Save the esProc script as, say crossrow.dfx, to be called by call crossrow($P{pthisYear}) in JasperReports SQL designer.
No comments:
Post a Comment