0

答えが見つからなかった初心者の質問。

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

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

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

ありがとう!!

4

4 に答える 4

2

以下のようにしました。データセットの SQL クエリでは、次のように(たとえば)"char(my_date,iso)""left(char(date,iso),7)"(それぞれ for2009-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 に組み込まれている間隔のグループ化を使用する必要があります。

(私の意見では) これに最適なチュートリアルは、BIRT, A Field Guide to Reporting の187 ページ (第 12 章) にあります。それと、BIRT の統合と拡張は、本格的な BIRT ユーザーにとって必携です。

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

于 2009-07-27T03:07:22.693 に答える
0

これを正確に実行するBIRTExchangeDevShareに関するサンプルレポートがあります。正規表現(必要に応じて単純または複雑)を指定すると、RegExの一致を使用してグループが作成されます。

http://www.birt-exchange.org/devshare/designing-birt-reports/746-create-a-dynamic-group-by-extracting-a-substring/#description

幸運を!

于 2009-07-26T16:12:08.713 に答える
0

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

  • 状態グループ ヘッダーの行ヘッダーを右クリックすると、コンテキスト メニューが表示されます。
  • コンテキスト メニューから [グループの挿入] → [下] を選択します。[グループの詳細] ダイアログが表示されます。
  • [Group On] フィールドで [Time] 列を選択し、[Name] フィールドに「Time」と入力します。
  • 間隔コンボボックスで「月」を選択します
  • [OK] をクリックします。

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

于 2009-08-19T14:21:23.793 に答える
0

日時の解析を含むレポート パラメーター ビットは役に立ちますか?

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

于 2009-07-26T11:12:57.190 に答える