以前,我们有一个遗留系统,我们使用C ++代码在Text文件和Excel文件中生成报告。但是,执行手动编码以执行所有原始数据处理和报告格式渲染是一件痛苦的事。
最近,我们成功地将所有原始数据迁移到SQL数据库中。
为避免编写手动代码,我们决定评估以下工具。
目前,我们的原始数据类似于:
基于OpenReport和JasperReports提供的演示,我相信我们可以生成像
这样的报告Summary Report for Lot 2
------------------------
Measurement Type Value
----------------------------------
Lead 1 Average 1.30
Lead 1 StdDev 0.16
.
.
Lead 2 Average 2.08
Lead 2 StdDev 0.55
但是,这比我们想要的要远一点。我们想要的是能够
Lead 1, 2, 3
...,并使用逻辑代码函数将它们重新计算为单个Lead
行。Summary Report for Lot 2
------------------------
Measurement Average StdDev
----------------------------------
Lead 2.33 1.23
到目前为止,我见过的演示中,大多数只是从原始数据库报告1 to 1 mapping
。在1 to 1 mapping
的中间,我知道可以有一些简单的SQL语句用于过滤和操作。我还没有看到可以执行sophisticated
处理的示例。
我称之为sophisticated
的原因,就像在C ++代码中一样,我们需要执行std :: string处理,利用std :: vector,std :: map数据结构和算术运算。我怀疑SQL语句可以执行类似的操作。
根据我列出的 3 要求,我是否可以使用市场上的可用报告工具生成报告?或者我们需要开发自己的中间件来执行这样的任务? (Perl / Python / ......无论如何)
答案 0 :(得分:1)
只要您的数据库架构是adequet,您就应该能够在SQL和JasperReports中执行需要的操作。
使用PostgreSQL,您可以执行string manipulation,分组,聚合函数等操作 使用JasperReports,您可以使用Java操作数据,使用子报告等
具体示例可以这样完成:
select split_part(measurement_type, ' ', 1), measurement_statistic_type, value
还有纯SQL方法可以完成这项工作。
注意:
measurenet_type
,为什么没有两列?measurement_name
/ measurement_id
?)