获取 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 报告工具(开源版本)在同一个 excel 输出中获取多张工作表
从BIRT报表文件中获取页面设置信息(页边距纸张大小输出方向)的方法