【问题标题】:Correct way to get data for BIRT reporting获取 BIRT 报告数据的正确方法
【发布时间】: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

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

谢谢。

【问题讨论】:

    标签: mysql sql birt olap


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 2013-12-20
      • 1970-01-01
      相关资源
      最近更新 更多