JasperReports এ Crosstab রিপোর্টিং একটি শক্তিশালী ফিচার যা আপনাকে ডেটাকে সারি এবং কলাম আকারে বিশ্লেষণ করতে সহায়তা করে। Crosstab রিপোর্টের মাধ্যমে আপনি summarization এবং aggregation করতে পারেন, যেমন: সেলগুলির মধ্যে মোট, গড়, গড় মান, সর্বোচ্চ, সর্বনিম্ন, ইত্যাদি গণনা।
এই ধরনের রিপোর্ট সাধারণত ব্যবহৃত হয় যখন আপনাকে একটি matrix-style report তৈরি করতে হয় যেখানে ডেটা একটি সারণি আকারে সংগঠিত হয় এবং কিছু নির্দিষ্ট ফিচার যেমন total, average, count ইত্যাদি গণনা করা হয়।
Crosstab রিপোর্টের বৈশিষ্ট্য
- Row Grouping: Crosstab রিপোর্টে আপনি একটি row group তৈরি করতে পারেন, যা সারণির সারিতে ব্যবহৃত হবে।
- Column Grouping: Column group ডেটাকে কলামে গ্রুপ করে।
- Aggregation: আপনি summarization বা aggregation functions যেমন
sum,average,min,maxইত্যাদি ব্যবহার করতে পারেন। - Measure: এটি সংখ্যাসূচক ডেটা মাপার জন্য ব্যবহৃত হয় এবং এটি aggregation functions দ্বারা গণনা করা হয়।
Crosstab এ Summarization এবং Aggregation উদাহরণ
ধরা যাক, আমরা একটি sales report তৈরি করতে যাচ্ছি যেখানে বিভিন্ন sales representative এবং তাদের monthly sales হিসাব করা হবে। আমরা crosstab রিপোর্টে total sales এবং average sales গণনা করতে চাই।
ধাপ ১: Employee Sales Model তৈরি করা
প্রথমে, আমরা একটি SalesData ক্লাস তৈরি করবো যেখানে প্রতিটি sales representative এর জন্য monthly sales থাকবে।
public class SalesData {
private String employeeName;
private String month;
private double sales;
public SalesData(String employeeName, String month, double sales) {
this.employeeName = employeeName;
this.month = month;
this.sales = sales;
}
// Getters
public String getEmployeeName() {
return employeeName;
}
public String getMonth() {
return month;
}
public double getSales() {
return sales;
}
}
ধাপ ২: Crosstab রিপোর্ট তৈরি করা
এখন আমরা JasperReports এর Crosstab ফিচার ব্যবহার করে একটি রিপোর্ট তৈরি করবো। এখানে Employee Name এবং Month কলামে এবং সেলে Sales Amount এর aggregation করা হবে।
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="SalesCrosstabReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Fields -->
<field name="employeeName" class="java.lang.String"/>
<field name="month" class="java.lang.String"/>
<field name="sales" class="java.lang.Double"/>
<!-- Crosstab Setup -->
<crosstab>
<!-- Row Groups -->
<rowGroup name="EmployeeNameGroup">
<bucketExpression><![CDATA[$F{employeeName}]]></bucketExpression>
</rowGroup>
<!-- Column Groups -->
<columnGroup name="MonthGroup">
<bucketExpression><![CDATA[$F{month}]]></bucketExpression>
</columnGroup>
<!-- Measures (Sales) -->
<measure name="TotalSales">
<measureExpression><![CDATA[$F{sales}]]></measureExpression>
<aggregationFunction>Sum</aggregationFunction> <!-- Summarization: Sum -->
</measure>
<measure name="AverageSales">
<measureExpression><![CDATA[$F{sales}]]></measureExpression>
<aggregationFunction>Average</aggregationFunction> <!-- Summarization: Average -->
</measure>
<!-- Data Table -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="50" height="20"/>
<textFieldExpression><![CDATA[$F{employeeName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="60" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{month}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{sales}]]></textFieldExpression>
</textField>
</band>
</detail>
</crosstab>
</jasperReport>
ব্যাখ্যা:
- Row Group: এখানে আমরা
employeeNameকে row group হিসেবে ব্যবহার করেছি, যাতে প্রতিটি employee এর জন্য একটি সারি তৈরি হবে। - Column Group:
monthকে column group হিসেবে ব্যবহার করেছি, যাতে প্রতিটি month এর জন্য একটি কলাম তৈরি হবে। - Measures:
- TotalSales: সেলগুলির জন্য
Sumaggregation function ব্যবহার করা হয়েছে, যা monthly sales এর মোট যোগফল দেবে। - AverageSales: সেলগুলির জন্য
Averageaggregation function ব্যবহার করা হয়েছে, যা monthly sales এর গড় মান বের করবে।
- TotalSales: সেলগুলির জন্য
ধাপ ৩: Java কোড দিয়ে Crosstab রিপোর্ট তৈরি এবং Exports করা
এখন, Java কোড দিয়ে রিপোর্টটি তৈরি এবং পূর্ণ করতে হবে। আমরা JasperReports API ব্যবহার করে রিপোর্ট তৈরি করব এবং তারপরে PDF, Excel, CSV ফরম্যাটে এক্সপোর্ট করব।
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JasperReportsCrosstabExample {
public static void main(String[] args) {
try {
// Sample Sales Data
List<SalesData> salesDataList = new ArrayList<>();
salesDataList.add(new SalesData("John Doe", "January", 5000));
salesDataList.add(new SalesData("John Doe", "February", 4500));
salesDataList.add(new SalesData("Jane Smith", "January", 6000));
salesDataList.add(new SalesData("Jane Smith", "February", 7000));
// JRBeanCollectionDataSource for Sales Data
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(salesDataList);
// Compile the .jrxml file into a JasperReport
JasperReport jasperReport = JasperCompileManager.compileReport("SalesCrosstabReport.jrxml");
// Parameters for the report
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Crosstab Report");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "SalesCrosstabReport.pdf");
// Export the report to Excel (XLS)
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "SalesCrosstabReport.xls");
xlsExporter.exportReport();
// Export the report to CSV
JasperExportManager.exportReportToCsvFile(jasperPrint, "SalesCrosstabReport.csv");
System.out.println("Crosstab Report Generated Successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
ধাপ ৪: Output এবং Exports
- PDF:
SalesCrosstabReport.pdfফাইল তৈরি হবে, যেখানে Total Sales এবং Average Sales প্রতিটি Employee এবং Month এর জন্য গণনা করা হবে। - Excel (XLS):
SalesCrosstabReport.xlsফাইলটি Excel এ ওপেন করা যাবে। - CSV:
SalesCrosstabReport.csvফাইলটি CSV ফরম্যাটে এক্সপোর্ট করা হবে।
Crosstab Report Output Example:
EmployeeName January February TotalSales AverageSales
---------------------------------------------------------------
John Doe 5000 4500 9500 4750
Jane Smith 6000 7000 13000 6500
- Crosstab রিপোর্ট ব্যবহার করে আপনি একাধিক মাত্রায় summarization এবং aggregation করতে পারেন।
- Aggregation functions যেমন sum, average, min, max, ইত্যাদি ব্যবহার করে রিপোর্টের সেলগুলির মান কাস্টমাইজ করতে পারেন।
- JasperReports আপনাকে multiple output formats (PDF, Excel, CSV) এ রিপোর্ট এক্সপোর্ট করার সুবিধা দেয়, যা ব্যবসায়িক বিশ্লেষণ এবং ডেটা প্রক্রিয়াকরণের জন্য গুরুত্বপূর্ণ।
Read more