我在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>
答案 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未更改,使用相同数据集的其他现有报表组件仍然完美无缺。