SQL開発ツールやアプリケーションを使用して、OLAPキューブからデータを移入したレポートおよびダッシュボードを作成できます。この章では、Oracle Databaseの付属ツールであるOracle Business Intelligence Publisher(BI Publisher)およびOracle Application Expressの基本的な使用手順について説明します。これらのツールを直接使用する以外に、この章で説明する方法に基づいて好みのSQLツールを使用することもできます。
この章では、次の項目について説明します。
レポートまたはダッシュボードの内容のかわりに、キューブに対するSQL問合せを使用できます。BI PublisherおよびApplication Expressは、ともにクエリー・ビルダーを備えています。これを使用すると、リレーショナル・オブジェクトと次元オブジェクトのどちらに対する問合せでも開発できます。また、SQLスクリプトや別のソースから問合せを切り取って貼り付けることもできます。この方法をこの章では使用します。
静的レポートおよび静的ダッシュボードを作成することが目的であれば、これ以上の説明は必要ありません。適切なツールを使用して、今すぐOLAPアプリケーションの開発を始められます。この章では、動的な内容を持つアプリケーションの作成方法を説明します。中でも、キューブやディメンションの特徴的な機能を活用することにより、ドリル可能なレポートおよびグラフを単独の問合せを使用して作成する方法について詳しく説明します。ここでは、次の2つのタイプのドリル可能インタフェースの作成方法について見ていきます。
選択リスト: レポートまたはダッシュボード内のディメンションをドリルできるよう、ディメンションごとにドロップダウン・リストを作成できます。
リンクされたディメンション列: Application Expressにおいて、階層の最下位へドリル・ダウンするためのリンクを、クロス集計のディメンション列に追加できます。最上位レベルに戻るには「リセット」ボタンを使用します。
これらのユーザー・インタフェースを使用すると、ソース問合せのWHERE
句に、バインド変数の値を設定できます。ユーザーが、選択リストで現在選択されている項目を変更したり、クロス集計内のリンクをクリックしたりすると、そのアクションにより変数の値は動的に変更されます。変数値が変更されると、問合せの条件およびレポートまたはダッシュボードの内容も変更されます。
変数により階層ビューのPARENT
列の値が設定されると、ユーザーは親をドリルしてその子を表示できます。
例6-1に、Globalサンプル・スキーマのUNITS_CUBE_VIEW
に対する基本的なSQL問合せを示します。この問合せにより、SALES
メジャー、およびSALES
に基づく3つの計算済メジャーが選択されます。
SALES_PP
: 前の期間の売上
SALES_CHG_PP
: 現在の期間の売上と前の期間の売上の差
SALES_PCTCHG_PP
: 現在の期間の売上と前の期間の売上の相違率
この問合せは、この章の中で開発を行うサンプル・アプリケーションで使用します。Product、Customer、Timeの各ディメンションのPARENT
列は、これらのアプリケーションでドリル可能です。CHANNEL
ディメンションは、TOTAL
レベルに固定されたままになります。
例6-1 Salesキューブに対するSQL問合せ
SELECT p.long_description "Product", cu.long_description "Customer", t.long_description "Time", ROUND(f.sales) "Sales", ROUND(f.sales_pp) "Prior Period", ROUND(f.sales_chg_pp) "Change", ROUND(f.sales_pctchg_pp * 100) "Percent Change" /* From dimension views and cube view */ FROM product_primary_view p, customer_shipments_view cu, time_calendar_view t, channel_primary_view ch, units_cube_view f /* Use parent columns to implement drilling */ WHERE p.parent = 'TOTAL' AND cu.parent = 'TOTAL' AND t.parent = 'CY2006' AND ch.level_name = 'TOTAL' /* Join dimension views to cube view */ AND p.dim_key = f.product AND cu.dim_key = f.customer AND t.dim_key = f.time AND ch.dim_key = f.channel ORDER BY product, customer, t.end_date; Product Customer Time Sales Prior Period Change Percent Change --------------- --------------- ---------- ---------- ------------ ---------- -------------- Hardware North America Q1.06 16002175 14493426 1508749 10 Hardware North America Q2.06 16032643 16002175 30469 0 Hardware North America Q3.06 15698208 16032643 -334436 -2 Hardware North America Q4.06 15958791 15698208 260583 2 Hardware Asia Pacific Q1.06 13416447 14273900 -857453 -6 Hardware Asia Pacific Q2.06 14306431 13416447 889984 7 . . . Software/Other Asia Pacific Q4.06 652300 647019 5281 1 Software/Other Europe Q1.06 737523 634293 103230 16 Software/Other Europe Q2.06 678391 737523 -59132 -8 Software/Other Europe Q3.06 499008 678391 -179383 -26 Software/Other Europe Q4.06 710796 499008 211788 42 24 rows selected.
BI Publisherは、情報を生成してそれを様々な配布方法で提供するための、高度でスケーラブルなレポート作成ソリューションです。このソリューションを使用することにより、ビジネス文書の作成およびメンテナンスに伴うコストが削減されると同時に、レポート管理の効率性が向上します。BI Publisherでは、HTML、PDF、Excelなど様々な形式でレポートが生成されます。
BI Publisherをまだ使用していない場合は、次のOracle Technology Networkのページから、ソフトウェア、チュートリアルおよびドキュメント一式をダウンロードできます。
http://www.oracle.com/technology/products/xml-publisher/index.html
図6-0は、例6-1の問合せに基づくレポートをPDF形式で表示したものです。配布用のレポートを生成する場合は、Products、CustomersおよびTime Periodsの任意の組合せを選択リストから選択できます。このレポートでは、ハードウェア製品、ヨーロッパの顧客、および2006年第2四半期の月が選択されています。この章では、ドリル可能なディメンションを使用してこのようなレポートを作成する方法について説明します。
各レポートは、BI Publisherで作成するレポート・エントリと、Microsoft WordやAdobe Acrobatなどのアプリケーションを使用して作成するレイアウト・テンプレートにより構成されます。レポートはフォルダ内にまとめておくことができます。
BI Publisherはミドルウェア・アプリケーションで、複数のソースからデータを導出できます。次に示す手順では、アクセスできるBI Publisherのキューブが1つ以上あることが想定されています。アクセスできるキューブがない場合は、データソースの定義をBI Publisherの管理者に依頼してください。
レポート・エントリの作成手順:
ブラウザでBI Publisherのホーム・ページを開き、ログインします。
「マイ・フォルダ」をクリックします。
既存のフォルダを開きます。
または
フォルダの作成手順
「新規フォルダの作成」をクリックします。
テキスト・ボックスにフォルダの名前(OLAP Reports
など)を入力します。
「作成」をクリックします。
フォルダをクリックして開きます。
レポートを作成します。
「新規レポートの作成」をクリックします。
テキスト・ボックスにレポートの名前を入力します。
この例では、Global Salesという名前のレポートを作成します。
「作成」をクリックします。
レポートがフォルダ内に表示されます(図6-2を参照)。
レポート・エントリの構成手順:
レポートの内容を定義するため、「編集」をクリックします。
レポート・エディタが表示されます。
「一般設定」で、説明を入力してデフォルトのデータソースを選択します。
リストの中に、キューブが含まれているデータベースおよびスキーマへの接続が表示されていない場合は、BI Publisherの管理者に問い合せてください。
「データ・モデル」を選択し、「新規」をクリックします。
「データ・セット」ページが表示されます。
データセットの名前を入力し、例6-1に示したようなSQL問合せを入力します。ただし、セミコロンは使用できません。
「保存」をクリックします。
「表示」をクリックします。
BI Publisherでは、レポート定義にエラーがないかどうかのチェックが行われます。エラーがなければ、レポート用のXMLが生成されます。
図6-3に、レポート・エディタの「データ・セット」ページを示します。
BI Publisherは、書式設定ツールを備えていません。そのかわりとして、使い慣れたデスクトップ・アプリケーションを使用してレポートを設計できるようになっています。この例では、Microsoft Wordを使用します。レポート・テンプレートには、次のような要素があります。
静的テキストおよびグラフィック。他のWordドキュメントと同じように入力できます。
日時やページ番号などの動的フィールド。Wordにより処理されます。
データ用のXMLタグを指定するコード。BI Publisherにより処理されます。BI Publisherによりレポートが生成されると、このコードが、これらのタグによって指定されたデータに置き換えられます。
Wordでフォント、テキストの色や背景色、表デザインなどを選択することにより、レポート・テンプレートの要素はすべて、Word内で書式設定を行うことができます。
例6-2に、サンプル問合せにより戻された行のデータに対応するXMLを示します。タグは、空白がアンダースコアに置き換えられていることを除けば、選択リスト内の列名に一致しています。タグは、Product
、Customer
、Time
、Sales
、Prior_Period
、Change
およびPercent_Change
です。XMLタグでは、大文字と小文字は区別されます。Wordドキュメント内のコードには、HTMLタグ名を使用します。
例6-2 SQL問合せに対応するXML
<ROW> <Product>Hardware</Product> <Customer>North America</Customer> <Time>Q1.06</Time> <Sales>16002175</Sales> <Prior_Period>14493426</Prior_Period> <Change>1508749</Change> <Percent_Change>10</Percent_Change> </ROW>
図6-4に、サンプル・レポートのテンプレートとして使用するWordドキュメントを示します。このドキュメントには次の要素が含まれます。
バナーの書式設定に使用する表。グラフィック、会社名および横罫線で構成されます。(静的)
レポートの名前。(静的)
次の2つの行を含む問合せ結果の表。
見出し行。(静的)
テキスト・フォーム・フィールドを含む本文行。XMLタグおよびデータの適切な書式を指定します。これらのフィールドは、BI Publisherによって問合せのデータに置き換えられます。最初の列と最後の列にはそれぞれ2つのフィールドが含まれています。最初と最後のフィールドにより、列の繰返し範囲が指定されます。(動的)
日付フィールド。このフィールドは、Wordにより現在の日付に更新されます。(動的)
この例では、何も記述されていないWordテンプレートを使用しますが、すでにバナーなどが定義されているテンプレートを使用してもかまいません。
次に示すのは、テンプレートを手動で定義するための手順です。この手順のかわりに、Oracle BI Publisher DesktopというWordのプラグインを使用することもできます。このプラグインは、BI Publisherの「マイ・フォルダ」ページで「Template Builder」をクリックするとダウンロードできます。
WordでBI Publisherテンプレートを作成する手順:
Wordで新規文書を開きます。
目的にあわせてページを構成します。
問合せ結果に対する表を作成します。
図6-4に示した表は非常に単純ですが、必要であれば、ネストした列や表など、より複雑な書式を使用することもできます。
「表示」メニューから「ツールバー」を選択し、さらに「フォーム」を選択します。
「フォーム」ツールバーが表示されます。
次の手順に従って各列の本文行にフィールドを入力します。
目的のセルにカーソルをあわせます。
「フォーム」ツールバーで、「テキスト ボックス フォーム フィールド」アイコンをクリックします。
「テキスト ボックス フォーム フィールド」ダイアログ・ボックスが表示されます。
「種類」から適切な項目を選択します。通常、ディメンション・ラベルに対しては「文字列」、メジャーに対しては「数値」を選択します。
デフォルト値および書式を入力します。
「ヘルプの追加」をクリックします。
「ヘルプの追加」ダイアログ・ボックスが表示されます。
<?
tag
?>
という書式を使用して、目的のXMLタグを「ヘルプの内容を指定する」ボックスに入力します。
XMLレポートに表示されているとおりにタグ名を入力します。たとえば、XMLタグ<Product>
に対しては<?Product?>
と入力します。
「OK」をクリックして「ヘルプの追加」ダイアログ・ボックスを閉じます。
「OK」をクリックして「テキスト ボックス フォーム フィールド」ダイアログ・ボックスを閉じます。
最初の列の先頭部分に、追加のフォーム・フィールドを挿入します。
「テキスト ボックス フォーム フィールド」ダイアログ・ボックスで、For-Each
などのデフォルト値を入力します。
「ヘルプの追加」ダイアログ・ボックスで、次のテキストを入力します。
<?for-each:ROW?>
最後の列の末尾に、追加のフォーム・フィールドを挿入します。
「テキスト ボックス フォーム フィールド」ダイアログ・ボックスで、End
などのデフォルト値を入力します。
「ヘルプの追加」ダイアログ・ボックスで、次のテキストを入力します。
<?end for-each?>
表の見出しやデータ列の適切な位置調整など、その他にも書式設定に関する変更がある場合は、Wordを使用してその変更を行います。
ドキュメントをRTFファイルとして保存します。
Wordで作成されたレポート・テンプレートは、BI publisherにアップロードし、レポート定義に関連付けることができます。その上で、レポートを様々な書式で生成できます。
BI Publisherでレポート・エディタを開きます。
「レイアウト」を選択します。
「レイアウトの作成」ページが表示されます。
「新規」をクリックします。
「レイアウト」ページが表示されます。
名前を入力し、テンプレートのタイプとして「RTF」を選択します。
再度「レイアウト」を選択し、作成したレイアウトをこのレポートのデフォルト・テンプレートとして選択します。
「テンプレート・ファイルの管理」で「参照」をクリックし、作成したRTFファイルを選択します。
「アップロード」をクリックします。
アップロードされたファイルは「テンプレート・ファイルの管理」にリスト表示されます。このファイルをWordで変更したときは、必ず再アップロードしてください。再アップロードしないと、BI Publisherでは変更前のファイルのコピーがそのまま使用されます。
「保存」をクリックします。
「表示」をクリックします。
レポートが表示されます。
書式を変更する場合は、リストから書式を選択し、「表示」をクリックします。
XMLを表示する場合は、「データ」を選択します。
図6-5に、HTML形式で表示したレポートを示します。
ディメンションの選択リストをレポートに追加できます。レポートの生成時に、問合せを変更することなく、選択するデータを変更できます。選択リストを追加するには、次の手順を実行します。
LOVに対しては、表示するディメンション・キーを選択するためのSQL問合せを使用します。階層ビューからLONG_DESCRIPTION
列およびDIM_KEY
列を取り込みます。この例では、Product Primary階層に関するリストを作成します。
SELECT long_description, dim_key FROM product_primary_view WHERE parent = 'TOTAL' OR dim_key = 'TOTAL' ORDER BY level_name, long_description LONG_DESCRIPTION DIM_KEY -------------------- ------------ Hardware HRD Software/Other SFT Total Product TOTAL
値リストの作成手順:
BI Publisherでレポート・エディタを開きます。
「値リスト」を選択し、「新規」をクリックします。
「値リスト」ページが表示されます。
次の手順に従ってリストを定義します。
リストの名前(Product_LOV
など)を入力します。
タイプとして「SQL問合せ」を選択します。
前述のように、ディメンション階層ビューに対する問合せを入力します。
「保存」をクリックします。
その他のディメンションに対しても、この手順を繰り返します。この例では、Product、CustomerおよびTimeの各リストを使用します。
BI Publisherでは、メニューは一種のパラメータとして扱われます。パラメータを作成すると、レポートの問合せに使用できるバインド変数が自動的に作成されます。
メニューの作成手順:
「パラメータ」を選択し、「新規」をクリックします。
「パラメータ」ページが表示されます。
次の手順に従ってパラメータを定義します。
「識別子」に、product
などの名前を入力します。
この名前が、問合せで使用するバインド変数の名前になります。ただし、大文字と小文字は区別されます。
適切なデータ型を選択します(通常は「文字列」)。
「デフォルト値」に、LOV問合せのWHERE
句で使用するディメンション・キーを入力します。
メニューには最初にこのキーが表示されます。
「パラメータ・タイプ」で、「メニュー」を選択します。
目的の値リストを選択します。
オプションの選択をすべて解除します。
「保存」をクリックします。
その他のディメンションに対しても、この手順を繰り返します。この例では、Product、CustomerおよびTimeに対してメニューを作成します。
メニューをアクティブにするには、レポートに対する問合せのWHERE
句を変更して、バインド変数が使用されるようにします。バインド変数の値は、現在メニューで選択されている内容になります。
parent_column = :bind_variable
この例では、WHERE
句に、Time、ProductおよびCustomerのバインド変数を使用します。
WHERE p.parent = :product AND cu.parent = :customer AND t.parent = :time AND ch.level_name = 'TOTAL'
問合せの編集手順:
「データ・モデル」から、このレポートに対して定義したデータセットを選択します。
「データ・セット」ページが表示されます。
「SQL問合せ」ボックスで、パラメータを定義する際に作成したバインド変数が使用されるようにWHERE
句を編集します。
「保存」をクリックします。
図6-6に、BI Publisherに表示されたHTML形式のレポートを示します。上部には、Product、CustomerおよびTimeの各選択リストが表示されています。クロス集計には、2006年第3四半期の月、ハードウェア製品およびヨーロッパの国がリスト表示されています。データの選択内容を変更して表示する場合は、メニューからTime Period、ProductおよびCustomerを選択し、「表示」をクリックします。このレポートは、図6-1に示したレポートと同じレポート・エントリおよび問合せを使用して生成されたものです。
このレポートに対して、グラフやその他の表をさらに追加することもできます。
Oracle Application Expressは、Oracle Database用の高速Webアプリケーション開発ツールです。Application Expressには、ユーザー・インタフェースのテーマ、ナビゲーショナル・コントロール、フォーム・ハンドラ、フレキシブル・レポートなど、開発プロセスを簡素化するための機能が組み込まれています。
第1章に、キューブから分析データを抽出し、それらを多様なグラフやレポートの形式で表した高度なダッシュボードが図示されています。Oracle OLAPにより生成される豊富な分析データを表示するためのダッシュボードを、キューブから容易に作成できます。
Application Expressをまだ使用していない場合は、次のOracle Technology Networkのページから、ソフトウェア、チュートリアルおよびドキュメント一式をダウンロードできます。
http://www.oracle.com/technology/products/database/application_express
図6-7に、ProductとCustomerの表示リスト、および3つのディメンション列すべてにリンクを持つクロス集計を示します。別のProductまたはCustomerを選択すると、関連する列には新たに、選択したキーの子が表示されます。いずれかの列のディメンション・キーをクリックすると、その子が表示されます。「リセット」ボタンを押すと、ページがリフレッシュされ、最初に選択したデータが表示されます。
Application Expressでは、管理者が作成した作業領域で、Webアプリケーションの開発を行います。各アプリケーションは1つ以上のHTMLページで構成されており、各ページはその中の特定の場所を表す複数のリージョンで構成されています。また各リージョンは、レポート(クロス集計)やグラフなどいくつかの要素で構成されています。
Application ExpressはOracle Databaseで動作します。次元オブジェクトが別のデータベースに格納されている場合は、問合せの中にデータベース・リンクを使用する必要があります。次に示す手順は、作業領域が用意されており、かつ少なくとも1つのキューブにアクセスできることが前提となっています。作成するのは、クロス集計を表示する、1ページで構成されるアプリケーションです。
SQL問合せを基にしたWebページの作成手順:
ブラウザでApplication Expressのホーム・ページを開き、ログインします。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーション・ビルダーが表示されます。
「作成」をクリックします。
「アプリケーションの作成ウィザード」が表示されます。
「アプリケーションの作成」を選択し、さらに「次へ」を選択します。
「名前」ページで、アプリケーションのタイトル(Global Dashboard
など)を入力し、「最初から」を選択します。
「ページ」ページで、「レポート」ページ・タイプを選択した上で、次の手順に従ってページを定義します。
「ページ・ソース」で「SQL問合せ」を選択します。
「タイトル」に、Sales Analysis
などの名前を入力します。
ページにはこのタイトルが表示されます。
「問合せ」には、例6-1と同じように、キューブに対するSQL SELECT
文を入力します。ただし、ORDER BY
句およびセミコロンは使用できません。
「ページの追加」をクリックします。
「アプリケーションの作成」ボックスにページ定義が表示されます。
「次へ」をクリックし、目的の操作を行った上で「アプリケーションの作成ウィザード」を終了します。
この例で作成したアプリケーションには、タブ、共有コンポーネント、認証およびテーマ15(水色)は使用されていません。
「確認」ページで「作成」をクリックします。
アプリケーション・ビルダーのホーム・ページで、「アプリケーションの実行」をクリックします。
ヒント: このページでの操作を続行する場合は、画面下部にある「ページの編集 1」リンクをクリックします。 |
図6-8に、Application Expressに表示された問合せの結果を示します。ページには、ブレッドクラム、「検索」ボックス、「表示」リスト、「実行」ボタン、「リセット」ボタン、「スプレッドシート」リンクなどのアイテムが自動的に追加されます。このアプリケーションでは「リセット」ボタン以外は不要であるため、その他のアイテムは削除してもかまいません。
BI Publisherと同様、Application Expressでも、ディメンション・キーの選択リストを追加することにより、ディメンションでのドリル操作を行えるようにできます。ダッシュボードのユーザーは、リストから特定のアイテムを選択したり、ページ上のグラフィックやクロス集計に表示されているデータの選択内容を動的に変更したりすることが可能です。選択リストを実装するには、次の手順を実行します。
ページ上に、リストを表示するためのリージョンを作成します。
値リスト(LOV)を作成します。
LOVを表示するためのリスト・アイテムを、バインド変数を使用して作成します。
リストに対して無条件ブランチを作成します。
バインド変数が使用されるように問合せを編集します。
「ページ定義」では、ページの作成および編集に加え、グラフィカル・アイテムの追加や変更も行えます。これらのアイテムは、「ページ・レンダリング」、「ページ・プロセス」、「共有コンポーネント」という3つの列に分類されます。
「ページ定義」を開く手順:
図6-9に、「ページ定義」の一部を示します。
ページ上部のプレーンHTML領域に選択リストを作成できます。
空のHTMLリージョンの作成手順:
「リージョン」にある「ページ定義」で、「作成」アイコンをクリックします。
「リージョンの作成」ウィザードが表示されます。
「リージョン」ページで、「HTML」を選択し、「次へ」をクリックした後、再度「HTML」を選択します。
「表示属性」ページで、リストに対し、わかりやすいタイトルを入力して、適切なテンプレートおよびページ上の位置を選択します。
この例では、名前はlov_region
、テンプレートは「テンプレートなし」、位置は「ページ・テンプレート・ボディ (1. リージョン・コンテンツより下のアイテム)」です。名前は、レンダリングされたページ上に表示できますが、この例では非表示になっています。
「リージョンの作成」をクリックします。
「リージョン」にある「ページ定義」にリージョンが表示されます。
値リストの場合は、ここで説明するようなSQL問合せを使用します。階層ビューからLONG_DESCRIPTION
列およびDIM_KEY
列を取り込みます。この問合せを実行すると、Customer Shipments階層に関するリストが作成されます。
SELECT long_description, dim_key FROM customer_shipments_view WHERE parent = 'TOTAL' OR dim_key= 'TOTAL' ORDER BY level_name, long_description; LONG_DESCRIPTION DIM_KEY -------------------- ---------- Asia Pacific APAC Europe EMEA North America AMER Total Customer TOTAL
値リストの作成手順:
「LOV」にある「ページ定義」で、「作成」アイコンをクリックします。
「LOVの作成」ウィザードが表示されます。
「ソース」ページで、「最初から」を選択します。
「名前およびタイプ」ページで、説明的な名前を入力し、「動的」を選択します。
この例で使用する名前はCUSTOMER_LOV
です。
「問合せ」ページで、前述したような問合せを入力します。ただし、セミコロンは使用できません。
「LOVの作成」をクリックします。
「LOV」の「ページ定義」にLOVが表示されます。
さらにLOVを作成する場合は、これらの手順を繰り返します。この例では、ProductおよびCustomerの各ディメンションに対するLOVを作成します。
選択リストの場合は、LOVを表示するためのリスト・アイテムを作成します。
リスト・アイテムの作成手順:
「アイテム」にある「ページ定義」で、「作成」アイコンをクリックします。
「アイテムの作成」ウィザードが表示されます。
「アイテム・タイプ」ページで、「選択リスト」を選択します。
「コントロール・タイプ」で、「送信機能付き選択リスト」を選択します。
「表示位置および名前」ページで次の操作を実行します。
ディメンションを識別するための名前(Customerバインド変数の名前に使用するP1_CUSTOMER
など)を入力します。P1
はページ番号、CUSTOMER
はCustomerディメンションを表します。
リストを配置するための新規のHTMLリージョンを選択します。
「LOV」ページで、次の設定を実行します。
「名前付きLOV」を、このディメンションに対して作成したLOV(CUSTOMER_LOV
など)に設定します。
「NULLオプションの表示」を「いいえ」に設定します。
目的にあわせて「アイテム」の属性を選択します。
「ソース」ページで、デフォルト値に対する最上位のディメンション・キーの名前を入力します。
Global Customerディメンションの場合、この値はTOTAL
です。
「アイテムの作成」をクリックします。
その他のリストに対しても、この手順を繰り返します。この例では、ProductおよびCustomerの各ディメンションに対するリストを作成します。
「ブランチ」にある「ページ定義」で、「作成」アイコンをクリックします。
「ブランチの編集」ウィザードが表示されます。
「ポイントおよびタイプ」ページではデフォルト設定をそのまま使用します。
「ターゲット」ページで、次の操作を実行します。
「ターゲット」を「このアプリケーションのページ」に設定します。
「ページ」を、リスト・アイテムを持つページ(この例では1
)に設定します。
「このページのページ区切りをリセット)」を選択します。
「ブランチ条件」ページでは、無条件ブランチを作成するデフォルト設定をそのまま使用します。
「変更の適用」をクリックします。
「ブランチの編集」ページが閉じ、「ページ定義」に戻ります。無条件ブランチが「ブランチ」にリスト表示されます。
次に示すのは、WHERE
句の動的条件の書式です。
parent_column = NVL(:bind_variable, 'top dim_key')
NVL
関数を使用すると、NULL値が、階層における最上位のディメンション・キーの名前に置換されます。最上位のディメンション・キーには、親キーはありません。
問合せの編集手順:
「ページ定義」を開きます。
「リージョン」で、「リージョンの編集」リンクをクリックします。この例におけるリージョンの名前はSales Reportです。
「リージョンの編集」ページが表示されます。
「ソース」で問合せを編集します。手順は次のとおりです。
バインド変数が使用されるようにWHERE
句を変更します。
Application Expressにより追加された外部SELECT
文を削除します。
「変更の適用」をクリックします。
WHERE p.parent = NVL(:P1_PRODUCT, 'TOTAL') AND cu.parent = NVL(:P1_CUSTOMER, 'TOTAL') AND t.parent = 'CY2006' AND ch.level_name = 'TOTAL'
図6-10は、ProductおよびCustomerの各選択リストが表示された修正済ページを示したものです。
ユーザーが1回の問合せを行うだけで、階層の最上位からディテール・レベルにドリルダウンできるようにすることが可能です。Application Expressにドリル操作を実装するには、次の手順を実行します。
バインド変数を使用して非表示アイテムを作成します。
バインド変数が使用されるように問合せを編集します。
クロス集計のディメンション列にリンクを追加します。
この例では、表示されるディメンションすべてにドリル操作を実装します。
Application Expressでは、バインド変数を与える様々なタイプのアイテムを作成できます。これらのアイテムには、特定の要素に関するセッション・ステートが格納されます。この場合は、親ディメンション・キーの現在の選択内容が格納されます。
ドリル操作をサポートするディメンションにはそれぞれ、バインド変数が必要です。この例の場合、ProductおよびCustomerにはリスト・アイテムとともに作成されたバインド変数が存在します。Timeは、レポートに表示されているディメンションのうち、唯一バインド変数がありません。Timeディメンション列のリンクがセッション・ステートを変更するためのユーザー・インタフェースとして使用されるため、Timeには他のグラフィカル・ユーザー・インタフェースは必要ありません。非表示アイテムはこのようなときに使用します。
非表示アイテムの作成手順:
「ページ定義」を開きます。
「アイテム」で、「作成」アイコンをクリックします。
「アイテムの作成」ウィザードが表示されます。
「アイテム・タイプ」ページで、「非表示」を選択します。
「表示位置および名前」ページで次の操作を実行します。
ディメンションを識別するための名前(Timeバインド変数の名前に使用するP1_TIME
など)を入力します。
レポートを定義するリージョンを選択します。
「ソース」ページで、階層の最上位のディメンション・キーを入力します。
Globalスキーマにおけるすべての階層の最上位はTOTAL
です。この例の場合、選択範囲を1年に制限するため「時間」はCY2006
に設定されます。
「アイテムの作成」をクリックします。
列リンクでのみドリルをサポートするディメンションがその他にあれば、それらのディメンションに対してもこの手順を繰り返します。
この例では、Timeに対して非表示アイテムが定義されます。
列リンクをレポートに追加するには、SELECT
文の2つの部分を変更する必要があります。
選択リスト: Application Expressで管理されるのは、選択リストに表示される列のみです。列を表示するか非表示にするかは選択できます。列リンクを定義するには、階層ビューのDIM_KEY
列およびPARENT
列を問合せの選択リストに追加します。
WHERE
句: 「問合せの編集」の中で選択リストに対して行ったのと同じ手順で、非表示アイテムに対するバインド変数を追加します。
例6-3に、修正したサンプルの問合せを示します。
例6-3 Application Expressにおける列リンク用の修正済問合せ
SELECT p.long_description "Product", cu.long_description "Customer", t.long_description "Time", ROUND(f.sales) "Sales", ROUND(f.sales_pp) "Prior Period", ROUND(f.sales_chg_pp) "Change", ROUND(f.sales_pctchg_pp * 100) "Percent Change", /* Add DIM_KEY and PARENT columns for column links */ p.dim_key product_key, p.parent product_parent, cu.dim_key customer_key, cu.parent customer_parent, t.dim_key time_key, t.parent time_parent /* From dimension views and cube view */ FROM product_primary_view p, customer_shipments_view cu, time_calendar_view t, channel_primary_view ch, units_cube_view f /* Use parent columns and bind variables for drilling */ WHERE p.parent = NVL(:P1_PRODUCT, 'TOTAL') AND cu.parent = NVL(:P1_CUSTOMER, 'TOTAL') AND t.parent = NVL(:P1_TIME, 'CY2006') AND ch.level_name = 'TOTAL' /* Join dimension views to cube view */ AND p.dim_key = f.product AND cu.dim_key = f.customer AND t.dim_key = f.time AND ch.dim_key = f.channel
ダッシュボードのユーザーがクロス集計内のリンクされたディメンション列をクリックすると、バインド変数の値が変更され、それに伴ってクロス集計も変更されます。階層をドリルダウンした後、「リセット」ボタンを押すことにより、画面上のデータを元の選択状態に戻すことができます。これらの列リンクを実装するには、列リンクを追加し、「リセット」ボタンをアクティブにする必要があります。
ディメンション列にリンクを追加する手順:
「ページ定義」を開きます。
「リージョン」で、「レポート」リンクをクリックします。
「レポート属性」ページが表示されます。
「列属性」で、レポート表示を修正します。手順は次のとおりです。
非表示にする列(DIM_KEY
列やPARENT
列など)の「表示」チェック・ボックスを選択解除します。
レポートに対して目的のソートを行うため、「ソート」チェック・ボックスおよび「ソート順序」チェック・ボックスを選択します。この例におけるソート順序は、Product
(1)、Customer
(2)、Time
(3)です。
ディメンション列の「編集」アイコンをクリックします。
「列属性」ページが表示されます。
「列リンク」で、リンクを定義します。手順は次のとおりです。
「リンク・テキスト」: ディメンションの名前を選択します。
「ページ」: ページ番号を入力します。
「名前」: レポートに表示される順序でディメンションをリスト表示します。「アイテム」はバインド変数の名前です。また「値」は、定義されているディメンションのDIM_KEY
列またはその他のディメンションのPARENT
列です。
図6-11に、Timeディメンションのリンク定義を示します。
「変更の適用」をクリックします。
「列属性」ページが閉じ、「レポート属性」ページに戻ります。
その他のディメンション列のリンクを定義します。
「変更の適用」をクリックします。
「レポート属性」ページが閉じ、「ページ定義」に戻ります。
「リセット」ボタンをアクティブにする手順:
「ページ定義」を開きます。
「ブランチ」で、「ページに移動 条件付き」リンクをクリックします。
ページ上には、条件付きブランチに伴って、「リセット」ボタンが自動的に作成されています。「ブランチの編集」ページが表示されます。
「アクション」で、「キャッシュのクリア」の値をページ番号に設定します(この例では1
)。
「条件」で、「対象ボタン」を「リセット」に設定します。
「変更の適用」をクリックします。
「ブランチの編集」ページが閉じ、「ページ定義」に戻ります。
「実行」をクリックしてページを表示します。
図6-12に、2006年第3四半期の月を表示した、処理が完了したページを示します。このアプリケーションでの操作を続行して、他のレポートやグラフをページに追加することもできます。これらのレポートやグラフにデータを供給するSQL問合せには、ディメンションのバインド変数をそのまま使用できます。
図6-12 Application Expressの列リンクを持つSales Analysisレポート