| Oracle® Fusion Middleware WebCenter Sites: Analytics開発者ガイド 11gリリース1 (11.1.1.6.0) E49683-01 |
|
![]() 前 |
![]() 次 |
この演習の目標は、完全かつ使用可能なAnalyticsレポートの構成方法を理解することです。この目標を達成するために、NewBrowsersというカスタム・レポートを構成します。このレポートには、レポート期間内に訪問者が指定のサイトのページ・ビューにアクセスするときに使用したブラウザが表示されます。
|
注意: このチュートリアルで作成するNewBrowserレポートは、Analyticsインストールに含まれているデフォルトのBrowsersレポートを再現したものです。このチュートリアルでは、構成するBrowsersレポートのxmlファイルおよびレポート名に加えて、Beanクラスおよびマッパー・クラスの名前も、デフォルトのBrowsersレポートを上書きしないように名前が変更されています。 |
レポートには、FirstSite IIサンプル・サイトですでにキャプチャされ、Analyticsデータベースに格納されているデータが表示されます。
レポートを作成する際は、最初に、「Hello World」というテキストを表示するテスト・モジュールが含まれる、簡単なレポートを作成します。このテスト・モジュールは、レポートへの機能追加を開始するときに削除します。
|
注意: この演習では、FirstSite IIサンプル・サイトのみを使用することを前提としています。AnalyticsまたはWebCenter Sitesインタフェースで選択が求められた場合は、このサイトを選択します。 |
この演習の内容は次のとおりです。
Analyticsレポートは、モジュールで構成されます。モジュールとは、表、チャート、フィルタなど、レポートの特定の機能を実装する一連のコードです。たとえば、この演習で作成するNewBrowsersレポートには、フィルタ、チャート、表および期間セレクタの機能が含まれます(図5-1を参照)。
期間セレクタ以外の各機能は、別個のモジュールとして、かつ、ほとんどの場合、自己完結型のモジュールとして実装されます。(フィルタなど、機能によっては、動作するために他のモジュールのコードを変更する必要があります。)表モジュールの構造を見てみましょう。モジュール宣言、データ取得セクションおよび表示セクションがあります。

