【问题标题】:How do I split birt dataset column into multiple rows如何将 birt 数据集列拆分为多行
【发布时间】:2014-04-03 20:38:07
【问题描述】:

我的数据源有一列包含逗号分隔的数字列表。

我想创建一个数据集,将这些数字转化为分组以在条形图中使用。

要求

  1. 数字将介于 0-17 之间
  2. 分组:0-2,3-5,6-10,11-17
  3. x 轴标签必须是分组
  4. y 轴是包含该分组的行的百分比
    • 请注意,由于每行可以贡献多列,因此百分比加起来可以达到 > 100%

你能提供的任何帮助都会很棒......我对 BIRT 很陌生,现在已经坚持了几天

【问题讨论】:

    标签: birt business-intelligence actuate


    【解决方案1】:

    不确定我是否完全理解要求,但您的基本问题“将数据集列拆分为多行”可以使用脚本数据集或纯 SQL(取决于您的数据库)来解决。

    无论哪种方式,您都需要第二个数据集(例如,您的数据模型是主从数据,在您的布局中,您需要类似

    Table/List "主控绑定到主控 DS 表/列表“详细信息”绑定到详细信息 DS

    明细 DS 需要来自主 DS 的逗号分隔结果列作为“String”类型的输入参数。

    如果您了解 Javascript 并且您了解脚本数据集的工作原理,使用脚本数据集执行此操作非常容易:创建一个默认值为 null 的对象类型的报表变量“myValues”和第二个类型的报表变量“myValuesIndex”整数,默认值为 0。

    (注意:这都是未经测试的!)

    将数据集“detail”创建为脚本 DS,其中一个输入参数“csv”为 String 类型,一个输出参数“value”为 String 类型。

    在脚本DS的open事件中,代码:

      vars["myValues"] = this.getInputParameterValue("csv").split(",");
      vars["myValuesIndex"] = 0;
    

    在fetch事件中,代码:

      var i = vars["myValuesIndex"];
      var len = vars["myValues"].length;
      if (i < len) {
        row["value"] = vars["myValues"][i];
        vars["myValuesIndex"] = i+1;
        return true;
      } else {
        return false;
      }
    

    例如,对于 csv = "1,2,3-4,foo" 的主 DS 结果行,详细 DS 将产生 4 行 值 = "1" 值 = “2” 值 = “3-4” 值 = “富”

    使用 Oracle 数据库,这可以在没有 Javascript 的情况下完成。细节 DS(具有与上面相同的输入参数)将如下所示:

      select t.value as value from table(split(?)) t
    

    拆分函数的定义见RedFilter关于 Is there a function to split a string in PL/SQL?

    如果你得到ORA-22813,你应该改变原来的定义

      create or replace type split_tbl as table of varchar2(32767);
    

      create or replace type split_tbl as table of varchar2(4000);
    

    https://community.oracle.com/thread/2288603?tstart=0中所述

    11g 中的纯 SQL 也可以使用 regexp_substr(参见同一页)。

    【讨论】:

    • 我实际上已经有了与您的 javascript 解决方案非常相似的东西。我遇到的问题是它如何将我的实际数据集与脚本数据集连接起来?我在哪里将信息传递给该输入变量
    • 抱歉再次通读。我知道连接是由带有子列表的列表完成的。我如何在条形图中使用它?
    【解决方案2】:

    在脚本数据集中创建参数。在将脚本数据集分配给 Table 之后,我们必须通过 DataSet 参数绑定将实际数据集值传递或链接到脚本数据集参数。

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多