按顺序过滤 Birt 表
Filter in serial order for Birt tables
我在 Birt 报告中有一个 table,我想在其中显示客户流程的最后 10 个处理时间。一个简单的 "Bottom n" 过滤器就可以很好地解决问题 - 但我的客户来了。他说他想要像我创建的底部 10 table,但没有由单一进程产生的不一致的值,运行 每月只喜欢一次。
所以 table 应该显示最后的 10 个处理时间,但它应该只包含特定进程在一个月内超过总 运行 进程的 0.01% 的进程.
我尝试了一个额外的过滤器,它只显示 运行 频率超过总进程 0.01% 的进程 - 但现在我的结果 table 是空的。
是否有可能实现Birt 首先过滤掉所有处理少于进程总数0.01%的进程,然后然后 构建预过滤结果集的后 10 列表?我无法更改 SQL 数据集,因为它也在其他一些 table 中使用。
这是我的过滤器,如果我只应用其中一个过滤器,它们工作正常 - 两者一起我收到一个空结果集。
<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>
我试了一下,它对我有用。与您的示例的唯一区别是,在我的例子中,在应用过滤器时已经计算了比率:请参阅下面的 "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 没有变化,使用相同数据集的其他现有报表组件仍然可以正常工作。
我在 Birt 报告中有一个 table,我想在其中显示客户流程的最后 10 个处理时间。一个简单的 "Bottom n" 过滤器就可以很好地解决问题 - 但我的客户来了。他说他想要像我创建的底部 10 table,但没有由单一进程产生的不一致的值,运行 每月只喜欢一次。
所以 table 应该显示最后的 10 个处理时间,但它应该只包含特定进程在一个月内超过总 运行 进程的 0.01% 的进程.
我尝试了一个额外的过滤器,它只显示 运行 频率超过总进程 0.01% 的进程 - 但现在我的结果 table 是空的。
是否有可能实现Birt 首先过滤掉所有处理少于进程总数0.01%的进程,然后然后 构建预过滤结果集的后 10 列表?我无法更改 SQL 数据集,因为它也在其他一些 table 中使用。
这是我的过滤器,如果我只应用其中一个过滤器,它们工作正常 - 两者一起我收到一个空结果集。
<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>
我试了一下,它对我有用。与您的示例的唯一区别是,在我的例子中,在应用过滤器时已经计算了比率:请参阅下面的 "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 没有变化,使用相同数据集的其他现有报表组件仍然可以正常工作。