データベースへの問合せを行ってデータを表示するモジュールには、前述のサンプル・コードに示されているように、<sql>タグおよび<display>タグが含まれます。フィルタ・モジュールなど、データを表示しないモジュールの構造は、次のとおりです。
<filter name="filter-browsername" required="false" type="text" captions="name" key="filter-browsername" />
チャート・モジュールの構造は、前述の構造と同じです。
レポートの表やチャートなどの機能には、アプリケーション・サーバーのクラスパスでアクセス可能なプロパティ・ファイルに値を定義しておくことによって入力する必要がある、領域(ヘッダー、フィールド名、列ヘッダーなど)が含まれます。たとえば、次の文では、表のブラウザ名列のヘッダーを定義しています。
report_newbrowser_module_browser_column_broname=Name
レポートの作成方法を理解したので、先に進み、NewBrowsersレポートを作成します。第5.2項「表示するNewBrowsersレポートの作成および準備」に進みます。
NewBrowsersレポートの元となるコードは、次のとおりです。コードには参考用の注釈が含まれています。
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE report SYSTEM "report.dtd"> -->
<report type="std" visible="true" name="newbrowser" >
<!-- Global parameters (such as sitenames), are defined here-->
<globalparam name="sitenames" />
<!-- After declaring global parameters, start declaring several request parameters like rgrpid, timepreset, sdate, edate etc. sdate, edate enable the time range selector in the report-->
<param type="request" name="rgrpid" key="rgrpid" required="false" />
<param type="request" name="timepreset" key="timepreset" required="false">
<restriction type="listvalue">
<restrictionvalue value="yesterday" />
<restrictionvalue value="lastweek" />
<restrictionvalue value="lastmonth" />
<restrictionvalue value="last7days" />
<restrictionvalue value="last4weeks" />
<restrictionvalue value="last12months" />
</restriction>
</param>
<param type="request" name="siteid" key="siteid" required="true" />
<param type="request" name="sdate" key="sdate" required="true">
<restriction type="isDate" value="dd.MM.yyyy" />
</param>
<param type="request" name="edate" key="edate" required="true">
<restriction type="isDate" value="dd.MM.yyyy" />
</param>
<!—a filter is getting configured here, that will filter the report data by browser name. -->
<filter name="filter-browsername"
required="false"
type="text"
captions="name"
key="filter-browsername"
/>
<!—the following parameter will generate the sum of all sessions that have come from different browsers-->
<param type="sql" name="browsertotal" >
<query>
select
nvl(sum(count), 0) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on (dates.id = l3.dateid)
where<![CDATA[
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
</query>
</param>
<!-- The chart module defines your pie chart. -->
<module type="stdchart" name="chartbrowser">
<param type="request" name="charttype" key="chartbrowser_charttype"
default="pie_labeled">
<restriction type="listvalue">
<restrictionvalue value="pie_labeled" />
<restrictionvalue value="bar_labeled" />
</restriction>
</param>
<param type="string" name="chart_max_display" value="10"/>
<param type="string" name="chart_display_rest" value="true"/>
<sql>
<query>
select
bro.id as broid,
bro.name as broname,
nvl(count, 0) as count,
<equals name="browsertotal" value="0">
0 as percent
</equals>
<notEquals name="browsertotal" value="0">
(nvl(count, 0)/#browsertotal#)*100 as percent
</notEquals>
from
l2_browser bro
join (
select
bro2.id as broid,
bro2.name as broname,
sum(count) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on
(dates.id = l3.dateid)
join l2_browser bro2 on (l3.browserid = bro2.id
where<![CDATA[
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
group by
bro2.id, bro2.name
) on (bro.id = broid)
<dynamicOrderBy default="count-desc" />
</query>
</sql>
<display type="html">
<value name="xaxis" type="string">
<valueparam name="format" parse="false"/>
<valueparam name="value" value="#broname#" />
</value>
<value name="yaxis" type="number">
<valueparam name="format" parse="false" value="#####0" />
<valueparam name="value" value="#count#" />
</value>
</display>
</module>
<!-- This module defines the table that will show statistics for each browser to the target page.-->
<module type="stdtable" name="browser" >
<sql>
<query>
select
bro.id as broid,
bro.name as broname,
bro.iconpath as broiconpath,
nvl(count, 0) as count,
<equals name="browsertotal" value="0">
0 as percent
</equals>
<notEquals name="browsertotal" value="0">
(nvl(count, 0)/#browsertotal#)*100 as percent
</notEquals>
from
l2_browser bro
join (
select
bro2.id as broid,
bro2.name as broname,
sum(count) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on (dates.id = l3.dateid)
join l2_browser bro2 on (l3.browserid = bro2.id)
where<![CDATA[
<!-- The CDATA statement allows the time period selector to limit the data displayed in the table to a specific time period. -->
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
<!-- The <notNull> tag ensures that its contents are added to the main query only if they are not null. -->
<notNull name="filter-browsername">
and lower(bro2.name) like lower(replace('#filter-
browsername#','*','%'))
</notNull>
group by
bro2.id, bro2.name
) on (bro.id = broid)
<dynamicOrderBy default="count-desc" />
</query>
<count type="simple" />
</sql>
<display type="html">
<!-- Table columns are defined here.
Each <column> statement defines one column.-->
<column name="broname" columntype="text" sortrscolumn="broname">
<value type="image">
<valueparam name="src" value="#imgpath#/browser/#broiconpath#" />
<valueparam name="alt" value="#broname#" />
<valueparam name="text" value="#broname#" />
<valueparam name="width" value="16" />
<valueparam name="height" value="16" />
</value>
<value type="string">
<valueparam name="value" value=" #broname#" />
</value>
</column>
<column name="count" columntype="number" sortrscolumn="count">
<value type="number">
<valueparam name="format" parse="false" value="#####0" />
<valueparam name="value" value="#count#" />
</value>
</column>
<column name="percent" columntype="number" sortrscolumn="count">
<value type="number">
<valueparam name="format" parse="false" value="#####0.0" />
<valueparam name="value" value="#percent#" />
</value>
</column>
<column name="chart" columntype="string">
<value type="chart">
<valueparam name="format" parse="false" value="#####0" />
<valueparam name="value" value="#percent#" />
<valueparam name="maxvalue" value="100" />
<valueparam name="width" value="100" />
<valueparam name="image" value="#imgpathstyle_branding#graph_
blue.gif" />
</value>
</column>
</display>
</module>
</report>
NewBrowsersレポート(第5.1項「レポート設計」を参照)を作成します。
|
注意: この演習では、次に示す順番で、レポートに機能を追加します。レポート・コードに精通している場合は、自分にとって最も都合のよい順番でレポートを作成できます。ただし、フィルタなど、機能によっては、他のモジュールのコードを変更する必要があるので、注意してください。 |
第5.2.1項「レポート・ファイルの作成および登録」。最初に、レポート・コードが格納されるXMLファイルを作成し、それをAnalyticsに登録します。
第5.2.2項「表の追加」。表には、各ブラウザの一連の統計情報が表示されます(ブラウザ名、セッション、すべてのセッションのパーセント、およびパーセントをグラフィックに表示するチャート)。
第5.2.3項「期間セレクタの追加」。このセレクタを使用すると、レポートに表示されるデータを特定の期間に制限できます。(この機能にモジュールは必要ありません。)
第5.3項「フィルタの追加」。フィルタを使用すると、レポートに表示されるデータを特定のブラウザやセッション数に制限できます。
第5.3.3項「チャートの追加」。NewBrowsersのチャートには、レポート期間内にサイトのページ・ビューへのアクセスで使用された特定のブラウザの頻度が表示されます。
第5.3.4項「完成したNewBrowsersレポートのテスト」。レポートをテストして、外観と動作が意図したとおりであることを確認します。
最初に、レポートの基盤を作成します。これは、レポート・コードが格納されるXMLファイルです。ここでは、テキストのみを表示するHello Worldテスト・モジュールが含まれるレポート・ファイルを作成し、そのレポートをAnalyticsに登録します。
レポート・ファイルを作成および登録する手順は、次のとおりです。
第5.2.1.2項「手順2: XMLファイルのAnalyticsレポート・ディレクトリへの配置」
第5.2.1.3項「手順3: レポート・コンポーネントのラベル付け」
第5.2.1.4項「手順4: Analyticsユーザーへのレポートの有効化」
最初の手順では、report_newbrowser.xmlという名前のXMLファイルを作成します。
テキスト・エディタで、report_newbrowser.xmlという名前の新しいファイルを作成します。
次のコードをファイルに貼り付けます。
<report type="std" name="newbrowser">
<param type="request" name="rgrpid" key="rgrpid" required="false" />
<param type="request" name="siteid" key="siteid" required="true" />
<module type="simpletext" name="helloworld" >
<display type="html">
<text>
<![CDATA[
<div>
Hello World! FatWire is greeting you!
</div>
]]>
</text>
</display>
</module>
</report>
ファイルを保存して閉じます。
レポート・ファイルを、global.xml構成ファイル内のreport_instdirパラメータで定義されるディレクトリにコピーします。これによって、Analyticsはレポート・ファイルにアクセスできます。global.xmlファイルおよびその場所の詳細は、『Oracle Fusion Middleware WebCenter Sitesインストレーション・ガイド』を参照してください。
レポート名、モジュール・ヘッダーなど、領域のラベルを定義する必要があります。定義するラベルは、レポートが生成されるとレポート・インタフェースに表示されます。
|
注意: Analyticsでのコンポーネント・ラベリングは、
|
テキスト・エディタで、NewBrowsersLocalization.propertiesという名前の新しいファイルを作成します。
アプリケーション・サーバーのクラスパス内のディレクトリに、ファイルを保存します。この演習では、アプリケーション・サーバーのanalytics Webアプリケーション・ディレクトリ内のWEB-INF/classesディレクトリに配置します。
レポート・インタフェース内でラベルを付けるパラメータ文字列ごとに、プロパティ・ファイルに文を追加します。ここでは、レポート名を指定し、Hello Worldモジュールにヘッダーを指定します。プロパティ・ファイルに次の文を追加します。
report_newbrowser=New Browsersreport_newbrowser_module_helloworld=My first report in Analytics!
|
注意: プロパティ・ファイルに文を追加する場合は、次の構文を使用する必要があります。
|
2つの文を追加したら、ファイルを保存して閉じます。
プロパティ・ファイルの名前をglobal.xmlファイルに追加することによって、プロパティ・ファイルをAnalyticsに登録します。手順は次のとおりです。
テキスト・エディタで、global.xmlファイル(通常は、アプリケーション・サーバーのanalytics Webアプリケーション・ディレクトリ内のWEB-INF/classesディレクトリにあります)を開きます。
<locales></locales>セクションを見つけて、次の文をその中に挿入します。
<locale name="NewBrowserLocalization" />
ファイルを保存して閉じます。
アプリケーション・サーバーを再起動して変更を反映します。
Analyticsユーザーが新しいレポートを使用できるためには、レポートをAnalyticsに登録し、レポートをレポート・グループに追加し、レポートへのアクセス権限をユーザーに付与する必要があります。
次のURLからcsuser/csuserとして、Analytics管理インタフェースにログインします。
http://<hostname>:<port>/analyticsadmin/Admin?advmode=true
|
注意:
|
新しいレポートをAnalyticsに登録します。
左側のペインの「レポート」セクションで、「登録」をクリックします。
レポートの追加/編集フォームが表示されます。
「名前」フィールドに、newbrowserと入力します。
これは、レポートのオブジェクト・ハンドルです。ここで入力する値は、コード内でのレポートの参照に使用されます(第5.2.1.3項「レポート・コンポーネントのラベル付け」で、レポートのコンポーネントにラベルを設定するときに、この名前を使用しました)。この名前がレポート・インタフェースに表示されることはありません。
「構成ファイルのパス」フィールドに、report_newbrowser.xmlと入力します。
「保存」をクリックします。
新しいレポートを「お気に入り」レポート・グループに追加します。
左側のペインのレポートとレポート・グループ"セクションで、「割当て」をクリックします。
「レポート・グループ」フォームが表示されます。
「レポート・グループ」ドロップダウン・リストで、「ユーザー」を選択します。
レポートのリストで、「newbrowser」の横のチェック・ボックスを選択します。
「レポート・グループ」ドロップダウン・リストで、「お気に入り」を選択します。
レポートのリストで、「newbrowser」の横のチェック・ボックスを選択します。
「保存」をクリックします。
レポートへのアクセス権限をユーザーに付与します。
左側のペインのアクセス権限セクションで、権限の付与をクリックします。
「ユーザー・グループ」フォームが表示されます。
フォームで、「newbrowser」の横のチェック・ボックスを選択します。
「保存」をクリックします。
レポートを生成し、その動作が意図したとおりであることを確認します。
次のURLからcsuser/csuserとして、Analyticsレポート管理インタフェースにログインします。
http://<hostname>:<port>/analytics/Reports.do
左側のペインの「グループ」ドロップダウン・リストで、「お気に入り」を選択します。
「レポート」リストで、「New Browsers」をクリックします。
レポートが表示されます。レポートは図5-2のようになります。
レポートがこの図のように表示されない場合やエラーが表示される場合は、手順を再度追って、コードにエラーがないかどうかを確認します。
レポートが意図したとおりに動作することを確認したら、第5.2.2項「表の追加」に進みます。
表は、Analyticsレポートにデータを表示するための基本的な方法です。ここでは、NewBrowsersレポートに表を追加して、各種ブラウザに関する様々なカテゴリの情報を表示します。
表の追加方法
レポートに表を追加するには、レポートのコードに表モジュールを挿入します。表モジュールには、2つのセクションがあります(第5.1項「レポート設計」の例を参照)。
データ取得セクション(行b-aoの<sql>タグで囲まれた部分)。このセクションには、表に表示するデータをAnalyticsデータベースから取得するSQLコードが含まれています。
表示セクション(行aq-byの<display>タグで囲まれた部分)。このセクションには、データ取得セクションのコードによってAnalyticsデータベースから取得されたデータを書式設定し、表示するコードが含まれています。表示セクションのコードによって、表のレイアウトおよび各列に適用される書式が定義されます。
ここでは、レポートにNewBrowsers表を追加します。この表は、次の列を表示します。
Name
Sessions
Percent of All Sessions
Chart
表は、図5-3のようになります。
レポートに表を追加するには:
report_newbrowser.xmlファイルを開き、Hello Worldテスト・モジュールを次のコードに置き換えます。
<module type="stdtable" name="browser" >
<sql>
<query>
select
bro.id as broid,
bro.name as broname,
bro.iconpath as broiconpath,
nvl(count, 0) as count,
<equals name="browsertotal" value="0">
0 as percent
</equals>
<notEquals name="browsertotal" value="0">
(nvl(count, 0)/#browsertotal#)*100 as percent
</notEquals>
from
l2_browser bro
join (
select
bro2.id as broid,
bro2.name as broname,
sum(count) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on (dates.id = l3.dateid)
join l2_browser bro2 on (l3.browserid = bro2.id)
where<![CDATA[
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
<notNull name="filter-browsername">
and lower(bro2.name) like lower(replace('#filter-
browsername#','*','%'))
</notNull>
group by
bro2.id, bro2.name
) on (bro.id = broid)
<dynamicOrderBy default="count-desc" />
</query>
<count type="simple" />
</sql>
<display type="html">
<column name="broname" columntype="text" sortrscolumn="broname">
<value type="image">
<valueparam name="src" value="#imgpath#/browser/#broiconpath#" />
<valueparam name="alt" value="#broname#" />
<valueparam name="text" value="#broname#" />
<valueparam name="width" value="16" />
<valueparam name="height" value="16" />
</value>
<value type="string">
<valueparam name="value" value=" #broname#" />
</value>
</column>
<column name="count" columntype="number" sortrscolumn="count">
<value type="number">
<valueparam name="format" parse="false" value="#####0" />
<valueparam name="value" value="#count#" />
</value>
</column>
<column name="percent" columntype="number" sortrscolumn="count">
<value type="number">
<valueparam name="format" parse="false" value="#####0.0" />
<valueparam name="value" value="#percent#" />
</value>
</column>
<column name="chart" columntype="string">
<value type="chart">
<valueparam name="format" parse="false" value="#####0" />
<valueparam name="value" value="#percent#" />
<valueparam name="maxvalue" value="100" />
<valueparam name="width" value="100" />
<valueparam name="image" value="#imgpathstyle_branding#graph_blue.gif" />
</value>
</column>
</display>
</module>
前述のコードは、次のように分析されます。
データ取得セクションでは、select問合せによって、必要な行(broid、broname、broiconpath、count、percent)がL3_DATEXSITEXNEWBROWSERXCOUNT表およびL2_BROWSER表から取得されます(行d-ao)。これらの値には、表示セクションからシャープ(#)記号で囲んでコールすることによってアクセスします(たとえば、行baのvalue="#broname#")。
行alの<dynamicOrderBy>タグによって、行の順序が定義されます。この例では、値"count-desc"によって、行の順番がセッション数の降順であることが指定されます。
表示セクションでは、<column>文によって、表を構成する列が定義されます(行ar-bc、bd-bi、bj-boおよびbp-bx)。各列定義は表内の1つの列に対応し、次のパラメータを使用します。
name (必須): 列のオブジェクト・ハンドルを指定します。このハンドルを使用して、NewBrowserLocalization.propertiesファイル内の列のラベルを指定します。
columntype (必須): 列のタイプを指定します。表では数値タイプ、テキスト・タイプおよび文字列タイプの列が使用されます。
sortrscolumn (必須): 列がソート可能かどうか、およびソート可能な場合はデータのソート方法を指定します。
|
注意: ソート可能な列の場合、そのヘッダーに小さな矢印が表示され、その値のソート順が示されます。矢印をクリックすると、ソート順が反転します。 |
この例では、次の列が定義されます。
テキスト・タイプのbroname列(行ar-bc)には、ブラウザの名前と対応するアイコンが表示されます。テキスト・タイプの列では、イメージ、数値、文字列、日付などのタイプのvalueパラメータ(行as-bb)を使用できます。(パラメータ・タイプはvalueタグで定義されます)。このbroname列は、イメージと文字列の2種類の値で構成されています。イメージ・タイプの値は、src (source path)、alt (alternative text)、width、heightなど、様々なvalueパラメータを含みますが、これらに限定されるものではありません。これらのパラメータがまとめられて、レポート上のイメージのレンディションが定義されます。
数値タイプのcount列(行bd-bi)には、ブラウザに基づくセッション数が表示されます。numberタイプの列には、numberタイプ(パラメータ・タイプはvalueタグで定義)のvalueパラメータ(行as-bb)が必要で、これによって表示するデータ(valueパラメータ、行ba)およびデータの書式(formatパラメータ、行az)が指定されます。
数値タイプのpercent列(行bj-bo)には、異なるすべてのブラウザに基づくすべてのセッションを基準とした、セッションのパーセントが表示されます。
ファイルを保存して閉じます。
表および列ヘッダーのラベルを次のように指定します。
テキスト・エディタで、NewBrowserLocalization.propertiesファイル(この演習の場合、アプリケーション・サーバーのanalyticsアプリケーション・ディレクトリ内のWEB-INF/classesディレクトリにあります)を開きます。
ファイルの末尾に次の文を追加します。
# Report New Browser report_newbrowser=Browsers report_newbrowser_module_browser_column_broname=Name report_newbrowser_module_browser_column_count=Sessions report_newbrowser_module_browser_column_percent=Percent of All Sessions report_newbrowser_module_browser_column_chart=Chart report_newbrowser_module_browser=Browsers
ファイルを保存して閉じます。
アプリケーション・サーバーを再起動して変更を反映します。
レポートをテストします。このとき、レポートは図5-4のように表示されます。
レポートが図5-4のように表示されない場合やエラーが表示される場合は、手順を再度追って、コードにエラーがないかどうかを確認します。
第5.2.3項「期間セレクタの追加」に進みます。
NewBrowsersレポートにデータが表示されるようになったので、期間セレクタを追加します。このセレクタは非常に便利な機能です。このセレクタを使用すると、レポートに表示されるデータの量を特定の期間に制限できます。たとえば、特定の日に発生した訪問者のアクティビティや、ある日付にキャプチャされたすべてのアクティビティではなく、ある時間に発生したアクティビティも表示できます。
レポートにアクセスすると、レポート・インタフェースのナビゲーション・ペインに期間セレクタが表示されます。
レポートで期間を選択できるようにするには:
テキスト・エディタで、report_newbrowser.xmlファイル(第5.2.1.2項「手順2: XMLファイルのAnalyticsレポート・ディレクトリへの配置」に記載されているAnalyticsレポート・ディレクトリにあります)を開きます。
グローバル・パラメータ・セクションを見つけて、太字で示されている次のパラメータを追加します。
<param type="request" name="rgrpid" key="rgrpid" required="false" />
<param type="request" name="timepreset" key="timepreset" required="false">
<restriction type="listvalue">
<restrictionvalue value="yesterday" />
<restrictionvalue value="lastweek" />
<restrictionvalue value="lastmonth" />
<restrictionvalue value="last7days" />
<restrictionvalue value="last4weeks" />
<restrictionvalue value="last12months" />
</restriction>
</param>
<param type="request" name="siteid" key="siteid" required="true" />
<param type="request" name="sdate" key="sdate" required="true">
<restriction type="isDate" value="dd.MM.yyyy" />
</param>
<param type="request" name="edate" key="edate" required="true">
<restriction type="isDate" value="dd.MM.yyyy" />
</param>
新しいパラメータによって、レポートにアクセスすると、左側のナビゲーション・ペインに「期間」パネルが表示されます。
表モジュールのデータ取得セクションで、次の太字のコードを、示されているとおりの位置に挿入します。
select
bro.id as broid,
bro.name as broname,
bro.iconpath as broiconpath,
nvl(count, 0) as count,
<equals name="browsertotal" value="0">
0 as percent
</equals>
<notEquals name="browsertotal" value="0">
(nvl(count, 0)/#browsertotal#)*100 as percent
</notEquals>
from
l2_browser bro
join (
select
bro2.id as broid,
bro2.name as broname,
sum(count) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on (dates.id = l3.dateid)
join l2_browser bro2 on (l3.browserid = bro2.id)
where<![CDATA[
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
group by
bro2.id, bro2.name
) on (bro.id = broid)
ファイルを保存して閉じます。
レポートをテストします。レポートは、図5-6のようになります。
期間セレクタを選択します。
「期間」バーをクリックして、期間セレクタのパネルを開きます。
目的の開始日と終了日を選択します。
「適用」をクリックします。
表に表示されるデータは、選択した期間によって異なります。このように表示されない場合やエラーが表示される場合は、手順を再度追って、コードにエラーがないかどうかを確認します。
第5.3項「フィルタの追加」に進みます。
前の項でレポートに期間セレクタを追加したので、表示されるデータを特定の期間に制限できます。しかし、表示されるデータを時間ではなくパラメータで制限するには、どうしたらよいでしょうか。それには、データ・フィルタを追加します。
フィルタ・モジュールによって、レポートのサマリー・セクションに「フィルタ条件」フィールドが追加されて、ユーザーは次の操作を実行できるようになります。
特定のデータ・ポイントまたは値(たとえば、特定のブラウザ)を検索できます。
表示されるデータを、特定のパラメータ(記録されたセッション数など)の特定の範囲に制限できます。
NewBrowsersレポートに次のフィルタを追加します。
ブラウザ名フィルタ。このフィルタによって、特定のブラウザを検索したり、表示されるデータを特定の範囲のブラウザ名に制限できます。
フィルタを実装するには、次の操作が必要です。
フィルタを定義するフィルタ・モジュールを、レポート・コードに追加します。
表示モジュール(表モジュール、チャート・モジュールなど)のデータ取得セクションを変更して、問合せフィルタをサポートします。
レポートにフィルタを追加するには:
テキスト・エディタで、report_newbrowser.xmlファイル(第5.2.1.2項「手順2: XMLファイルのAnalyticsレポート・ディレクトリへの配置」に記載されているAnalyticsレポート・ディレクトリにあります)を開きます。
次のモジュール・コードを、表モジュールの後、かつ、終了の</report>要素の前に追加します。
<filter name="filter-browsername" required="false" type="text" captions="name" key="filter-browsername" />
前述のコードは、次のように分析されます。
|
注意: この例に含まれるタグおよびそこで使用されるパラメータの詳細は、Oracle Fusion Middleware WebCenter Sites: Analyticsタグ・リファレンスを参照してください。 |
フィルタはfilterタグを使用して定義します。このタグでは、次のパラメータが使用されます。
name (必須): フィルタのオブジェクト・ハンドルを指定します。このパラメータには、次の条件が適用されます。
このパラメータの値は、filter-で開始する必要があります。これによって、Analyticsはこの定義をフィルタ定義として扱うことができます。
値は、次に説明するkeyパラメータの値と同じである必要があります。
|
注意: いずれかの条件が満たされない場合、フィルタは機能しません。 |
required (必須): レポートが機能するために、次に説明するkeyパラメータに値を割り当てる必要があるかどうかを指定します。この例では、requiredはfalseに設定されます。
type (必須): フィルタのタイプと同時に、フィルタの入力方法(たとえば、レポート・インタフェースにおけるフィルタの表示方法)を指定します。
この例では、textタイプのフィルタを使用しています。これによってフィルタはテキスト・フィールドとして出現し、ユーザーはここに1つ以上のフィルタ条件を入力できます。この他に、yesno、radio、dbselect、dateなどのタイプがあります。
key (オプション、前述のrequiredを参照): ユーザーが「適用」をクリックしたときに、ユーザーが入力したフィルタ値を渡すために、レポート・ページのURL内のパラメータとして使用される名前を指定します。このパラメータには、次の条件が適用されます。
このパラメータの値は、filter-で開始する必要があります。これによって、Analyticsはこの定義をフィルタ定義として扱うことができます。
値は、前述のnameパラメータの値と同じである必要があります。
|
注意: 2つの条件のいずれかが満たされない場合、フィルタは機能しません。 |
データ取得セクションで、次の太字のコードを、示されているとおりの位置に挿入します。
select
bro.id as broid,
bro.name as broname,
bro.iconpath as broiconpath,
nvl(count, 0) as count,
<equals name="browsertotal" value="0">
0 as percent
</equals>
<notEquals name="browsertotal" value="0">
(nvl(count, 0)/#browsertotal#)*100 as percent
</notEquals>
from
l2_browser bro
join (
select
bro2.id as broid,
bro2.name as broname,
sum(count) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on (dates.id = l3.dateid)
join l2_browser bro2 on (l3.browserid = bro2.id)
where<![CDATA[
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
<notNull name="filter-browsername">
and lower(bro2.name) like lower(replace('#filter-browsername#','*','%'))
</notNull>
group by
bro2.id, bro2.name
) on (bro.id = broid)
前述のコードは、次のように分析されます。
挿入されたコードにより、フィルタに提供された条件(たとえば、フィルタ値)に基づいてSQL問合せが返す結果が制限されます。
各<notNull>タグ内のコードは、<notNull>タグによってコールされるパラメータの値がnullでない場合のみ、問合せに追加されます。
レポート・ファイルを保存して閉じます。テキスト・エディタで、NewBrowserLocalization.propertiesファイル(この演習の場合、アプリケーション・サーバーのanalyticsアプリケーション・ディレクトリ内のWEB-INF/classesディレクトリにあります)を開きます。ファイルの末尾に次の行を追加します。
report_newbrowser_filter-browsername=Filter By Browser Name
レポートをテストします。図5-7のように、レポートの上部のサマリー・セクションに「フィルタ」フィールドが表示されます。
レポートがこの図のように表示されない場合やエラーが表示される場合は、手順を再度追って、コードにエラーがないかどうかを確認します。
第5.3.3項「チャートの追加」に進みます。
この演習の最後の手順では、NewBrowsersレポートにチャートを追加します。チャートによって、レポート内で統計データを視覚的に表示できます。
レポートにチャートを追加するには、レポートのコードにチャート・モジュールを挿入します。チャート・モジュールの構成は、表モジュールの構成と似ています。次の2つのセクションがあります。
データ取得セクション(手順5を参照)。このセクションには、円グラフに表示するデータをAnalyticsデータベースから取得するSQLコードが含まれています。
表示セクション(行6の<display>タグで囲まれた部分)。このセクションには、データ取得セクションのコードによってAnalyticsデータベースから取得されたデータを書式設定し、表示するコードが含まれています。表示セクションのコードによって、チャートのタイプが定義され、チャートの軸にデータが割り当てられます。
この例では、円グラフ(XYチャート、次の手順2を参照)を作成し、すべてのブラウザのセッション数をパーセンテージ形式で表示します。円グラフの各セクションにはブラウザ・データが表示され、チャートの右側には凡例セクションが表示されます。円グラフの各セクションにマウス・ポインタを置くと、ブラウザ名とともにセッション数のパーセンテージが表示されます。
レポートにチャートを追加するには
テキスト・エディタで、report_newbrowser.xmlファイル(第5.2.1.2項「手順2: XMLファイルのAnalyticsレポート・ディレクトリへの配置」に記載されているAnalyticsレポート・ディレクトリにあります)を開きます。
次のモジュール宣言を、レポート・コードの先頭で、最後のグローバル・パラメータ定義の直後、かつ、表モジュールの前に追加します。これによって、レポートが生成されたときに、チャートが表の上に表示されます。
|
注意: コード内でのモジュールの順番が、レポート・インタフェースに表示される順番になります。(フィルタ・モジュールは例外で、フィルタはレポート上部のサマリー・セクション内でその位置が固定されています。) |
<module type="stdchart" name="chartbrowser">
<param type="request"
name="charttype"
key="chartbrowser_charttype"
default="pie_labeled">
<restriction type="listvalue">
<restrictionvalue value="pie_labeled" />
<restrictionvalue value=" bar_labeled " />
</restriction>
</param>
前述のコードは、次のように分析されます。
stdchartタイプのモジュールで、これがチャート・モジュールとして定義されます。nameパラメータを使用して、モジュールにオブジェクト・ハンドルを割り当てます。この手順の後半では、レポートのローカライゼーション・プロパティ・ファイルに定義することによって、このハンドルを使用してチャート・モジュールにヘッダーを指定します。
<param>タグは、チャートの目的のスタイルを定義します。typeパラメータのrequestおよびnameパラメータのcharttypeは、keyパラメータに値を割り当てることによってチャート・タイプを指定します。keyパラメータの値は、moduleName_chartstyleの構文に従う必要があります。この例では、chartbrowser_charttypeというチャート・タイプを使用しています。
|
注意: 使用可能なチャート・スタイルはSwiff Chart Generatorソフトウェアで定義されていて、Analyticsによって参照されます。Swiff Chart Generatorでは、面グラフ、棒グラフ、縦棒グラフ、折れ線グラフおよび円グラフがデフォルトでサポートされています。 |
<restriction>タグは、必須パラメータの検証を有効にします。各<restrictionvalue>タグで定義されるパラメータ値のみが許可され、他のすべての値についてはエラー・メッセージが表示されます。
チャート・モジュールに次のパラメータを追加します。
<param type="string" name="chart_max_display" value="10"/> <param type="string" name="chart_display_rest" value="true"/>
chart_max_displayパラメータは、円グラフに、人気の上位10ブラウザに対応する10種類の色分けされたセクションが表示されることを示しています。chart_display_restパラメータは、残りのブラウザ・セッション数が1つの円グラフ・セクションに表示されることを示しています。この2つのパラメータはオプションであり、このオプションの指定が省略されている場合は、デフォルト値でチャートのレンダリングが行われます。
チャート・モジュールにデータ取得セクションを追加します。次のコードを、前の手順で追加したチャート・モジュール宣言の後に挿入します。
select
bro.id as broid,
bro.name as broname,
nvl(count, 0) as count,
<equals name="browsertotal" value="0">
0 as percent
</equals>
<notEquals name="browsertotal" value="0">
(nvl(count, 0)/#browsertotal#)*100 as percent
</notEquals>
from
l2_browser bro
join (
select
bro2.id as broid,
bro2.name as broname,
sum(count) as count
from
help_dates dates
join l3_datexsitexnewbrowserxcount l3 on (dates.id = l3.dateid)
join l2_browser bro2 on (l3.browserid = bro2.id)
where<![CDATA[
siteid = #siteid# and
dates.dat >= to_date('#sdate#', 'DD-MM-YYYY') and
dates.dat < to_date('#edate#', 'DD-MM-YYYY')+1 ]]>
group by
bro2.id, bro2.name
) on (bro.id = broid)
前述のコードは、次のように分析されます。
SQL問合せによって、円グラフに表示されるデータが取得されます。チャート・モジュールのデータ取得問合せは、表モジュールの問合せと似ています。唯一の違いは、チャート・モジュールのデータ取得問合せにはフィルタ部分がないことです(たとえば、チャートのデータはフィルタ入力によるフィルタ処理を受けません。表データのみがフィルタ処理されます)。ただし、問合せに同じフィルタを追加して、チャート・データにフィルタを適用できます。
チャート・モジュールに表示セクション・コードを追加します。次のコードを、前の手順で追加したデータ取得セクションの後に挿入します。
<display type="html"> <value name="xaxis" type="string"> <valueparam name="format" parse="false"/> <valueparam name="value" value="#broname#" /> </value> <value name="yaxis" type="number"> <valueparam name="format" parse="false" value="#####0" /> <valueparam name="value" value="#count#" /> </value> </display>
前述のコードは、次のように分析されます。
表示セクションでは、チャートの軸を定義し、適切なデータを各軸に割り当てます。
Analyticsでは、2つのカテゴリのチャートが区別されます。
XYチャートは、円グラフのように軸のないチャートで、データ系列の凡例が不要です(そのため、Z軸宣言がありません)。
XYZチャートには軸があり(折れ線グラフ、棒グラフ、面グラフ、縦棒グラフなど)、Z軸宣言で定義されるデータ系列の凡例が必要です。
この例で定義しているのは円グラフです。これはXYチャートであり、Z軸はありません。しかし、異なるカテゴリ/データ・ポイント(この演習ではブラウザ名)をX軸(value name="xaxis")に割り当て、各カテゴリの値(ここではセッション数)をY軸(value name="yaxis")に割り当てています。
ファイルを保存して閉じます。
チャートのヘッダーを指定します。手順は次のとおりです。
テキスト・エディタで、NewBrowserLocalization.propertiesファイル(この例の場合、アプリケーション・サーバーのanalyticsアプリケーション・ディレクトリ内のWEB-INF/classesディレクトリにあります)を開きます。
ファイルの末尾に次の文を追加します。
# Chart Modulereport_newbrowser_module_chartvisitordetail=Browsers Chart
ファイルを保存して閉じます。
アプリケーション・サーバーを再起動して変更を反映します。
これで、レポートの作成は完了です。この演習の最後の手順である第5.3.4項「完成したNewBrowsersレポートのテスト」に進み、完成したレポートをテストしてコードを確認します。
お疲れ様でした。初めてのAnalyticsレポートができあがりました。レポートをテストして、コードにエラーがないことを確認します。
Analyticsレポート・インタフェースにログインし、NewBrowsersレポートを生成します。
レポートは、図5-8のようになります。
レポートがこの図のように表示されない場合やエラーが表示される場合は、手順を再度追って、第5.1.1項「NewBrowsersレポート・コード」のサンプル・コードと比較してコードにエラーがないかどうかを確認します。