2011-10-26 10 views
2

複数のテーブルにわたって1つの複合データセットを再利用するにはどうすればよいですか?複雑なデータセットを要約して再利用する方法

データセットには、詳細および要約の両方で報告する必要のある計算カラム数があります。ここでは非常に単純化された例のデータセットです:

is_food sale_association food_type total_sold total_associations percent_total 
1  Before Movie  Popcorn 50   3     x BirtMath.safeDivide(...) 
0  Before Movie  Soda  10   2     x BirtMath.safeDivide(...) 
1  During Movie  Jujubee 10   1     x BirtMath.safeDivide(...) 
0  After Movie  Soda  15   2     x BirtMath.safeDivide(...) 

この1つのデータセットから(「is_food」列を使用して)非食品、すべての別の要約を転がりながら、私は、すべての食品の種類の詳細な要約を作成したいと思います食べ物のタイプ、sale_associationによる食べ物以外のロールアップ食品の別の詳細な要約など

レポートには、計算が必要ないくつかの割合(最も複雑なテーブルの6つ)行、特定のグループ内のすべての行にまたがるもの)、分母の値がゼロである可能性があるので、safeDivide(これは、元のSQLクエリで行うPITAです。分子と分母の両方が合計であるときにゼロで除算することについてのイオンチェックは毛むくじゃらのクエリにつながる)。

明らかに、()SQLクエリを適切なものに絞ることでこれを行うことができますが、すでにモンスタークエリを作成しているときに非常に似ている12または15個のクエリを作成する時間と労力が浪費されているようです最も詳細な表については、

テーブルでロールアップを実行する方法は簡単ではないようです。私は後でまとめられる行を隠すことで(例えば、この例では "is_food == 0")、フッター行に表示されるカスタムデータバインディングを作成することで、何かをハックすることができました。ハックのような気分になるだけでなく、自然に行を並べる能力にも影響します。この例に戻って、total_soldで注文し、is_food == 0で行を集計すると、自然順序はPopcorn、Non-food、Jujubeeになります。

これについてBIRT wikiには何もありません。また、「BIRT:A Field Guide、3rd E.」もありません。本当にトピックを掘り下げてください。

答えて

0

これは非常に自由な質問です(同じデータをわずかに異なる方法で複数のクエリを取得するよりも、単一のデータセットを再利用する方がはるかに意味があります)。いくつかの一般的な提案:

  • 追加し、各BIRTレポートアイテム(通常はBIRTテーブル)要約のみのレベルのレポートが必要な

  • のための共通のデータセットとして必要なデータの最も詳細なバージョンを使用しますグループを必要なレベルでBIRTテーブルに追加し、必要に応じてデータをグループヘッダー/フッターに追加し、BIRTテーブルから詳細レベルの行を削除します。

  • 場合によっては、食品レベルのレポートが必要な場合があります(例:食品以外のアイテムではなく)。BIRTテーブルに上記のようにグループを追加し、詳細行の表示を設定しますエディタ - プロパティ - 可視性)を使用して非表示の行を非表示にする適切な式を指定します(この例では非食品アイテム)。

集計(すなわち。要約式)は、テーブル全体を選択し、プロパティエディタ内のバインド]タブを選択し、Add Aggregation...ボタンをクリックしてテーブルに追加することができます。

関連する問題