Crosstab হল একটি শক্তিশালী রিপোর্ট ডিজাইন টুল যা মূলত ডেটার সমষ্টি এবং বিশ্লেষণ করার জন্য ব্যবহৃত হয়, বিশেষত যখন ডেটাকে রো (row) এবং কলাম (column) আকারে উপস্থাপন করতে হয়। Crosstab একটি টেবিলের মতো, যেখানে একটি ডেটা গ্রুপের উপর ভিত্তি করে বিভিন্ন মানকে রো এবং কলাম হিসেবে সংগঠিত করা হয়, যা বিশ্লেষণ করতে সহায়ক।
JasperReports এ Crosstab রিপোর্ট তৈরি করতে আপনি Crosstab Data Structure ব্যবহার করতে পারেন। Crosstab রিপোর্টগুলি সাধারণত পিভট টেবিলের মতো কাজ করে, যেখানে একটি কাস্টম ডেটা সেট বা গ্রুপিং এর ভিত্তিতে গণনা বা সারণী তৈরি করা হয়।
Crosstab Data Structure:
Crosstab মূলত ডেটার একটি টেবিল বা গ্রিড ফরম্যাটে উপস্থাপনা যা দুইটি প্রধান অংশে বিভক্ত:
- Row Groups: যেগুলি রো (row) আকারে রিপোর্টের এক্সিস (axis) হিসেবে কাজ করে। প্রতিটি গ্রুপের জন্য একটি রো তৈরি হয়।
- Column Groups: যেগুলি কলাম (column) আকারে কাজ করে। প্রতিটি গ্রুপের জন্য একটি কলাম তৈরি হয়।
- Measure: এটি হল সেই ক্ষেত্র যেখানে ডেটার মান উপস্থাপন করা হয়, যেমন সেলস, কোয়ান্টিটি, অথবা অন্য কোন সংখ্যা।
Crosstab Configuration in JasperReports
JasperReports-এ Crosstab তৈরি করতে দুটি প্রধান অংশের উপর কাজ করতে হয়:
- Crosstab Data Source: যেখান থেকে ডেটা পাওয়া যাবে।
- Crosstab Components: যেখানে আপনি রো, কলাম, এবং সেল ডিজাইন করবেন।
Crosstab উদাহরণ:
ধরা যাক, আপনি একটি Sales Report তৈরি করতে চান যেখানে Products কে Months এর সাথে ক্রসট্যাব ফরম্যাটে দেখানো হবে এবং প্রতিটি মাসের জন্য মোট Sales প্রদর্শিত হবে।
ধাপ ১: Crosstab Report Structure ডিজাইন করা
<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="SalesCrosstab" pageWidth="595" pageHeight="842" columnWidth="515"
leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<!-- Define Fields -->
<field name="product" class="java.lang.String"/>
<field name="month" class="java.lang.String"/>
<field name="salesAmount" class="java.lang.Double"/>
<!-- Crosstab Design -->
<crosstab>
<crosstabRowGroup name="Product Group" width="200">
<groupExpression><![CDATA[$F{product}]]></groupExpression>
</crosstabRowGroup>
<crosstabColumnGroup name="Month Group" width="100">
<groupExpression><![CDATA[$F{month}]]></groupExpression>
</crosstabColumnGroup>
<crosstabMeasure name="Sales" width="100">
<measureExpression><![CDATA[$F{salesAmount}]]></measureExpression>
<calculation><![CDATA[Sum]]></calculation>
</crosstabMeasure>
</crosstab>
<!-- Detail Section -->
<detail>
<band height="100">
<textField>
<reportElement x="0" y="0" width="200" height="30"/>
<textFieldExpression><![CDATA[$F{product}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="30"/>
<textFieldExpression><![CDATA[$F{month}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="300" y="0" width="100" height="30"/>
<textFieldExpression><![CDATA[$F{salesAmount}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Crosstab Configuration Explanation:
- Row Group (
<crosstabRowGroup>): এখানেproductফিল্ডটি ব্যবহার করে প্রতিটি পণ্যকে একটি রো হিসাবে গ্রুপ করা হয়েছে। - Column Group (
<crosstabColumnGroup>): এখানেmonthফিল্ডটি ব্যবহার করে প্রতিটি মাসকে একটি কলাম হিসেবে গ্রুপ করা হয়েছে। - Measure (
<crosstabMeasure>): এখানেsalesAmountফিল্ডটি ব্যবহৃত হয়েছে, এবং এর উপর Sum ক্যালকুলেশন প্রয়োগ করা হয়েছে যাতে প্রতিটি মাসের জন্য টোটাল সেলস দেখানো যায়।
ধাপ ২: Report Fill and Export
এখন, JasperReports এর মাধ্যমে রিপোর্টটি ফিল করার জন্য ডেটা সোর্স এবং প্যারামিটার ব্যবহার করতে হবে। ডেটাবেস বা কলেকশন থেকে ডেটা ব্যবহার করা যেতে পারে।
Java কোড উদাহরণ:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class CrosstabReportGenerator {
public static void main(String[] args) {
try {
// Compile the .jrxml file to JasperReport object
JasperReport jasperReport = JasperCompileManager.compileReport("SalesCrosstab.jrxml");
// Sample data for crosstab (Product, Month, and Sales Amount)
List<SalesData> data = getSalesData();
// Create JRBeanCollectionDataSource
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(data);
// Fill the report with data
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Crosstab Report");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "SalesCrosstabReport.pdf");
System.out.println("Report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
// Sample data method
private static List<SalesData> getSalesData() {
List<SalesData> data = new ArrayList<>();
data.add(new SalesData("Product A", "January", 1000.0));
data.add(new SalesData("Product A", "February", 1200.0));
data.add(new SalesData("Product B", "January", 800.0));
data.add(new SalesData("Product B", "February", 1100.0));
return data;
}
}
// Sample SalesData class
class SalesData {
private String product;
private String month;
private Double salesAmount;
public SalesData(String product, String month, Double salesAmount) {
this.product = product;
this.month = month;
this.salesAmount = salesAmount;
}
public String getProduct() {
return product;
}
public String getMonth() {
return month;
}
public Double getSalesAmount() {
return salesAmount;
}
}
Crosstab Report Output (PDF):
- Columns: মাসগুলির উপর ভিত্তি করে (যেমন জানুয়ারি, ফেব্রুয়ারি)।
- Rows: পণ্যের নাম (যেমন Product A, Product B)।
- Data: টোটাল সেলস (Sum of Sales Amount)।
Crosstab Data Structure ব্যবহার করার সুবিধা
- Pivot Table: Crosstab রিপোর্ট ব্যবহার করে আপনি সহজেই পিভট টেবিল তৈরি করতে পারেন, যা গ্রুপড এবং অ্যাগ্রিগেটেড ডেটা দেখাতে সহায়ক।
- Data Summarization: এটি ডেটাকে সহজে সারাংশ এবং বিশ্লেষণ করতে সহায়ক, যেমন টোটাল সেলস বা অন্যান্য পরিসংখ্যান।
- Multi-dimensional Analysis: Crosstab রিপোর্ট ব্যবহার করে আপনি একাধিক ডাইমেনশন (যেমন পণ্য, মাস, অঞ্চল) অনুযায়ী ডেটা বিশ্লেষণ করতে পারেন।
JasperReports-এ Crosstab ব্যবহার করার মাধ্যমে আপনি ডেটা বিশ্লেষণ, সারাংশ এবং পিভট টেবিল তৈরি করতে পারেন। Crosstab Data Structure মূলত Row Groups, Column Groups, এবং Measures থেকে তৈরি হয়। এটি ডাইনামিক রিপোর্ট তৈরি করতে সহায়ক, যেখানে একাধিক ডাইমেনশনে ডেটা বিশ্লেষণ করা হয়। JasperReports এর এই ক্ষমতা আপনাকে কার্যকরভাবে ব্যবসায়িক বিশ্লেষণ এবং প্রতিবেদন তৈরি করতে সহায়ক হয়।
Read more