有条件的聚合BIRT功能

时间:2014-06-24 22:32:42

标签: birt

我有一个问题,我正在研究旧版本的birt(2.5)并且它有一个标准偏差的错误,如果输入的所有值都相同,它们将返回NaN,我完全理解这一点,它我花了一些时间来确定,但我知道这是我的问题。

我现在需要的是在单元格中使条件成为零,如果它是NaN并且由于我对birt的经验有限,我不确定如何去做。

这是单元格:

<cell id="1337">
                                        <property name="backgroundColor">#CFAFCF</property>
                                        <property name="textAlign">center</property>
                                        <data id="1170">
                                            <structure name="numberFormat">
                                                <property name="category">Fixed</property>
                                                <property name="pattern">#,##0.00</property>
                                            </structure>
                                            <list-property name="visibility">
                                                <structure>
                                                    <property name="format">all</property>
                                                    <expression name="valueExpr" type="javascript">var points = row["CELL_POINTS"];&#13;
var minPoints = row["CELL_MIN_POINTS"];&#13;
var maxPoints = row["CELL_MAX_POINTS"];&#13;
points == null &amp;&amp; (minPoints == null || maxPoints == null)</expression>
                                                </structure>
                                            </list-property>
                                            <property name="resultSetColumn">stddev</property>
                                        </data>
                                    </cell>

不要问这里的valueExpr是什么,我不知道他们为什么这样做,但最好不要为我而留下: - )

我无法将整个事物发布为1它是巨大而复杂的,2,它是为了工作。

这是stddev聚合

<structure>
                                <property name="name">stddev</property>
                                <text-property name="displayName">stddev</text-property>
                                <property name="dataType">float</property>
                                <simple-property-list name="aggregateOn">
                                    <value>grpGeneric</value>
                                </simple-property-list>
                                <property name="aggregateFunction">STDDEV</property>
                                <list-property name="arguments">
                                    <structure>
                                        <property name="name">Expression</property>
                                        <expression name="value" type="javascript">dataSetRow["ASSIGNED_POINTS"]</expression>
                                    </structure>
                                </list-property>
                                <expression name="filterExpr" type="javascript">dataSetRow["EVAL_COUNT"] == 1</expression>
                            </structure>

基本上我想要的是,如果单元格数据返回NaN的值使其为0,否则使其返回值。

感谢。

1 个答案:

答案 0 :(得分:1)

我已经通过向单元格添加onRender方法解决了这个问题

1)点击&#34;布局&#34; birt的标签 2)点击&#34;大纲&#34; birt视图的选项卡 3)单击我想要onRender方法的单元格 4)单击&#34;脚本&#34;标签 5)选择&#34; OnRender&#34;在顶部 6)添加我想要的代码,在我的情况下:

if (this.getValue().toString().toLowerCase() == "nan"){
        this.setDisplayValue(0);
} else {
       this.setDisplayValue(this.getValue());
}