【问题标题】:In BIRT is it possible to create a chart from summarized data columns?在 BIRT 中是否可以从汇总数据列创建图表?
【发布时间】:2020-01-10 19:09:20
【问题描述】:

是否可以使用数据集中的汇总数据创建折线图?

我的情况如下: 详细信息部分:每个单元格都是数据集中的一个输出字段
1 月 2 月 3 月

item1 R X R

项目2 X A R

item3 R R R

页脚部分:这里我们使用计数聚合元素计算每个值每月的出现次数并按值过滤
总计:
R 2 1 3

X 1 1 0

A 0 1 0

我需要做的是添加一个图表,显示如下:

Needed Chart

我所拥有的是: report output

report design

在 EXCEL 中这非常简单,但我不知道如何在 BIRT 中完成。

我想创建一个新的数据集,其中包含 R、X 和 A 的 3 个输出字段,每行将是一个月,所以我将有一个转置表,这样我可以更容易地绘制它.但是我不能使用聚合字段来做到这一点,而且我不知道如何使用主数据集中的输出字段来做到这一点。

有什么想法吗?如果您需要源 rptdesign 文件,我可以提供给您,但其中的逻辑可能很难理解。

感谢您提供任何帮助,并在此先感谢您。

2020 年过得愉快。

【问题讨论】:

    标签: charts birt summarization


    【解决方案1】:

    首先,BIRT 的经验法则:如果您需要在表之外进行聚合,请在表之外创建它们。不要尝试从外部访问表中的值。有可能,有时它可能是唯一的解决方案,但它通常会弄乱您的整个报告,难以调试,甚至更难维护。


    聚合

    由于您的数据集看起来很简单,并且您已经知道如何聚合以及聚合什么,因此您的第一次调用应该是数据集中的计算列:

    您可以在此处根据您的数据源聚合语言。如果那是 SQL,我想 COUNTGROUP BY 语句将完成这项工作。 在此处创建图表所需的所有列。

    顺便说一句:计算列通常是 BIRT 中的灵丹妙药。我将它们用于几乎所有预计算或自定义字段创建。

    可视化

    你没有提到你用于图表的库,所以我假设你想使用基本的 BIRT 图表。 x 轴上带有月份的基本图表将完成您的工作。我只想在这里补充一下,您有多个系列的两个选项: 您可以准备数据集,以便为每种类型提供一个系列(图表示例中的一条线)或者更简单:在计算列上使用可选的 y 系列分组(如前所述):

    这样,您的图表将为您创建单独的系列。我希望这有帮助!

    如果您对基本的 birt grpahs 感到困惑,您可能需要考虑找到一个基于 JavaScript 的图形库,它可以完全满足您的需求并实现它。请记住:您几乎可以将任何基于 JavaScript 的内容放入 BIRT。

    最后说明:为了您的报表最终用户,请使用多条形图。对于重叠值,折线图不可读。

    【讨论】:

    • Kekzpanda,我正在尝试执行您提到的操作,但不幸的是,我使用的是 IBM MAXIMO 库,并且 maximoDataSource 对象中没有计算列。
    • @MauricioPoblete 我没有使用过 IBM Maximo,但如果您可以像这样解决问题,请告诉我:创建联合数据集(右键单击数据集 ->“新联合数据集”)。使用您从左侧站点上的 IBM Maximo 库创建的数据集,并在右侧使用相同的数据集(或您创建的伪数据集,以便完全连接将产生与以前相同的数据集)。联合数据集应具有计算列选项。
    【解决方案2】:

    感谢 Kekzpanda 在我遇到的这个问题上提供的帮助和时间帮助我。

    经过一段时间的努力,我终于找到了一个解决方案,通过使用 javascript 数组和一个额外的数据集来转换我在表页脚中的聚合“表”,这是我在其他人有相同情况时所做的步骤问题:

    比如你需要转置一个10列3记录的表

    1. 在报表初始化方法中创建一个维度为 [10,3] 的数组 // 二维数组索引 变量 i=0; 变量 j=0; // 数组定义并使用 'for' 迭代对其进行初始化 var matriz = 新数组(10); 对于 (i=0;i

    2. 然后您需要将聚合字段值保存在数组中的某个位置。为此,单击聚合字段并转到 onCreate 方法并添加以下代码:

      matriz[0][1]=this.getValue();

    完成所有聚合字段后,您将拥有一个带有转置表的数组。已检查!

    1. 将数组中的数据移动到新数据集,选择 fetch 方法并添加如下内容: if(i >= array.length) return(false); // 当你完成数组中的每个项目时。

      行["A"]=matriz[i][0]; 行["B"]=matriz[i][1]; 行["C"]=matriz[i][2]; 我++; // 将第一个索引加 1 以移动到数组中的下一行

      返回(真);

    现在您有了带有转置数据的新数据集。

    1. 现在使用此数据集并绘制数据图表,在图表设计中为数据集中的每一列创建不同的系列。

    希望对您有所帮助。

    再见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 2018-03-11
      • 2017-12-31
      • 1970-01-01
      • 2019-05-11
      • 2013-03-29
      相关资源
      最近更新 更多