Birt では、テーブル内の項目を部分文字列に基づいてグループ化します。

StackOverflow https://stackoverflow.com/questions/1184281

  •  19-09-2019
  •  | 
  •  

質問

初心者の質問ですが、答えが見つかりませんでした。

「時間」列を持ついくつかの項目を保持するテーブルを含むレポートがあります。同じ月のすべてのアイテムがグループ化されるように、アイテムを時間ごとにグループ化したいと考えています。

これを行うには、「時刻」文字列 (形式は「17:22 19/07/09」) から月/年を抽出し、それをグループ化に使用する必要があります。私はこれらすべてを Java で行う方法を知っており、BIRT ではこれを行うためのいくつかの方法が提供されていると思いますが、これを行う簡単な方法を見つけることができませんでした。

これに関する良いチュートリアルがあれば、ぜひチェックしてみたいと思います。

ありがとう!!

役に立ちましたか?

解決

以下のようにしました。データセットの SQL クエリでは、両方を選択します (たとえば) "char(my_date,iso)" そして "left(char(date,iso),7)" (のために 2009-01-05 そして 2009-01 それぞれ)、次のようなものです。

select
    left(char(my_date,iso),7) as isoyyyymm,
    char(my_date,iso) as isodate,
    otherfield as value
from tbl
order by my_date

次に、レポート内にテーブルを作成するときに、列 1 を isoyyyymm に基づくグループ化列にし、テーブル内のその列を空白にする必要があります。

  • 見出し、
  • グループデータライン。そして
  • 詳細データ行。

したがって、デザイナーでは次のようになります。

+--------------------------------+-----------+-----------------+
| <Header row>                   | Date      | Value           |
+--------------------------------+-----------+-----------------+
| <Group header row (isoyyyymm)> |           |                 |
+--------------------------------+-----------+-----------------+
| <Detail row>                   | [isodate] | [value]         |
+--------------------------------+-----------+-----------------+
| <Group footer row (isoyyyymm)> |           | Total.sum(      |
|                                |           |   row["value"], |
|                                |           |   null,         |
|                                |           |  "Grp1")        |
+--------------------------------+-----------+-----------------+

レポート表は引き続き月でグループ化されますが、表示される詳細行にはすべて完全な日付が含まれます。

Date         Value
----------   -----

2009-01-01       7
2009-01-08       2
2009-01-15       1
2009-01-22       4
             -----
                14

2009-02-05       2
2009-02-12       0
2009-02-19       0
2009-02-26       1
             -----
                 5

あなた できる そのようにしたい場合は、間隔でグループ化しますが、単純な文字列を使用できる状況では、最も単純なアプローチを選択しました。明らかに、間隔が 1 週間 (または単純な文字列分析に適さないその他の間隔) の場合は、BIRT に組み込まれている間隔のグループ化を使用する必要があります。

(私の意見では) これに関する最良のチュートリアルは、本書の 187 ページ (第 12 章) にあります。 BIRT、レポート作成のフィールド ガイド. 。それと、 BIRT の統合と拡張 本格的な BIRT ユーザーにとっては必需品です。

最初のこれは、レポート デザイナーにとって絶対に重要です。2 番目のトピックでは、組み込み Java と Javascript、レポート オブジェクト モデル、BIRT の基礎となるアーキテクチャなど、より高度なトピックについて説明します。これは、レポートを本当に素晴らしいものにしたい場合に必要です。

他のヒント

レポートパラメータは、datetime型解析ヘルプを含む、ここでビットいます?

http://www.eclipse.org/birt/phoenix /deploy/viewerUsage.php#parametersする

私はこの正確なことを行いBIRT取引所DevShare上のサンプルレポートを持っています。あなたはそれ正規表現(あなたが必要とするような単純なまたは複雑な)を供給し、それがグループを作成するために、正規表現の一致を使用します。

<のhref = "http://www.birt-exchange.org/devshare/designing-birt-reports/746-create-a-dynamic-group-by-extracting-a-substring/#description" のrel = "nofollowをnoreferrer"> http://www.birt-exchange.org/devshare/designing-birt-reports/746-create-a-dynamic-group-by-extracting-a-substring/#descriptionする

グッドラック!

これは、テーブル自体のグループ設定を使用して行うことができます。グループの作成方法については、「 http://www.eclipse.org/birt/phoenix/tutorial/basic/basic06.php (ところで、Google で「birt table group」を検索すると、これが最初のヒットとして表示されます)。この場合、次のようにすることができます。

  • 州グループヘッダーの行ヘッダーを右クリックし、コンテキストメニューが表示されます。
  • コンテキストメニューから[挿入グループ]→以下を選択します。グループの詳細ダイアログが表示されます。
  • フィールド上のグループの「時間」列を選択し、名前フィールドのタイプ時間を選択します。
  • インターバルコンボボックスで「月」を選択します
  • 「OK」をクリックします。

これにより、SQL や JS をいじることなく、グループ化されたテーブルが作成されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top