Oracle XML Publisherでグラフ付きレポートを作成する方法
本記事では、Oracle® XML Publisherを使用して、グラフ(チャート)入りのレポートを作成する方法を解説します。
レポートのデータは表形式で表示されることが多いですが、グラフを使えばデータを視覚的に表現でき、内容がより分かりやすく伝わります。
例えば、以下のようなレポートはグラフを活用することで効果的に改善できます。
- 組織管理(OM)データに基づく顧客の販売履歴
- 失敗・完了・警告付き完了となった同時実行リクエストの日別発生件数
グラフの種類
XML Publisherで利用できる主なグラフの種類は以下の通りです。
- 棒グラフ(縦棒・横棒):X軸とY軸を持つバー形式でデータを表示します。
- 折れ線グラフ:時系列データの表示に適しています。
- 円グラフ:データを円形のグラフで表現し、構成比の可視化に適しています。
棒グラフの作成
まず、XMLデータファイルのサンプルを用意します。
<main>
<DATA_RECORD>
<STATUS>Normal</STATUS>
<REQ_COUNT>210</REQ_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<STATUS>Warning</STATUS>
<REQ_COUNT>30</REQ_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<STATUS>Error</STATUS>
<REQ_COUNT>60</REQ_COUNT>
</DATA_RECORD>
</main>

rtfテンプレートを開き、XML Publisherアドインからグラフタイプのオブジェクトを挿入します。
「詳細」タブをクリックし、以下のコードを貼り付けます。
<Graph graphType = "BAR_VERT_CLUST">
<Title text="Concurrent Request Status 5-DEC-2019" visible="true" horizontalAlignment="CENTER"/>
<O1Title text="Request Status" visible="true"/>
<Y1Title text="Number of Requests" visible="true"/>
<LocalGridData colCount="{count(//DATA_RECORD)}" rowCount="1">
<RowLabels>
<Label>Request Count</Label>
</RowLabels>
<ColLabels>
<xsl:for-each select="//DATA_RECORD">
<Label>
<xsl:value-of select="STATUS"/>
</Label>
</xsl:for-each>
</ColLabels>
<DataValues>
<RowData>
<xsl:for-each select="//DATA_RECORD">
<Cell>
<xsl:value-of select="REQ_COUNT"/>
</Cell>
</xsl:for-each>
</RowData>
</DataValues>
</LocalGridData>
</Graph>

これにより、テンプレート上にダミーのグラフ画像が作成されます。出力時に必要なサイズへ調整する際は、この画像を利用します。
棒グラフ用XMLの解説
以下、コードの内容を行ごとに解説します。
<Graph graphType = "BAR_VERT_CLUST">
この行は、グラフの種類とカテゴリをBAR_VERT_CLUST(垂直方向のクラスタ形式の棒グラフ)として指定しています。
<Title text="Concurrent Request Status 5-DEC-2019" visible="true" horizontalAlignment="CENTER"/>
この行では、グラフのタイトルとその配置位置を指定します。XMLタグを使えば、動的なタイトルを設定することも可能です。
<O1Title text="Request Status" visible="true"/>
<Y1Title text="Number of Requests" visible="true"/>
これらの行では、棒グラフのX軸とY軸の名称を定義しています。
<LocalGridData colCount="{count(//DATA_RECORD)}" rowCount="1">
このセクションでは、グラフ内の行数と列数を指定します。
この例では colCount="{count(//DATA_RECORD)}" としています。XMLデータファイルには DATA_RECORD が3つ含まれているため、グラフは3列になります。また、rowCount="1" はこの棒グラフの行数を示します。
<RowLabels>
<Label>Request Count</Label>
</RowLabels>
このセクションでは行ラベルを定義します。ラベルは静的にも動的にも設定できます。ここではRequest Countという固定ラベルを使用しました。
<ColLabels>
<xsl:for-each select="//DATA_RECORD">
<Label>
<xsl:value-of select="STATUS"/>
</Label>
</xsl:for-each>
</ColLabels>
このセクションでは列ラベルを定義します。XMLデータファイル内の STATUS タグの値に基づいた動的な列ラベルを使用できます。
<DataValues>
<RowData>
<xsl:for-each select="//DATA_RECORD">
<Cell>
<xsl:value-of select="REQ_COUNT"/>
</Cell>
</xsl:for-each>
</RowData>
</DataValues>
このセクションはグラフのデータ値を参照します。描画されるバーは、XMLデータファイル内の REQ_COUNT タグの値に比例した大きさになります。


