按Birt表

时间:2015-11-25 13:59:51

标签: filtering birt

我在Birt报告中有一个表格,我想显示客户流程的最后10个处理时间。一个简单的“底部n”过滤器很好地完成了这个技巧 - 但是我的客户来了。他表示他希望像我创建的那样排在最前面的10个表,但是没有不一致的值,这些值是由单个进程产生的,每个进程只运行一次。

因此,表格应该显示最后10个处理时间,但是如果特定流程超过一个月,那么它应该只包含流程,比如说一个月内整个运行流程的0.01%。

我尝试了一个额外的过滤器,它只显示运行总次数超过0.01%的进程 - 但现在我的结果表为空。

是否有可能首先实现 Birt过滤器所有处理的流程少于流程总量的0.01%,之后构建底部10列表预过滤结果集?我不可能更改SQL数据集,因为它也用在其他一些表中。

如果我只应用其中一个,那么我的过滤器工作正常 - 两者一起我收到一个空的结果集。

<list-property name="filter">
  <structure>
    <property name="operator">ge</property>
    <expression name="expr" type="javascript">row["TOTAL"]/row["Ov_TOTAL"]</expression>
    <simple-property-list name="value1">
      <value>0,01</value>
    </simple-property-list>
    <property name="updateAggregation">true</property>
  </structure>
  <structure>
    <property name="operator">bottom-n</property>
    <expression name="expr" type="javascript">row["AVG_DURATION"]</expression>
    <simple-property-list name="value1">
      <value>10</value>
    </simple-property-list>
    <property name="updateAggregation">true</property>
  </structure>
</list-property>

1 个答案:

答案 0 :(得分:0)

我试一试,它对我有用。与您的示例的唯一区别是,在我的情况下,应用过滤器时已经计算了比率:请参阅下面的“shareVolume”列。

<list-property name="filter">
    <structure>
        <property name="operator">ge</property>
        <expression name="expr" type="javascript">row["shareVolume"]</expression>
        <simple-property-list name="value1">
            <value>0.01</value>
        </simple-property-list>
        <property name="updateAggregation">true</property>
    </structure>
    <structure>
        <property name="operator">bottom-n</property>
        <expression name="expr" type="javascript">row["value2"]</expression>
        <simple-property-list name="value1">
            <value>3</value>
        </simple-property-list>
        <property name="updateAggregation">true</property>
    </structure>
</list-property>

为实现这一点,我计算了数据集中的比率。我刚刚添加了两个计算列:SQL未更改,使用相同数据集的其他现有报表组件仍然完美无缺。

enter image description here