2012-12-19 17 views
1

我有一個CSV數據源是這樣的:碧玉報告 - 一組中的行數限制

User,Site,Requests 
user01,www.facebook.com,54220 
user01,plusone.google.com,2015 
user01,www.twitter.com,33564 
user01,www.linkedin.com,54220 
user01,weibo.com,2015 
user02,www.twitter.com,33564 
user03,www.facebook.com,54220 
user03,plusone.google.com,2015 
user03,www.twitter.com,33564 

在我想要顯示的前3行(最大)每個用戶的報告,而其他行只會對組的總數有貢獻。如何限制報告僅打印每組3行?

e.g

User  Site    Requests 
user01 | www.facebook.com | 54220 
     plusone.google.com | 2015 
     www.twitter.com  | 33564 
          | 146034 
user02 | www.twitter.com  | 33564 
          | 33564 
user03 | www.facebook.com | 54220 
user03 | plusone.google.com | 2015 
user03 | www.twitter.com  | 33564 
          | 89799 

它真的只是行限制,我掙扎,剩下的工作就好了。

回答

1

我找到了一個辦法,如果有人能拿出更優雅的答案我會很高興看到它,因爲這感覺有點哈克!

在細節帶區的每個項目:

<reportElement... isRemoveLineWhenBlank="true"> 
    <printWhenExpression><![CDATA[$V{userGroup_COUNT} < 4]]></printWhenExpression> 
</reportElement> 

其中userGroup表示是我通過分組字段。我似乎只需要第一個元素的isRemoveLineWhenBlank屬性。

0

您可以考慮通過查詢主報告中的分組字段,然後將分組字段作爲參數傳遞給子報表來使用子報表;此方法的優點是避免報表引擎實際循環所有不需要的行(儘管未顯示),並花費不必要的服務器到服務器或服務器到客戶端的帶寬,特別是當返回的數據集很大時