円グラフの作成
XMLデータファイルのサンプルは棒グラフの場合と同じものを使用します。
<main>
<DATA_RECORD>
<STATUS>Normal</STATUS>
<REQ_COUNT>210</REQ_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<STATUS>Warning</STATUS>
<REQ_COUNT>30</REQ_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<STATUS>Error</STATUS>
<REQ_COUNT>60</REQ_COUNT>
</DATA_RECORD>
</main>

rtfテンプレートで、Publisherアドインからグラフタイプのオブジェクトを挿入します。

「詳細」タブをクリックし、以下のコードを貼り付けます。
<Graph graphType="PIE">
<Title text="Concurrent Request Status 5-DEC-2019"
visible="true" horizontalAlignment="LEFT" />
<LocalGridData rowCount="{count(//DATA_RECORD)}" colCount="1">
<RowLabels>
<xsl:for-each select="//DATA_RECORD">
<Label>
<xsl:value-of select="STATUS" />
</Label>
</xsl:for-each>
</RowLabels>
<DataValues>
<xsl:for-each select="//DATA_RECORD">
<RowData>
<Cell>
<xsl:value-of select="REQ_COUNT"/>
</Cell>
</RowData>
</xsl:for-each>
</DataValues>
</LocalGridData>
</Graph>

円グラフ用XMLの解説
以下、コードの内容を行ごとに解説します。
<Graph graphType="PIE">
この行は、グラフの種類とカテゴリを PIE(円グラフ)形式として指定しています。
<LocalGridData rowCount="{count(//DATA_RECORD)}" colCount="1">
このセクションでは、グラフ内の行数と列数を指定します。
この例では rowCount="{count(//DATA_RECORD)}" としています。XMLデータファイルには DATA_RECORD が3つ含まれているため、円は3つのセクションに分割されます。
<RowLabels>
<xsl:for-each select="//DATA_RECORD">
<Label>
<xsl:value-of select="STATUS" />
</Label>
</xsl:for-each>
</RowLabels>
このセクションでは行ラベルを定義します。ラベルは静的にも動的にも設定でき、ここではXMLデータファイル内の STATUS タグの値に基づいた行ラベルを使用しています。
<DataValues>
<RowData>
<xsl:for-each select="//DATA_RECORD">
<Cell>
<xsl:value-of select="REQ_COUNT"/>
</Cell>
</xsl:for-each>
</RowData>
</DataValues>
このセクションはグラフのデータ値を参照し、REQ_COUNT タグの値に比例した大きさの扇形を作成します。各値は合計件数に対する割合を表します。


折れ線グラフの作成
折れ線グラフは、一般的に時系列データを扱う場合に使用します。
XMLデータファイルのサンプル:
<main>
<DATA_RECORD>
<YEAR>2011</YEAR><ORDER_COUNT>6797</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2012</YEAR><ORDER_COUNT>6686</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2013</YEAR><ORDER_COUNT>6851</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2014</YEAR><ORDER_COUNT>7065</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2015</YEAR><ORDER_COUNT>6421</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2016</YEAR><ORDER_COUNT>6816</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2017</YEAR><ORDER_COUNT>9426</ORDER_COUNT>
</DATA_RECORD>
<DATA_RECORD>
<YEAR>2018</YEAR><ORDER_COUNT>9008</ORDER_COUNT>
</DATA_RECORD>
</main>
rtfテンプレートで、XML Publisherアドインからグラフタイプのオブジェクトを挿入します。
「詳細」タブをクリックし、以下のコードを貼り付けます。
<Graph graphType="LINE_VERT_ABS">
<Title text="Cutomer Orders Yearwise" visible="true" horizontalAlignment="CENTER" />
<O1Title text="Year" visible="true" />
<Y1Title text="Number of Orders" visible="true" />
<LocalGridData colCount="{count(//DATA_RECORD)}" rowCount="1">
<RowLabels>
<Label>Order Count</Label>
</RowLabels>
<ColLabels>
<xsl:for-each select="//DATA_RECORD">
<Label>
<xsl:value-of select="YEAR" />
</Label>
</xsl:for-each>
</ColLabels>
<DataValues>
<RowData>
<xsl:for-each select="//DATA_RECORD">
<Cell>
<xsl:value-of select="ORDER_COUNT" />
</Cell>
</xsl:for-each>
</RowData>
</DataValues>
</LocalGridData>
</Graph>

