我们有一个包含4个层次结构的系统。1.高级经理2。经理3。主管4。雇员
与所有这些相关的数据都存储在不同的表中,并具有各自的详细信息。有一个地址表,其中包含所有这些层次结构的地址。样本数据集
我们可以按城市、州和国家对每个身份证进行计数。由于olap多维数据集不能直接用作birt中的数据集,我是否应该将所有这些数据合并到一个表中并加载它,然后创建具有以下层次结构的多维数据集?
COUNTRY
STATE
CITY
SENIOR MANAGER
MANAGER
SUPERVISOR
EMPLOYEE
并在摘要字段中添加以下内容。
SENIOR MANAGER COUNT
MANAGER COUNT
SUPERVISOR COUNT
EMPLOYEE COUNT
目标是按地区或角色(高级经理、经理等)报告员工数量。
谢谢。
1条答案
按热度按时间kyxcudwk1#
通常最好在db端进行聚合,例如使用sql连接语法和group by。
如果您需要聚合数据和详细信息,您有两个选择(取决于您的数据库,我不知道mysql是否支持此功能):
您可以只选择详细信息(在一个查询中全部选择),并对表或列表项使用birt的分组和聚合特性来获得聚合。
或者您可以使用sql分析函数(类似于组函数,但带有over(…)子句)在sql中完成所有操作,并让birt只发出结果。不过,您仍然需要birt的分组,以便在正确的页眉或页脚行中输出聚合。
根据经验,通常最好让db做尽可能多的工作。这是更可重用的(例如,如果您决定以后使用不同的报告库),而且速度更快,因为这是rdbms的设计目的。
但是,您也可以在birt报告布局中嵌套表或列表项(这是一个鲜为人知的特性)。这允许您开发主/详细报告,其中每个级别使用单独的sql查询。但是,如果您想要聚合,那么使用这种方法会更加复杂。