获取 BIRT 报告数据的正确方法

Posted

技术标签:

【中文标题】获取 BIRT 报告数据的正确方法【英文标题】:Correct way to get data for BIRT reporting 【发布时间】:2020-06-08 15:24:39 【问题描述】:

我们有一个包含 4 个层次结构的系统。 1、高级经理 2. 经理 3.主管 4. 员工

与所有这些相关的数据存储在具有各自详细信息的不同表中。 有一个地址表,其中包含所有这些层次结构的地址。 Sample Data Set

我们将能够按城市、州和国家/地区对每个 ID 进行计数。 由于 OLAP 多维数据集不能直接用作 BIRT 中的数据集,我是否应该将所有这些数据合并到一个表中并加载它,然后创建一个具有以下层次结构的多维数据集?

COUNTRY
 STATE
  CITY
   SENIOR MANAGER
    MANAGER
     SUPERVISOR
      EMPLOYEE

并在汇总字段中添加以下内容。

SENIOR MANAGER COUNT
MANAGER COUNT
SUPERVISOR COUNT
EMPLOYEE COUNT

目标是按区域或角色(高级经理、经理等)报告员工人数。

谢谢。

【问题讨论】:

【参考方案1】:

通常最好在数据库端进行聚合,例如使用 SQL JOIN 语法和 GROUP BY。

如果你需要聚合数据细节,你有两种选择(取决于你的DB,不知道mysql是否支持这个):

您可以只选择详细信息(全部在一个查询中)并使用 BIRT 对表或列表项的分组和聚合功能来获取聚合。

或者您可以使用 SQL 分析函数(类似于组函数,但带有 OVER(...) 子句)在 SQL 中完成所有操作,并让 BIRT 只发出结果。不过,您仍然需要 BIRT 的分组来在正确的页眉或页脚行中输出聚合。

根据经验,通常最好让数据库做尽可能多的工作。 这更可重用(例如,如果您以后决定使用不同的报告库)并且速度也更快,因为这就是 RDBMS 的设计目的。

但是,您也可以在 BIRT 报告布局中嵌套表格或列表项(这是一个鲜为人知的功能)。这允许您开发对每个级别使用单独 SQL 查询的主/详细报告。但是,如果您需要聚合,则使用这种方法会复杂得多。

【讨论】:

以上是关于获取 BIRT 报告数据的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

来自属性文件的 Birt 数据源参数

使用 BIRT 报告工具(开源版本)在同一个 excel 输出中获取多张工作表

在 BIRT 报告中定义书签,以便在 pdf 输出中显示

从BIRT报表文件中获取页面设置信息(页边距纸张大小输出方向)的方法

如何将ListBox中选择的值发送到BIRT中的java Web服务参数?

BIRT 如何用 rest api 接口获取 json 做报表