これにより、テンプレート上にダミーのグラフ画像が作成されます。出力時に必要なサイズへ調整する際は、この画像を利用します。
折れ線グラフ用XMLの解説
以下、コードの内容を行ごとに解説します。
<Graph graphType="LINE_VERT_ABS">
この行は、グラフの種類とカテゴリを LINE_VERT_ABS(折れ線グラフ)として指定しています。
その他のタグは、棒グラフの場合と同じ構造になっています。


グラフの活用シーン
Oracleでは、分析関連のレポートにおいてグラフが非常に役立ちます。あらゆるXML Publisherレポートで、この機能を自由に活用できます。
まとめ
グラフは視認性が高く、エンドユーザーにとってデータの内容をより分かりやすく伝えられます。大規模なデータセットを扱う場合は、データをあらかじめマテリアライズド・ビューに集約しておき、そのビューを基にXML Publisherでレポートを作成すると効率的です。これにより、高価なサードパーティ製ツールを導入する必要もなくなります。
ご意見やご質問がある場合は、「Feedback」タブからお知らせください。
専門家による管理・運用・構成で環境を最適化
Rackspaceのアプリケーションサービス(RAS)の専門家は、幅広いアプリケーションポートフォリオにわたって、以下のようなプロフェッショナルサービスおよびマネージドサービスを提供しています。
- eコマースおよびデジタルエクスペリエンスプラットフォーム
- エンタープライズ・リソース・プランニング(ERP)
- ビジネスインテリジェンス(BI)
- Salesforceカスタマー・リレーションシップ・マネジメント(CRM)
- データベース
- メールホスティングおよび生産性向上ソリューション
私たちが提供する価値:
- 偏りのない専門知識:即座に価値を生み出す機能に焦点を当て、モダナイゼーションの道のりをシンプルにサポートします。
- Fanatical Experience™:Process first. Technology second.®(プロセスが先、テクノロジーが後)というアプローチと専任の技術サポートを組み合わせ、包括的なソリューションを提供します。
- 比類のないポートフォリオ:豊富なクラウド経験を活かし、適切なクラウド上に適切なテクノロジーを選択・導入するお手伝いをします。
- アジャイルなデリバリー:お客様の現在の状況に合わせて対応し、私たちの成功をお客様の成功と一致させます。
今すぐチャットでご相談ください。
-
Excelの集計関数を使ってデータを集計する方法|初心者向け基本ガイド
Excelを日常的に使っている方なら、データの集計や操作に使える組み込み関数の多さに驚いたことがあるでしょう。Excelは、金融の授業を受ける学生からウォール街のヘッジファンドマネージャーまで、文字通りあらゆる人が使っています。非常に強力でありながら、同時にとてもシンプルなツールなのです。 これからExcelを学び始める方にとって、最初に覚えておきたいのが「集計関数」です。代表的なものには、SUM(合計)、AVERAGE(平均)、MAX(最大値)、MIN(最小値)、MODE(最頻値)、MEDIAN(中央値)、COUNT(個数)、STDEV(標準偏差)、LARGE、SMALL、AGGREGATE
-
Excelでデータをグラフ化する方法:基本操作からカスタマイズまで徹底解説
Excelでのデータのグラフ化は、今では非常にシンプルになり、自動化も大きく進歩しています。表形式のスプレッドシートから、面グラフ・棒グラフ・折れ線グラフ・円グラフといった見やすいチャートまで、数回のクリックで短時間で作成できます。さらに便利なことに、スプレッドシート上のデータを編集すると、Excelが自動的にグラフへも同じ変更を反映してくれるのです。 しかし、Excelのグラフ機能の魅力はこれだけにとどまりません。グラフの種類はいつでも変更できますし、配色や視点(2D、3Dなど)、軸の入れ替えなど、多彩な編集も自由自在に行えます。 もちろん、すべての始まりはスプレッドシートです。 データのレ