25
マトリックス・レポートの作成
この章では、マトリックス・レポートについて学習します。この章の手順に従うと、図25-1に示すようなレポート出力を生成できます。
図25-1 マトリックス・レポートの出力
画像の説明
概要
- マトリックス・レポートはグリッドのようなスタイルです。上のサンプル・レポートのように、マトリックス・レポートにはラベルの行と列が1つずつ、また行ラベルと列ラベルの両方に関連付けられたグリッド・フォーマット内の情報があります。
- この章のサンプル・マトリックスでは、基本マトリックスに3つの加算が追加されます。このサンプル・マトリックスでは、サマリーが計算され、セル内に存在しない値はゼロに置換され、セル自体がグリッド線で囲まれます。サマリーは、部門別の給与合計、職種別の給与合計およびレポート全体での給与合計です。
- マトリックス・レポートの作成には、特定の要件があります。
- データ・モデルには4つ以上のグループが必要です。
- 1つのグループはクロス積グループである必要があります。
- クロス積グループ内には2つ以上のグループが必要です。これらのグループは、マトリックス・レポートのラベルを提供します。
- 1つ以上のグループはセル・グループである必要があります。つまり、ラベルに関連した情報を提供する必要があります。このグループの値が、マトリックスで作成したセルに挿入されます。
- これらの要件は前述の例で確認できます。前述の例には4つのグループがあり、1つのグループは垂直ラベル(部門番号)、1つのグループは水平ラベル(職種名)を提供しています。この2つのグループが、クロス積グループと呼ばれる3番目のグループの子になり、グリッドが形成されています。4番目のグループはグリッドに挿入される値を提供しています。
- マトリックス・レポートは、列の数が事前にわからないので、表形式のレポートとは異なります。つまり、レポート内の列の数は、
SELECT
文で指定した列の数とユーザー自身が作成した列の数によっては決定されません。レポート内の列の数は、水平ラベルと垂直ラベルを提供する列に含まれた値の数によって変わります。このため、RECEPTIONISTという新しい職種が基本のデータ表に追加されると、レポートは自動的に拡大されます。
- これらのサンプル・マトリックス・レポートのデータの選択に使用された問合せは、マトリックスの問合せの例として定義されているわけではありません。たとえば、パフォーマンスに問題がある場合、マトリックス・レポートのパフォーマンスを改善できる別のデータの問合せ方法もあります。
- 任意の数の問合せを使用して、マトリックス・レポートを作成できます。第25.2項「単一問合せマトリックスの作成」では、1つの問合せを使用してマトリックス・レポートを作成する方法を説明します。また、第25.3項「複数問合せマトリックスの作成」では、同じレポートを、3つの問合せを使用して作成する方法を説明します。これらの2つの方法では同じ結果が得られます。これらの方法はオプションとして説明するので、両方試してみて、使いやすい方に決めてください。
- このレポートでは、マトリックス・レイアウト・スタイルを使用します。一部のデフォルト設定を変更して、列と行のラベルが正しく表示されるようにします。また、一部のフィールド幅を変更して、フィールドがそのページに収まるようにします。
- 概要に関する詳細は、第1.3.7項「マトリックス・レポートについて」を参照してください。
使用例
この例では、職種と部門ごとに給与をクロス集計するレポートを作成します。結果のマトリックスには、一番上に横方向の職種、左端に縦方向の部門が表示され、セル内には給与の合計が含まれます。これにより、部門20に属す事務員の給与合計がすぐにわかり、これを別の部門の事務員の給与合計と比較できます。
このサンプル・レポートの作成過程では、次を行います。
マトリックス・レポートのサンプルを表示するには、サンプル・フォルダmatrix
を開き、Oracle Reportsのサンプルmatrix1qb.rdf
を開きます。アクセス方法の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
25.1 この例の前提条件
この章の例を作成するには、Oracle Database付属のSCOTTサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。
25.2 単一問合せマトリックスの作成
データ・モデルに1つの問合せが含まれるマトリックス・レポートを作成できます。単一問合せデータ・モデルは一般に、複数問合せデータ・モデルよりもパフォーマンスが向上します。
この例のように、単一問合せレポートを作成する場合、レポート・ウィザードを使用して、データ・モデルとレイアウトを同時に作成できます。
データ・モデルとレイアウトを作成するには:
- Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。
- 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「レポート・ウィザードを使う」を選択して「OK」をクリックします。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択し、「次へ」をクリックします。
- 「スタイル」ページでレポートのタイトルを入力し、「マトリックス」を選択して「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次の
SELECT
文を入力します。
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY DEPTNO, JOB
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
matrix1qb_code.txt からコードをコピーして、「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第25.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「行」ページで、「DEPTNO」をクリックし、「>」ボタンをクリックしてこのフィールドを「マトリックス行フィールド」リストに移動し、「次へ」をクリックします。
- 「列」ページで、「JOB」をクリックし、「>」ボタンをクリックして、このフィールドを「マトリックス列フィールド」リストに移動し、「次へ」をクリックします。
- 「セル」ページで、「SUM_SAL」をクリックし、「>」ボタンをクリックして、このフィールドを「マトリックス・セル・フィールド」リストに移動し、「次へ」をクリックします。
注意
このケースでは、問合せ自身がSUMファンクションを使用してサマリーを実行します。そのため、ここでは「合計」ボタンは使用しません。
|
- 「合計」ページで「次へ」をクリックします。
- 「ラベル」ページで、すべてのフィールドのラベルを削除し、「次へ」をクリックします。
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図25-2 マトリックス・レポートのペーパー・デザイン・ビュー
画像の説明
25.3 複数問合せマトリックスの作成
データ・モデルに複数の問合せが含まれるマトリックス・レポートを作成できます。複数問合せデータ・モデルは通常、単一問合せの場合よりも概念化やコードの作成が容易ですが、単一問合せデータ・モデルの方が一般にパフォーマンスが優れています。
25.3.1 手動での新規レポートの作成
この場合、データ・モデルとレイアウトを別々に作成した方が簡単です。したがって、まず空のレポートを作成してから、問合せを追加し、レイアウトを作成します。
空のレポートを作成するには:
- 「ファイル」→「新規」→「レポート」を選択します。
- 「新規レポートを手動で作成」を選択し、「OK」をクリックします。
25.3.2 クロス積とデータ・リンクを含むデータ・モデルの作成
複数の問合せを使用するレポートを作成する場合、最初にすべての問合せをデータ・ウィザードで作成して、次にレポート・ウィザードを使用してレイアウトを作成する方が簡単です。
問合せを作成するには:
- データ・モデル・ビューで、「挿入」→「問合せ」を選択してデータ・ウィザードを表示します。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「問合せ」ページで、「問合せ名」に
Q_Dept
と入力し、「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
- 「データ」ページで、次の
SELECT
文を入力します。
SELECT DISTINCT DEPTNO
FROM EMP
ヒント
「クエリー・ビルダー」をクリックすれば、コードを手動で入力しなくても、問合せを作成できます。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第25.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「グループ」ページで「次へ」をクリックします。
- 「終了」をクリックして、データ・モデル・ビューに最初の問合せを表示します。
- 前述の手順を2番目の問合せにも繰り返しますが、この場合、問合せ名は
Q_Job
とし、次のSELECT文を使用します。
SELECT DISTINCT JOB
FROM EMP
- また、3番目の問合せにも前述の手順を繰り返しますが、この場合、問合せ名は
Q_Matrix
とし、次のSELECT
文を使用します。
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
ORDER BY DEPTNO, JOB
図25-3 関連付けられていない3つの問合せのデータ・モデル
画像の説明
クロス積グループを作成するには:
- データ・モデル・ビューで、ツール・パレットの「クロス積」ツールをクリックします。
- G_DEPTNOとG_JOBの周囲にボックスをドラッグします。マウス・ボタンを放すと、クロス積グループが作成されます。両方のグループが完全に囲まれていることを確認してください。
図25-4 クロス積グループがある3つの問合せのデータ・モデル
画像の説明
データ・リンクを追加するには:
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- G_DEPTNOグループの「DEPTNO」列をクリックし、G_DEPTNO1グループの「DEPTNO1」列までドラッグします。
- 手順1と2を繰り返しますが、今度はG_JOBの「JOB」列とG_DEPTNO1の「JOB1」列の間でリンクをドラッグします。
図25-5 クロス積グループとデータ・リンクがある3つの問合せのデータ・モデル
画像の説明
25.3.3 レポート・ウィザードによるレイアウトの作成
データ・モデルが完成したら、レポート出力で表示するデータ・オブジェクトのレイアウトを作成する必要があります。
レイアウトを作成するには:
- データ・モデル・ビューで、キャンバスを右クリックして「レポート・ウィザード」を選択します。
- レポート・ウィザードの「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。
- 「スタイル」ページで、「マトリックス」を選択します。
- 「グループ」ページで、データ・モデルのグループがすべて「表示グループ」リストに表示されていることを確認します。G_1は「マトリックス」、G_DEPTNOは「下」、G_JOBは「右」、G_DEPTNO1は「下」になっています。
図25-6 レポート・ウィザードの「グループ」ページ
画像の説明
- 「フィールド」ページで、「表示フィールド」リストに次の列のみが表示されていることを確認します。
- DEPTNO
- JOB
- SUM_SAL
図25-7 レポート・ウィザードの「フィールド」ページ
画像の説明
- 「ラベル」ページで、すべてのフィールドのラベルを削除します。
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図25-8 マトリックス・レポートのペーパー・デザイン・ビュー
画像の説明
25.4 単一問合せマトリックスへのサマリーの追加
マトリックス・レポートをより実用的にするには、マトリックス内とレポート全体に各行および各列のサマリーを追加する必要があります。単一問合せの場合、レポート・ウィザードを使用すれば、このようなサマリーを簡単に追加できます。複数問合せの場合は、手動でサマリーを追加した後、レポート・ウィザードを使用してサマリーのフィールドを作成する必要があります。
次の手順では、単一問合せマトリックスにサマリーを追加する手順を説明します。
単一問合せマトリックスにサマリーを追加するには:
- 「ツール」→「レポート・ウィザード」を選択してレポート・ウィザードに戻ります。
注意
レポート・ウィザードを使用したサマリーの追加は、単一問合せマトリックスに対しては実行できますが、複数問合せマトリックスに対してはこの方法は使用できません。
|
- 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。
- 「合計」ページで、「使用可能フィールド」リストの「SUM_SAL」をクリックし、「合計」をクリックします。
ヒント
「合計」タブが表示されていない場合は、タブ右上の矢印を使用する必要があります。
|
- 「終了」をクリックして、ペーパー・デザイン・ビューでレポート出力をプレビューします。
注意
新しいレイアウトを作成するときに、いくつかの点に注意する必要があります。まず、マトリックスの列の値のサマリーは、各列の一番下に表示されます。そのため、レポートが1ページより長くなることもあります。また、レイアウトの幅が決まっているため、部門のサマリーが残りのマトリックスのページに収まらないことがあります。この場合、部門サマリーとレポート・サマリーは次のページへオーバーフローします。レポートの2ページ目に進むと、部門サマリーとレポート・サマリーが表示されています。
|
25.5 金額の書式設定
レポートを読みやすくするために、金額の書式を設定できます。
金額の書式を設定するには:
- レポートの最初のページで、セルの値のいずれかをクリックします。すべての値が選択されるので、それらのプロパティを同時に変更できます。
- [Shift]を押しながらマトリックス列の一番下にあるサマリー値の1つをクリックします。
- ツールバーの「通貨」ボタンをクリックします。すべての値の横に通貨記号が表示されます。
- ツールバーの「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- フィールドのサイズを変更します。「SALESMAN」ラベルの下でセルの値の一番右側にあるハンドルをクリックし、そのまま左へ約0.5インチ(1.5 cm)ドラッグします。この操作を完了すると、部門サマリーが2ページ目から1ページ目へ移動します。
- [Shift]を押しながら「SALESMAN」ラベルをクリックします。
- ツールバーの「右に整列」ボタンをクリックします。
- ペーパー・デザイン・ビューの空き領域をクリックして、すべてのオブジェクトの選択を解除します。
- マトリックスの行の最後にある部門サマリーの1つをクリックします。すべての部門サマリーが選択されます。
- [Shift]を押しながら部門サマリーの下にあるレポート・サマリーをクリックします。
- [←]キーを使用して、これらのサマリーを左へ移動し、マトリックスの「SALESMAN」列とほぼ整列するようにします。
- ツールバーの「通貨」ボタンをクリックします。すべての値の横に通貨記号が表示されます。
- ツールバーの「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- フィールドのサイズを変更します。選択したフィールドの1つの一番右側にあるハンドルをクリックし、そのまま左へ約0.5インチ(1.5 cm)ドラッグします。
- ツールバーの「右に整列」ボタンをクリックします。
図25-9 金額が書式設定されたマトリックス・レポートのペーパー・デザイン・ビュー
画像の説明
25.6 空白のかわりにゼロを追加
マトリックス・レポートでは、データの並置が表示されます。つまり、値が2つの異なるデータ項目によって共有されます。これらの項目とは行と列のラベルに相当します。
マトリックスでは、この値の並置がグリッド状のフォーマットを使用して表示されます。2つの項目に共通するものがない場合、そのグリッドは空になります。これにより、マトリックスに穴があくことがあります。ボイラープレート・テキストを使用して、この穴に値を挿入できます。
注意
グリッドの空き領域をNULL値と混同しないでください。NULL値はデータベースからフェッチされた実際の値です。マトリックス・レポートの領域が空になるのは、そこへ挿入する値がフェッチされなかったためです。
|
空白をゼロに置き換えるには:
- サマリーを追加したマトリックス・レポートを開きます。
- オブジェクト・ナビゲータで、「ペーパー・レイアウト」ノードの横のビュー・アイコンをダブルクリックして、ペーパー・レイアウト・ビューを表示します。
ヒント
次の手順では、オブジェクトを正確に配置する必要があります。このため、ビューを拡大して、操作しやすいようにします。「拡大」ツールをクリックし、ペーパー・レイアウト・ビューの任意の場所をクリックします。必要に応じて何度か繰り返します。
|
- ペーパー・レイアウト・ビューで、ツールバーの「制限オン」ボタンおよび「フレックス・オン」ボタンをクリックして、両モードをオンにします。
- ツールバーのフォント・リストから、「Arial(欧文)」、ポイント・サイズ「10」を選択します。
- ツールバーの「右に整列」ボタンをクリックします。
- ツール・パレットの「テキスト」ツールをクリックします。
- 「F_SUM_SAL」フィールドの上で、そのフィールドの右端から約0.75インチ(2 cm)のところをクリックします。ここでは、F_SUM_SALの右上にオブジェクトを作成します。
- 次のように入力します(日本語環境では$ではなく¥を指定してもよいでしょう)。
$0.00
- レイアウトの空白領域をクリックし、すべてのオブジェクトを選択解除します。
- オブジェクト・ナビゲータで、「検索」フィールドに
B_1
と入力します。作成したオブジェクトが表示されます。オブジェクト・ナビゲータを所有者別表示(「表示」→「表示を変更」→「所有者別表示」)で表示している場合は、R_G_SUM_SALの下にB_1とF_SUM_SALが同レベルで表示されます。
ヒント
R_G_SUM_SALの下にB_1が表示されない場合は、ペーパー・レイアウト・ビューに戻って、B_1を削除し、もう一度試してください。
|
図25-10 新しいオブジェクトが選択されたオブジェクト・ナビゲータ
画像の説明
- 「R_G_SUM_SAL」をクリックし、[Ctrl]を押しながら「F_SUM_SAL」をクリックして両方を選択し、B_1の選択を解除します。
図25-11 繰返し枠とフィールドが選択されたオブジェクト・ナビゲータ
画像の説明
- レポート・エディタのタイトル・バーをクリックして、アクティブなウィンドウにします。
- ツールバーの「制限オフ」ボタンをクリックして、制限モードをオフにします。
- 「レイアウト」→「前面へ」を選択します。
ヒント
この操作が終わると、B_1は、R_G_SUM_SALの子ではなく、R_G_SUM_SALのすぐ上に同列に表示されます。B_1がまだR_G_SUM_SALの下に子として表示されている場合は、R_G_SUM_SALの子として表示されなくなるまで、手順11〜14を繰り返します。
|
- ペーパー・レイアウト・ビューで、ツールバーの「制限オン」ボタンをクリックして、制限モードをオンに戻します。
- ツールバーの「ペーパー・デザイン」ボタンをクリックし、ペーパー・デザイン・ビューを表示します。
ヒント
$0.00がその周りにある他の金額と整列していない場合は、$0.00を選択し、矢印キーを使用して適切な位置へ移動します。
|
図25-12 空白がゼロに置き換えられたマトリックス・レポートの出力
画像の説明
25.7 グリッドの追加
マトリックス・レポートは、各セル間をグリッド線で区切る方が見やすい場合があります。ほとんどのオブジェクトでは、「枠なし」がデフォルト設定です。グリッド線を追加するには、該当するオブジェクトを選択し、それに線カラーを指定します。
グリッド線を追加するには:
- 空白のかわりにゼロが表示されるように変更したマトリックス・レポートを開きます。
- オブジェクト・ナビゲータで、「ペーパー・レイアウト」ノードの横のビュー・アイコンをダブルクリックして、ペーパー・レイアウト・ビューを表示します。
- オブジェクト・ナビゲータで、「表示」→「表示を変更」→「オブジェクト・タイプ別表示」を選択します。
- オブジェクト・ナビゲータの「ペーパー・レイアウト」ノードの下で、[Ctrl]を押しながらクリックして次のオブジェクトをすべて選択します。
- F_SUMSUM_SALPERDEPTNO
- F_SUMSUM_SALPERJOB
- F_SUMSUM_SALPERREPORT
- F_SUM_SAL
- B_1
- ペーパー・レイアウト・ビューのタイトル・バーをクリックして、アクティブなウィンドウにします。
- ペーパー・レイアウト・ビューで、ツール・パレットの「線カラー」ツールをクリックし、黒をクリックします。
- ツールバーの「ペーパー・デザイン」ボタンをクリックし、ペーパー・デザイン・ビューを表示します。マトリックス内の全セルの周囲にグリッドが表示されます。
図25-13 グリッドを使用したマトリックス・レポートの出力
画像の説明
- レポートを
matrix1qb_<自分のイニシャル>.rdf
という名前で保存します。
25.8 まとめ
これで、すべての作業が完了しました。マトリックス・レポートは正常に作成されました。この章で学習した内容は次のとおりです。
- 単一問合せデータ・モデルを使用してマトリックス・レポートを作成する。
- 複数問合せデータ・モデルを使用してマトリックス・レポートを作成する。
- サマリーを追加して金額の書式を設定する。
- マトリックス・レイアウトで空白にゼロを挿入する。
- グリッドを追加する。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。