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行のみを印刷するように制限するにはどうすればよいですか?

例えば

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

それは本当に私が苦労している線の制限であり、残りはうまく機能しています。

4

2 に答える 2

1

私はそれを行う方法を見つけました。誰かがもっとエレガントな答えを思い付くことができれば、これは少しハッキーだと感じるので、私はそれを見てうれしいです!

詳細バンドの各アイテムについて:

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

ここで、userGroupは、グループ化するフィールドです。isRemoveLineWhenBlank最初の要素の属性だけが必要なよう です。

于 2012-12-19T06:32:22.523 に答える
0

メインレポートのグループ化フィールドにクエリを実行し、グループ化フィールドをパラメータとしてサブレポートに渡すことで、サブレポートの使用を検討できます。この方法のメリットは、レポートエンジンが不要なすべての行を実際にループすることを回避し(表示されていませんが)、特に返されるデータセットが大きい場合に、サーバー間またはサーバー間で不要な帯域幅を消費することを回避することです。

于 2013-05-20T08:15:05.217 に答える