1 OLAP Java APIの概要
この章では、Oracle OLAP Javaアプリケーション・プログラミング・インタフェース(API)について説明します。 この章の内容は次のとおりです。
1.1 OLAP Java APIの概要
Oracle OLAP Java APIは、OLAPオプションを使用したOracle Databaseのオンライン・アナリティク処理(OLAP)テクノロジへのアクセスを提供するアプリケーション・プログラミング・インタフェースです。 このトピックでは、OLAP Java APIクライアント・アプリケーションが実行できる操作、OLAP Java APIのクラスについて説明し、ディメンション・データ・モデル内のオブジェクトについて説明し、オンライン・アナリティク処理用のデータの編成について説明します。
OLAPテクノロジの利点については、「Oracle OLAPユーザーズ・ガイド」を参照してください。 このドキュメントでは、ビジネス・インテリジェンスと高度なアナリティク・アプリケーションによる多次元データのアナリティクにOracle OLAPが提供する機能について説明します。 ディメンション・データ・モデルを詳細に説明し、Oracle OLAPに関連するデータベース管理および管理タスクについて説明します。
1.1.1 OLAP Java APIができること
OLAP Java APIを使用すると、以下の操作を行うクライアント・アプリケーションを開発できます。
-
Oracle DatabaseインスタンスへのJDBC接続で1つ以上のユーザー・セッションを確立します。 複数のユーザー・セッションが同じ接続とメタデータ・オブジェクトの同じキャッシュを共有できます。
-
データベースとのOLAPトランザクションを管理します。
-
OLAPメタデータ・オブジェクトを使用してディメンション・データ・モデルを実装します。
-
アナリティク・ワークスペースの作成およびメンテナンス。
-
論理メタデータ・オブジェクトを作成し、リレーショナル・ソースにマップする。
-
メタデータ・オブジェクトをアナリティック・ワークスペース、またはリレーショナル表およびリレーショナル・ビューとしてデプロイし、そのオブジェクトをデータベースにコミットする。
-
メタデータを調べて、表示または分析できるデータを見つけます。
-
多次元データのアナリティク問合せを構築します。 エンドユーザーは、ユーザーのニーズに応じてデータを指定および操作する問合せを作成できます(データの選択、集計、および計算など)。
-
アプリケーション・ユーザーが分析を洗練すると、問合せを完全に再定義するのではなく、変更します。
-
多次元形式での表示用に構成された問合せ結果を取得する。
これらの操作の詳細については、「"OLAP Java APIアプリケーションが実行するタスク"」を参照してください。
1.1.2 OLAP Java APIのクラスの説明
OLAP Java APIには、次のタイプのオブジェクトを表すクラスがあります。
-
ユーザー・セッション
-
トランザクション
-
メタデータ・オブジェクト
-
ビルド・アイテム、プロセス、仕様、およびコマンド
-
問合せ
-
問合せのデータを取得するカーソル
-
リレーショナル表またはビュー内の列などのデータ・オブジェクトを指定する式、またはデータに作用する関数またはコマンドを指定する式
「表1-1」は、大部分のOLAP Java APIクラスを含むパッケージをリストします。 これらのパッケージはoracle.olapi
パッケージの下にあります。 この表には、パッケージの内容の簡単な説明が含まれています。
表1-1 oracle.olapiの下にあるOLAP Java APIのパッケージ
パッケージ | 説明 |
---|---|
|
|
|
データソースとカーソルの仕様を表すクラスを含みます。 |
|
メタデータ・オブジェクトを表すクラス、メタデータ・オブジェクトをリレーショナル・データ・ソースにマップするクラス、およびメタデータ・オブジェクトをアナリティク・ワークスペースまたはリレーショナル・データベース構造にデプロイするクラスが含まれます。 これらのパッケージの説明については、「OLAP Java APIメタデータについて」を参照してください。 これらのパッケージでクラスを使用する方法については、「メタデータの発見」および「メタデータとアナリティク・ワークスペースの作成」を参照してください。 |
|
|
|
|
Oracle OLAPが、アナリティク・ワークスペース・オブジェクトおよびSQLライクな式を作成するための構文を実装するクラスを構築する方法を指定するアイテムおよびコマンドを表すクラスを含みます。 |
|
|
Oracle Databaseインスタンス内のOracle OLAPとのトランザクションを表すクラスが含まれます。 |
OLAP Java APIには、oracle.express
パッケージで編成されたパッケージもあります。 これらのパッケージは、APIの最も古いバージョンのものです。 これらのパッケージに残っているクラスは、ほとんどがOracle OLAPとクライアント・アプリケーション間の対話中に発生する例外のException
クラスです。
OLAP Java APIソフトウェアを入手するための情報、およびアプリケーションを開発するための要件については、「開発環境の設定」を参照してください。
1.1.3 ディメンション・データ・モデルの記述
データ・ウェアハウスおよびOLAPアプリケーションは、データの多次元ビューに基づいています。 このビューは、次のディメンション・オブジェクトを含むディメンション・データ・モデルで実装されます。
- キューブ
-
キューブは、同じディメンション・セットを持つメジャーのコンテナです。 キューブは通常、単一のリレーショナル・ファクト表またはビューに対応します。 キューブのメジャーにはファクトが含まれており、そのディメンションはファクト・データにシェイプを与えます。 通常、ディメンションはキューブのエッジを形成し、メジャー・データはキューブの本文です。 たとえば、時間、製品、顧客、チャネルのディメンションからメンバーの値が含まれ、本文に販売単位数のメジャーと販売額のメジャーの値が含まれているキューブに販売された商品単位のデータを整理できます。
キューブ・エッジのOLAP概念はOLAP Java APIのメタデータ・オブジェクトでは表現されませんが、エッジはしばしばOLAP Java APIを使用するアプリケーションの設計に組み込まれます。 各エッジには、1つ以上のディメンションのメンバーの値が含まれます。 キューブのエッジ数に制限はありませんが、多くの場合、データは表示の目的で3つのエッジ(行エッジ、列エッジおよびページ・エッジ)に沿って編成されます。
- メジャー
-
メジャー値にはキューブ内のファクト・データが含まれます。 メジャー値は、ディメンションによって編成され、識別されます。 メジャーは通常多次元です。 各メジャー値は、ディメンション・メンバーの一意のセットによって識別されます。 このディメンション・メンバーのセットは、tupleと呼ばれます。
- ディメンション
-
ディメンションには、メジャー内のデータを識別および分類する一意の値のリストが含まれています。 一般的に使用されるディメンションは、顧客、製品、および時間です。 通常、ディメンションには、ディメンション・メンバーを親子関係に編成する1つ以上の階層があります。
エンド・ユーザーは、データに対して実行するディメンション・メンバー、メジャー、および計算を指定することにより、ビジネスに関する質問を作成し、その問合せに対する回答を得ることができます。 たとえば、データを月単位で分類する時間ディメンションと、データを単位アイテムで分類する製品ディメンションと、月単位で販売される製品単位のデータを含むメジャーを使用すると、1月または6月に高い。
- 階層
-
階層は、ディメンション・メンバーを親子関係に編成するディメンションのコンポーネントです。 通常、クライアント・アプリケーションのユーザー・インタフェースでは、エンドユーザーは、親と子の間でドリルアップまたはドリルアップすることによって階層を展開または折りたたむことができます。 親ディメンション・メンバーのメジャー値は、子の値の集計です。
ディメンションは、複数の階層を持つことができます。 たとえば、時間ディメンションに暦年階層と会計年度階層を含めることができます。 階層は、レベルベースまたは値ベースにすることができます。
レベルベースの階層では、親はその親の子より高いレベルになければなりません。 キューブでは、親のメジャー値は通常、子の値から集計されます。 たとえば、時間ディメンションには年、四半期、月のレベルがあります。 月レベルには、最も詳細なデータである基本データが含まれています。 1四半期のメジャー値は、四半期の子である月の値の集計であり、1年間のメジャー値は、その年の子である四半期の集計です。 通常、各レベルは、リレーショナル・ディメンション表の異なる列にマップされます。
値ベースの階層では、親ディメンション・メンバーと子ディメンション・メンバーは、通常、リレーショナル表の同じ列にあります。 別の列は、メンバーの親を識別します。 たとえば、値階層には、会社のすべての従業員が含まれ、それぞれの従業員のマネージャが特定されます。 マネージャを含むすべての従業員は、同じ列から来るでしょう。 別の列には、従業員の管理者が含まれます。
- レベル
-
レベルは、レベルベースの階層のコンポーネントです。 レベルは、複数の階層に関連付けることができます。 ディメンション・メンバーは1つのレベルにのみ属することができます。
通常、レベルはディメンション表またはビューの列に対応します。 ベース・レベルは主キーです。
- 属性
-
属性には、ディメンションのメンバーに関連する情報が含まれます。 エンドユーザーは属性を使用してデータを選択できます。 たとえば、エンド・ユーザーは、各製品のわかりやすい名前を持つ属性を使用して一連の製品を選択できます。 属性はディメンションに含まれます。
- 問合せ
-
問合せは、特定のデータセットの仕様です。 OLAP Java APIのqueryという用語は、一連のデータを指定する
Source
オブジェクトを指し、集計、計算、またはデータを使用して実行するその他の操作を含むことができます。 データとその操作は、問合せの結果セットを定義します。 このドキュメントでは、一般的な用語queryはSource
オブジェクトを参照しています。APIには、
oracle.olapi.syntax
パッケージにQuery
クラスがあります。Query
は、リレーショナル表、SQLSELECT
文、またはOLAP関数に類似した、複数行、複数列の結果セットを表します。 ディメンションまたはメジャーをリレーショナル表またはビューにマッピングする際に、Query
オブジェクトを使用します。
1.1.4 ディメンション・データ・モデルの実装
OLAP Java APIでは、ディメンション・データ・オブジェクトは多ディメンション・モデル(MDM)クラスで表されます。 これらのクラスはoracle.olapi.metadata.mdm
パッケージに含まれています。 関連するクラスは、oracle.olapi.metadata
パッケージとその下にある他のパッケージにあります。 これらのクラスの詳細については、「OLAP Java APIメタデータについて」を参照してください。
1.1.5 OLAPのデータの整理
OLAP Java APIは、Javaアプリケーション(アプレットを含む)がOracleデータ・ウェアハウスにあるデータにアクセスすることを可能にします。 データ・ウェアハウスは、トランザクション処理ではなく、問合せと分析用に設計されたリレーショナル・データベースです。 ウェアハウス・データは、多くの場合、リレーショナル・データベースのディメンション・データ・モデルであるスター・スキーマに準拠しています。 スター・スキーマは、1つ以上のファクト表と1つ以上のディメンション表で構成されます。 ファクト表には、ディメンション表への外部キーを含む列があります。 通常、データ・ウェアハウスは、ETT (Extraction Transformation Transport)ツールによってトランザクション処理データベースから作成されます。
OLAP Java APIアプリケーションでデータ・ウェアハウス内のデータにアクセスするには、データベース管理者がOracle OLAPでサポートされている編成に従ってそのデータ・ウェアハウスを構成する必要があります。 サポートされている編成にはスター・スキーマなどがあります。
データがウェアハウスに編成されると、OLAP Java APIアプリケーションを使用して、キューブ、メジャー、ディメンションなどのOLAPディメンション・データ・モデルを設計し、そのモデルを実装する論理OLAPメタデータ・オブジェクトを作成できます。 ウェアハウス内のデータにメタデータ・オブジェクトをマップし、アナリティク・ワークスペースを作成します。 アナリティク・ワークスペースを構築すると、OLAPビューおよびその他のストレージ構造に、OLAPメタデータ・オブジェクトが表すデータが移入されます。 また、Analytic Workspace Managerを使用して同じタスクを実行することもできます。
OLAP Java APIアプリケーションは、Analytic Workspace ManagerまたはOLAP Java APIのいずれかによって作成されたOLAPメタデータ・オブジェクトを取得できます。 アプリケーションは、これらのメタデータ・オブジェクトを使用して、ウェアハウス内のデータを操作する問合せを作成します。
アナリティク・ワークスペース内のウェアハウス・データのコレクションは、OLAP Java APIがアクセスできるデータ・ストアです。 もちろん、ユーザーがアクセスできるデータの範囲は、データベース管理者によってユーザーに与えられた権限によって制限されます。
データとメタデータが適切に準備されていることを確認するだけでなく、アプリケーション・ユーザーがデータ・ストアへのJDBC接続を確立し、ユーザーにデータへのアクセスを許可するデータベース権限があることを確認する必要があります。 接続の確立については、「メタデータの発見」を参照してください。
1.2 OLAP Java APIを使用したデータへのアクセス
Oracle OLAPメタデータ・オブジェクトは、クライアント・アプリケーションで使用可能なデータを編成して記述します。 メタデータ・オブジェクトには、データのデータ型などの他の情報も含まれます。 ただし、メタデータ・オブジェクトから直接データを取得することはできません。 必要なデータを指定するには、問合せを作成する必要があります。 データの指定には、通常、1つ以上のディメンション・メンバー値を指定する必要があります。 指定したデータを取得するには、Cursor
を作成します。 このトピックでは、これらの操作について簡単に説明します。
OLAPメタデータ・オブジェクトに含まれるデータを問い合せるもう1つの方法は、Oracle OLAPがメタデータ・オブジェクトに対して作成するビューのSQL問合せを使用する方法です。 これらのビューの問合せについては、「OLAP Java APIメタデータについて」の「"OLAPビューの使用"」を参照してください。
1.2.1 問合せの作成
問合せはoracle.olapi.data.source.Source
オブジェクトで表されます。 Source
をメタデータ・オブジェクトから取得し、取得するデータを指定するためにSource
オブジェクトを使用します。 Source
クラスには、データの操作を選択して実行するメソッドがあります。 メソッドを使用して、ユーザーが必要とする方法でデータを操作できます。 Source
オブジェクトの詳細については、「ソース・オブジェクトの理解」および「ソース・メソッドを使用した問合せの作成」を参照してください。
1.2.2 ディメンション・メンバーの指定
Oracle OLAPディメンションのメンバーは通常、1つ以上の階層に編成されます。 階層には、レベルに基づいた親子関係を持つものや、値に基づいた親子関係を持つものがあります。 各ディメンション・メンバーの値は一意でなければなりません。
OLAP Java APIは、ディメンション・メンバーを一意に識別するために3つの部分からなる形式を使用します。 形式には、ディメンション・メンバーの階層、レベル、および値が含まれているため、ディメンション内の一意の値が識別されます。 一意の値の最初の部分は階層オブジェクトの名前、2番目の部分はレベル・オブジェクトの名前、3番目の部分はレベル内のメンバーの値です。 一意の値の部分は、値の分離文字列で区切られます。値の分離文字列は、デフォルトでは二重コロン(::
)です。 次は、TIME_AWJ
という名前のディメンション内のCALENDAR_YEAR
という階層内のYEAR
というレベルの一意のメンバー値の例です。
CALENDAR_YEAR::YEAR::CY2001
一意値の3番目の部分がローカル値です。 前述の例のローカル値では、暦年2001が識別されます。
1.2.3 カーソルの作成
Source
で指定されたデータを取得するには、そのSource
のoracle.olapi.data.cursor.Cursor
を作成します。 次に、このCursor
を使用して、データ・ストアからデータをリクエストおよび取得します。 Cursor
が各フェッチ操作で取得するデータの量を指定することができます(たとえば、ユーザー・インタフェースの40セル表を埋めるのに十分な量)。 Oracle OLAPは、アプリケーションで取得するデータ・ブロックのタイミング、サイジング、およびキャッシングを効率的に管理するため、そのようにする必要はありません。 Cursor
オブジェクトの詳細については、「カーソル・クラスと概念の理解」および「問合せ結果の取得」を参照してください。
1.3 OLAP Java APIの例のサンプル・スキーマ
このドキュメントのOLAP Java APIコードの例は、Oracle Technology Network (OTN)Webサイトで使用可能な一連のサンプル・プログラムの抜粋です。 たとえば、CreateAndBuildAW.java
には、アナリティク・ワークスペースを作成および構築するメソッドがあります。 別の例SpecifyAWValues
は、CreateAndBuildAW.java
のメソッドを呼び出し、メタデータ・オブジェクトの名前や、メタデータ・オブジェクトをデータ・ソースにマッピングするためのリレーショナル表の列名などの値を指定します。 これらの例で生成されるアナリティク・ワークスペースの名前はGLOBAL_AWJ
です。 他の例では、そのアナリティク・ワークスペースに問い合せます。 アナリティク・ワークスペース内のメタデータ・オブジェクトは、グローバル・スキーマにあるリレーショナル表の列にマップされます。
OTNのWebサイトから、グローバル・スキーマを作成するSQLスクリプトとサンプル・プログラムを含むファイルを含むファイルをダウンロードできます。 OTNのサイトはhttp://www.oracle.com/technetwork/database/options/olap/index.html
です。
いずれかのファイルを取得するには、Webページのダウンロード・セクションで「サンプル・コードとスキーマ」を選択します。 サンプル・スキーマを取得するには、「グローバル・スキーマ11g」を選択します。 サンプル・プログラムを入手するには、「ドキュメントのプログラム例」を選択し、「11gリリース2 (11.2)のサンプル・プログラム」をダウンロードを選択して、サンプルを含む圧縮ファイルをダウンロードします。
サンプル・プログラムは、開発環境に容易に追加できるパッケージ構造になっています。 クラスには、サンプル・プログラム・クラスが拡張する基本クラスと、それらが使用するユーティリティ・クラスが含まれています。 ベース・クラスはBaseExample11g.java
です。 ユーティリティ・クラスにはContext11g.java
およびCursorPrintWriter.java
が含まれています。 Context11g.java
クラスは、Oracle Databaseインスタンスへの接続を作成するメソッド、メタデータ・オブジェクトを格納するメソッド、格納されているメタデータ・オブジェクトを戻すメソッド、およびCursor
オブジェクトを作成するメソッドを持ちます。 CursorPrintWriter.java
クラスは、Cursor
オブジェクトの内容を表示するメソッドを持つPrintWriter
です。
OLAPメタデータ・オブジェクトは、CreateAndBuildAW.java
およびSpecifyAWValues
プログラムによって作成および構築されます。 これらのメタデータ・オブジェクトには、次のものが含まれます:
-
GLOBAL_AWJ: その他のオブジェクトを格納するアナリティック・ワークスペースです。
-
PRODUCT_AWJ: 製品用のディメンションです。 PRODUCT_PRIMARYという1つの階層があります。 階層の最下位レベルは製品の項目(Item)の識別子を持ち、より高いレベルは製品のファミリ(Family)、クラス(Class)および製品の合計(Total Product)の識別子を持ちます。
-
CUSTOMER_AWJ: 顧客用のディメンションです。 SHIPMENTSおよびMARKETSという2つの階層を持ちます。 各階層の最下位レベルは顧客の識別子を持ち、より高いレベルはウェアハウス(Warehouse)、地域(Region)および顧客の合計(Total Customer)と、アカウント(Account)、市場セグメント(Market Segment)および市場の合計(Total Market)の識別子をそれぞれ持ちます。
-
TIME_AWJ: 時間値用のディメンションです。 CALENDAR_YEARという階層を1つ持ちます。 最下位レベルは月(Month)の識別子を持ち、その他のレベルは四半期(Quarter)および年(Year)の識別子を持ちます。
-
CHANNEL_AWJ: 販売チャネル用のディメンションです。 CHANNEL_PRIMARYという1つの階層があります。 最下位レベルは販売チャネル(Channel)の識別子を持ち、上位のレベルはチャネルの合計(Total Channel)の識別子を持ちます。
-
UNITS_CUBE_AWJは、COST、SALES、UNITSのメジャーを含むキューブです。 コストには製品単位のコストの値があります。 売上高には、製品単位の売上に対するドル金額があります。 UNITSには、製品の販売台数の値が格納されます。 このキューブは、4つのすべてのディメンションによってディメンション化されます。 キューブの集計メソッドは
SUM
で、各親の値は親の子の値の合計です。 -
PRICE_CUBE_AWJ: UNIT_COSTメジャーおよびUNIT_PRICEメジャーを格納するキューブです。 UNIT_COSTにはユニットのコストがあります。 UNIT_PRICEにはユニットの価格があります。 このキューブは、PRODUCT_AWJディメンションおよびTIME_AWJディメンションによってディメンション化されます。 キューブの集計メソッドは
AVG
で、各親の値は親の子の値の平均です。
アナリティク・ワークスペースのOLAPメタデータを検出するプログラムの例は、「メタデータの発見」を参照してください。
1.4 OLAP Java APIアプリケーションが実行するタスク
OLAP Java APIを使用するクライアント・アプリケーションは、通常、次のタスクを実行します:
-
データストアに接続し、
DataProvider
とUserSession
を作成します。 -
メタデータ・オブジェクトの作成または検出
-
必要に応じて、メタデータ・オブジェクトをデプロイ、マップ、およびビルドします。
-
データを選択および操作する問合せの指定
-
問合せ結果の取得
このトピックの残りの部分では、これらの作業について簡単に説明し、このガイドの残りの部分では、これらの作業の実行方法の詳細について説明します。
- タスク1: データストアに接続し、DataProviderとUserSessionを作成
-
ターゲットOracle Databaseインスタンスに関する情報を特定し、JDBC接続メソッドでこの情報を指定することによって、データストアに接続します。 接続を確立したら、
DataProvider
を作成し、それを使用してUserSession
を作成します。DataProvider
とUserSession
の接続と作成の詳細については、「メタデータの発見」の「"Oracle OLAPへの接続"」を参照してください。 - タスク2: メタデータ・オブジェクトの作成または検出
-
DataProvider
を使用してMdmMetadataProvider
を取得します。MdmMetadataProvider
は、データ・ストア内のすべてのメタデータ・オブジェクトへのアクセスを提供します。 次に、MdmMetdataProvider
のgetRootSchema
メソッドを呼び出して、MdmRootSchema
オブジェクトを取得します。MdmRootSchema
オブジェクトには、データベース内のすべてのOLAPメタデータ・オブジェクトが含まれています。MdmRootSchema
から、現在のユーザーがアクセス権を持つスキーマのMdmDatabaseSchema
オブジェクトが取得されます。MdmDatabaseSchema
は、SQL文SELECT username FROM all_users
によって返される名前付きOracle Databaseユーザーを表します。MdmDatabaseSchema
から、スキーマが所有する既存のメタデータ・オブジェクトを検出するか、または新しいスキーマを作成できます。getMeasures
およびgetDimensions
などのメソッドは、MdmDatabaseSchema
が所有しているすべてのメジャーまたはディメンションを取得します。findOrCreateAW
およびfindOrCreateCube
などのメソッドは、アナリティック・ワークスペースまたはキューブを取得したり(存在する場合)、存在しない場合は作成します。MdmDatabaseSchema
に含まれるアナリティク・ワークスペース、キューブ、ディメンションなどの最上位のメタデータ・オブジェクトから、そのオブジェクトに含まれるオブジェクトを取得できます。 たとえば、MdmPrimaryDimension
から、それに関連付けられている階層、レベル、および属性を取得できます。 ユーザーが使用できるメタデータ・オブジェクトを判別したら、データ選択および操作のために関連するオブジェクト・リストをユーザーに提示することができます。メタデータ・オブジェクトの説明については、「OLAP Java APIメタデータについて」を参照してください。 使用可能なメタデータを検出する方法については、「メタデータの発見」を参照してください。
- タスク3: オブジェクトのデプロイ、マップ、およびビルド
-
新しい
MdmCube
またはMdmPrimaryDimension
を作成する場合、それをアナリティク・ワークスペース・オブジェクトまたはリレーショナルOLAP (Rolap)オブジェクトとしてデプロイする必要があります。 キューブをデプロイするには、findOrCreateAWCubeOrganization
などのMdmCube
メソッドを呼び出します。dimension
をデプロイするには、findOrCreateAWPrimaryDimensionOrganization
などのMdmPrimaryDimension
メソッドを呼び出します。データを表す新しいメタデータ・オブジェクトを作成する場合は、メタデータ・オブジェクトをリレーショナル・ソース表またはビューにマップする
Expression
を指定するか、Oracle OLAPがデータの生成に使用するExpression
を指定する必要があります。 アナリティク・ワークスペースに含まれるオブジェクトの場合は、メタデータ・オブジェクトをマッピングした後でビルドできます。 メタデータの作成、メタデータ・オブジェクトのデプロイ、マッピング、および構築については、「メタデータとアナリティク・ワークスペースの作成」を参照してください。 - タスク4: 問合せを介したデータの選択および計算
-
OLAP Java APIアプリケーションは、データストアに対して問合せを作成できます。 典型的なアプリケーション・ユーザー・インタフェースは、ユーザーがデータを選択し、データを使用して実行する操作を指定する方法を提供します。 次に、その指定内容がデータ操作コードによってデータ・ストアに対する問合せに変換されます。 問合せは、ディメンション・メンバーの選択と同じくらい単純なものでも、ディメンション・メンバーの選択で指定されたメジャー値を含むいくつかの集計や計算を含む複雑なものもあります。
問合せを表すOLAP Java APIオブジェクトは
Source
です。 データを表すメタデータ・オブジェクトはMdmSource
クラスを拡張したものです。MdmMeasure
またはMdmPrimaryDimension
などのMdmSource
から、Source
オブジェクトを取得できます。Source
オブジェクトのメソッドを使用すると、Source
の要素の選択を指定するSource
オブジェクト、またはSource
の値に対して実行する計算やその他の操作を指定するその他のSource
オブジェクトを生成できます。単純なユーザー・インタフェースを実装する場合は、
Source
オブジェクトのメソッドのみを使用して、インタフェース内でユーザーが指定したデータを選択および操作できます。 ただし、ユーザーが複数手順での選択、および問合せの変更や選択の個々の手順の取消しを行えるようにする場合、Template
クラスを設計および実装する必要があります。 各Template
のコード内では、Source
クラスのメソッドを使用しますが、Template
クラス自体を使用すると、最も複雑な問合せであっても動的に変更したり修正することができます。 また、汎用のTemplate
クラスを作成し、アプリケーションの様々な部分に再利用することができます。Source
オブジェクトの操作については、「ソース・オブジェクトの理解」を参照してください。Template
オブジェクトの操作については、「動的問合せの作成」を参照してください。 - タスク5: 問合せ結果の取得
-
OLAP Java APIアプリケーションのユーザーがデータの選択、計算、結合、一般的な操作を行っているときには、その作業の結果も確認したいと考えています。 そのため、アプリケーションは、データ・ストアから問合せの結果セットを取得し、データを多次元形式で表示する必要があります。 OLAP Java APIを介して問合せの結果セットを取得するには、問合せを指定する
Source
のCursor
を作成します。Oracle OLAPが問合せに対して生成するSQLを取得することもできます。 これを行うには、
Cursor
を作成する代わりに、Source
のSQLCursorManager
を作成します。SQLCursorManager
のgenerateSQL
メソッドによって、Source
で指定されたSQLが戻されます。 その後、OLAP Java APIの外部でデータを取り出すことができます。OLAP Java APIはデータの多次元ビューを処理するように設計されているため、
Source
は多次元の結果セットを持つことができます。 たとえば、Source
は、4つのMdmPrimaryDimension
オブジェクトでディメンション化されたMdmMeasure
を表すことができます。 各MdmPrimaryDimension
は、関連付けられたSource
を持ちます。 ディメンションのSource
オブジェクトをメジャーのSource
に結合することによって、問合せを作成できます。 結果の問合せには、基準としてのメジャー用のSource
があり、出力用のディメンション用のSource
オブジェクトがあります。問合せ
Source
のCursor
は、Source
と同じ構造を持ちます。 たとえば、前述のSource
のCursor
には、メジャー・データである基本値があります。Cursor
には4つの出力もあります。 出力の値は、ディメンションのSource
オブジェクトの値です。Cursor
を使用してすべてのデータ・アイテムを取得するには、多次元Cursor
構造をループすることができます。 この設計は、コンピュータ画面に表示するための標準のユーザー・インタフェース・オブジェクトの要件に対して適切に調整されています。 特に、多次元形式でのデータの表示に対して適切に調整されています。Source
オブジェクトを使用して問合せを指定する方法の詳細については、「ソース・オブジェクトの理解」を参照してください。Cursor
オブジェクトを使用してデータを取得する方法の詳細については、「カーソル・クラスと概念の理解」を参照してください。SQLCursorManager
クラスの詳細は、『Oracle OLAP Java API Reference』を参照してください。