Table Aggregation Using RowNum Expression

Maicon Schelter
edited February 11, 2022 in Analytics #1
<p>Hi guys,</p>
<p> </p>
<p>Recently I open this bug here: <a data-ipb='nomediaparse' href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=468529'>https://bugs.eclipse.org/bugs/show_bug.cgi?id=468529</a>.</p&gt;
<p>In Birt Report Design v4.4, in one row of my table I use a aggregation component. In expression I put a rownum property. But in emitter occur an error, when old version (v3.7) does not occur.</p>
<p> </p>
<p>Someone else with the same problem?</p>
<p> </p>
<p>Thanks!</p>

Comments

  • <p>While you wait on your bug to be addressed, a workaround could be to select your table, go to the binding tab, choose "Add Aggregation", set up this new aggregation as a runningcount, and finally, go back to your original aggregation and replace your row.__rownum with the new aggregation.</p>
    <p> </p>
    <p>Hope this helps.</p>
    Warning No formatter is installed for the format ipb
  • Gry
    Gry
    edited December 16, 2016 #3
    <blockquote class="ipsBlockquote" data-author="mwilliams" data-cid="137267" data-time="1434724589">
    <div>
    <p>While you wait on your bug to be addressed, a workaround could be to select your table, go to the binding tab, choose "Add Aggregation", set up this new aggregation as a runningcount, and finally, go back to your original aggregation and replace your row.__rownum with the new aggregation.</p>
    <p> </p>
    <p>Hope this helps.</p>
    </div>
    </blockquote>
    <p> </p>
    <p>Hi Williams,</p>
    <p>Wondering if this issue has been fixed, but I saw the bug is still open, so I decided to reply on this thread.</p>
    <p>I falled into this issue as well. I tried your workaround, however I got below error : </p>
    <pre class="_prettyXprint">

    - In nested aggregation "Aggregation", all the non-constant expression must have same group level. data.engine.AggrParamGroupLevelInconsistent ( 1 time(s) )
    detail : org.eclipse.birt.report.engine.api.EngineException: In nested aggregation "Aggregation", all the non-constant expression must have same group level.
        at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1245)
        at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1224)
        at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:96)
        at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:62)
        at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)
        at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
        at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
        at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)
        at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)
        at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)
        at org.eclipse.birt.report.engine.layout.html.HTMLInlineStackingLM.resumeLayout(HTMLInlineStackingLM.java:111)
        at org.eclipse.birt.report.engine.layout.html.HTMLInlineStackingLM.layoutNodes(HTMLInlineStackingLM.java:160)
        at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)
        at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)
        at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)
        at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26)
        at org.eclipse.birt.report.engine.layout.html.HTMLRepeatHeaderLM.layoutChildren(HTMLRepeatHeaderLM.java:46)
        at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140)
        at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70)
        at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
        at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
        at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:181)
        at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
        at org.eclipse.birt.report.service.ReportEngineService.runAndRenderReport(ReportEngineService.java:929)
        at org.eclipse.birt.report.service.BirtViewerReportService.runAndRenderReport(BirtViewerReportService.java:973)
        at org.eclipse.birt.report.service.actionhandler.BirtGetPageAllActionHandler.__execute(BirtGetPageAllActionHandler.java:131)
        at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)
        at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)
        at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)
        at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPageAll(BirtDocumentProcessor.java:183)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112)
        at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
        at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:265)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
        at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
        at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3436)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
        at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)
        at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
    Caused by: org.eclipse.birt.data.engine.core.DataException: In nested aggregation "Aggregation", all the non-constant expression must have same group level.
        at org.eclipse.birt.data.engine.impl.ServiceForQueryResults$EventHandler.popAggrRefFromExprs(ServiceForQueryResults.java:779)
        at org.eclipse.birt.data.engine.impl.ServiceForQueryResults$EventHandler.sort(ServiceForQueryResults.java:600)
        at org.eclipse.birt.data.engine.impl.ServiceForQueryResults$EventHandler.getAggrDefinitions(ServiceForQueryResults.java:450)
        at org.eclipse.birt.data.engine.executor.transform.pass.ResultSetProcessUtil.populateAggregationInBinding(ResultSetProcessUtil.java:249)
        at org.eclipse.birt.data.engine.executor.transform.pass.ResultSetProcessUtil.populateAggregation(ResultSetProcessUtil.java:221)
        at org.eclipse.birt.data.engine.executor.transform.pass.ResultSetProcessUtil.doPopulateAggregation(ResultSetProcessUtil.java:111)
        at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.prepareQueryResultSet(PassManager.java:117)
        at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.pass(PassManager.java:135)
        at org.eclipse.birt.data.engine.executor.transform.pass.PassManager.populateResultSet(PassManager.java:74)
        at org.eclipse.birt.data.engine.executor.transform.ResultSetPopulator.populateResultSet(ResultSetPopulator.java:218)
        at org.eclipse.birt.data.engine.executor.transform.CachedResultSet.<init>(CachedResultSet.java:158)
        at org.eclipse.birt.data.engine.executor.DataSourceQuery.execute(DataSourceQuery.java:1067)
        at org.eclipse.birt.data.engine.impl.PreparedOdaDSQuery$OdaDSQueryExecutor.executeOdiQuery(PreparedOdaDSQuery.java:503)
        at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:1222)
        at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:233)
        at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:178)
        at org.eclipse.birt.report.engine.data.dte.QueryResultSet.<init>(QueryResultSet.java:98)
        at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:168)
        at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:275)
        at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1947)
        at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)
        ... 71 more</pre>
    <p>So in my case, my original aggregation let say "Aggregation_ori" have expression rowNum, function "MAX" and filter from another row as well.</p>
    <p>Then I followed your post, by adding another aggregation letsay "aggregation_RC" with function "RunningCount", and replace original rowNum with this "aggregation_RC"</p>
    <p> </p>
    <p>Attached the screenshot for better understanding</p>
    <p> </p>