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に関連するデータベースの管理タスクについて説明します。
- 「OLAP Java APIでできること」
- 「OLAP Java APIでのクラスの説明」
- 「ディメンション・データ・モデルの説明」
- 「ディメンション・データ・モデルの実装」
- 「OLAPのデータの編成」
親トピック: OLAP Java APIの概要
1.1.1 OLAP Java APIでできること
OLAP Java APIを使用して、次の操作を実行するクライアント・アプリケーションを開発できます。
-
Oracle DatabaseインスタンスへのJDBC接続で1つ以上のユーザー・セッションを確立します。 複数のユーザー・セッションで、同じ接続とメタデータ・オブジェクトの同じキャッシュを共有できます。
-
データベースを使用してOLAPトランザクションを管理します。
-
OLAPメタデータ・オブジェクトを使用してディメンション・データ・モデルを実装します。
-
アナリティク・ワークスペースを作成および保守します。
-
論理メタデータ・オブジェクトを作成し、リレーショナル・ソースにマップする。
-
メタデータ・オブジェクトをアナリティック・ワークスペース、またはリレーショナル表およびリレーショナル・ビューとしてデプロイし、そのオブジェクトをデータベースにコミットする。
-
メタデータを探索して、表示または分析に使用できるデータを検出します。
-
多次元データのアナリティク問合せを作成します。 エンド・ユーザーが、ユーザーのニーズに応じてデータを指定および操作する問合せ(データの選択、集計、計算など)を作成できるようにします。
-
アプリケーション・ユーザーが分析を絞り込むため、問合せを完全に再定義するのではなく、問合せを変更します。
-
多次元形式での表示用に構成された問合せ結果を取得する。
これらの操作の詳細は、「OLAP Java APIアプリケーションが実行するタスク」を参照してください。
親トピック: 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メタデータの理解」を参照してください。 これらのパッケージでのクラスの使用方法の詳細は、「メタデータの検出」および「メタデータおよびアナリティク・ワークスペースの作成」を参照してください。 |
|
|
|
|
SQLのような式をビルドするための構文を実装するアナリティク・ワークスペース・オブジェクトおよびクラスをOracle OLAPでどのようにビルドするかを指定する項目およびコマンドを表すクラスが含まれます。 |
|
|
Oracle Databaseインスタンス内のOracle OLAPとのトランザクションを表すクラスが含まれます。 |
OLAP Java APIには、oracle.express
パッケージの下に編成されたパッケージもあります。 これらのパッケージは、APIの最も古いバージョンからの日付です。 これらのパッケージに残っているクラスは、Oracle OLAPとクライアント・アプリケーション間の相互作用中に発生する例外のほとんどがException
クラスです。
OLAP Java APIソフトウェアの入手、およびこれを使用してアプリケーションを開発するための要件については、「開発環境の設定」を参照してください。
親トピック: OLAP Java APIの概要
1.1.3 ディメンション・データ・モデルの説明
データ・ウェアハウスおよびOLAPアプリケーションは、データの多次元ビューに基づいています。 このビューは、次のディメンション・オブジェクトを含むディメンション・データ・モデルに実装されます。
- キューブ
-
キューブは、同じディメンション・セットを持つメジャーのコンテナです。 キューブは通常、単一のリレーショナル・ファクト表またはビューに対応します。 キューブのメジャーにはファクトが含まれ、ディメンションはファクト・データにシェイプを与えます。 通常、ディメンションはキューブのエッジを形成し、メジャー・データはキューブの本文になります。 たとえば、販売された製品ユニットのデータを、時間、製品、顧客およびチャネル・ディメンションのメンバーの値を含み、その本文に販売ユニットの数量および販売金額のメジャーの値が含まれているキューブに編成できます。
キューブ・エッジのOLAP概念は、OLAP Java APIのメタデータ・オブジェクトでは表現されませんが、多くの場合、エッジはOLAP Java APIを使用するアプリケーションの設計に組み込まれます。 各エッジには、1つ以上のディメンションのメンバーの値が含まれます。 キューブのエッジ数に制限はありませんが、多くの場合、データは表示の目的で3つのエッジ(行エッジ、列エッジおよびページ・エッジ)に沿って編成されます。
- メジャー
-
メジャーには、キューブ内のファクト・データが含まれます。 メジャー値はディメンション別に編成および識別されます。 通常、メジャーは多次元です。 各メジャー値は、ディメンション・メンバーの一意のセットによって識別されます。 ディメンション・メンバーのこのセットは、「タプル」と呼ばれます。
- ディメンション
-
ディメンションには、メジャー内のデータを識別および分類する一意の値のリストが含まれます。 一般的に使用されるディメンションは、顧客、製品および時間です。 通常、ディメンションには、ディメンション・メンバーを親子関係に編成する1つ以上の階層があります。
エンド・ユーザーは、データに対して実行するディメンション・メンバー、メジャーおよび計算を指定することで、ビジネス質問を策定し、問合せに対する回答を取得します。 たとえば、月別にデータを分類する時間ディメンション、ユニット・アイテム別にデータを分類する製品ディメンション、および月別に販売される製品ユニットの数量のデータを含むメジャーを使用すると、製品ユニットの売上が1月または6月に高かったかどうかを尋ねる問合せを策定できます。
- 階層
-
階層は、ディメンション・メンバーを親子関係に編成するディメンションのコンポーネントです。 通常、クライアント・アプリケーションのユーザー・インタフェースでは、エンド・ユーザーは親と子の間をドリルダウンまたはドリル・ダウンして階層を拡張または縮小できます。 親ディメンション・メンバーのメジャー値は、子の値の集計です。
1つのディメンションに複数の階層を設定できます。 たとえば、時間ディメンションには、カレンダ年の階層と会計年度の階層を設定できます。 階層は、レベルベースまたは値ベースにできます。
レベルベースの階層では、親はその親の子よりも高いレベルにある必要があります。 キューブでは、通常、親のメジャー値は子の値から集計されます。 たとえば、時間ディメンションには、年、四半期および月のレベルがあります。 月レベルには、最も詳細なデータであるベース・データが含まれます。 四半期のメジャー値は、四半期の子である月の値の集計で、年のメジャー値は年の子である四半期の集計です。 通常、各レベルはリレーショナル・ディメンション表の異なる列にマッピングされます。
値ベースの階層では、親ディメンション・メンバーと子ディメンション・メンバーは、通常、リレーショナル表の同じ列から取得されます。 別の列は、メンバーの親を示します。 たとえば、値階層には会社のすべての従業員が含まれ、1人の従業員を持つ各従業員のマネージャを識別できます。 マネージャを含むすべての従業員は、同じ列から取得されます。 別の列には、従業員のマネージャが含まれます。
- レベル
-
レベルは、レベルベースの階層のコンポーネントです。 複数の階層に1つのレベルを関連付けることができます。 ディメンション・メンバーは1つのレベルにのみ属することができます。
レベルは、通常、ディメンション表またはビュー内の列に対応します。 ベース・レベルは主キーです。
- 属性
-
属性には、ディメンションのメンバーに関連する情報が格納されます。 エンド・ユーザーは、属性を使用してデータを選択できます。 たとえば、エンド・ユーザーは、各製品のわかりやすい名前を持つ属性を使用して製品のセットを選択できます。 属性はディメンションに含まれます。
- 問合せ
-
問合せは、特定のデータ・セットの仕様です。 OLAP Java APIの「問合せ」という用語は、データ・セットを指定する
Source
オブジェクトを指し、データを使用して実行する集計、計算またはその他の操作を含めることができます。 データおよびデータに対する操作によって、問合せの結果セットが定義されます。 このドキュメントでは、一般的な用語「問合せ」はSource
オブジェクトを表します。APIの
oracle.olapi.syntax
パッケージには、Query
クラスがあります。Query
は、リレーショナル表、SQLSELECT
文またはOLAP関数に類似した複数行の複数列結果セットを表します。Query
オブジェクトを使用して、ディメンションまたはメジャーをリレーショナル表またはビューにマップします。
親トピック: OLAP Java APIの概要
1.1.4 ディメンション・データ・モデルの実装
OLAP Java APIでは、ディメンション・データ・オブジェクトはMultidimensional Model (MDM)クラスで表されます。 これらのクラスは、oracle.olapi.metadata.mdm
パッケージにあります。 関連するクラスは、oracle.olapi.metadata
パッケージおよびその下にある他のパッケージにあります。 これらのクラスの詳細は、「OLAP Java APIメタデータの理解」を参照してください。
親トピック: OLAP Java APIの概要
1.1.5 OLAPのデータの編成
OLAP Java APIを使用すると、Javaアプリケーション(アプレットを含む)がOracleデータ・ウェアハウスにあるデータにアクセスできるようになります。 データ・ウェアハウスは、トランザクション処理ではなく、問合せおよび分析用に設計されたリレーショナル・データベースです。 ウェアハウス・データは、多くの場合、リレーショナル・データベースのディメンション・データ・モデルであるスター・スキーマに準拠します。 スター・スキーマは、1つ以上のファクト表と1つ以上のディメンション表で構成されます。 ファクト表には、ディメンション表への外部キーを含む列があります。 通常、データ・ウェアハウスは、抽出変換トランスポート(ETT)ツールによってトランザクション処理データベースから作成されます。
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接続を行うことができ、ユーザーがデータへのアクセス権を付与するデータベース権限を持っていることを確認する必要があります。 接続の確立については、「メタデータの検出」を参照してください。
親トピック: OLAP Java APIの概要
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
オブジェクトの詳細は、「Sourceオブジェクトの理解」および「Sourceメソッドを使用した問合せの作成」を参照してください。
親トピック: OLAP Java APIを使用したデータへのアクセス
1.2.2 ディメンション・メンバーの指定
Oracle OLAPディメンションのメンバーは通常、1つ以上の階層に編成されます。 階層には、レベルに基づいた親子関係を持つものや、値に基づいた親子関係を持つものがあります。 各ディメンション・メンバーの値は一意である必要があります。
OLAP Java APIは、3つの部分からなる形式を使用してディメンション・メンバーを一意に識別します。 書式には、階層、レベルおよびディメンション・メンバーの値が含まれ、ディメンション内の一意の値が識別されます。 一意の値の最初の部分は階層オブジェクトの名前、2番目の部分はレベル・オブジェクトの名前、3番目の部分はレベル内のメンバーの値です。 一意の値の部分は、値の区切り文字列で区切られます。これは、デフォルトでは二重コロン( ::
)です。 次に、TIME_AWJ
という名前のディメンションのCALENDAR_YEAR
という名前の階層内のYEAR
という名前のレベルの一意のメンバー値の例を示します。
CALENDAR_YEAR::YEAR::CY2001
一意値の3番目の部分がローカル値です。 前述の例のローカル値では、暦年2001が識別されます。
親トピック: OLAP Java APIを使用したデータへのアクセス
1.2.3 カーソルの作成
Source
で指定されたデータを取得するには、そのSource
のoracle.olapi.data.cursor.Cursor
を作成します。 次に、このCursor
を使用して、データ・ストアに対してデータをリクエストおよび取得します。 各フェッチ操作でCursor
が取得するデータの量を指定できます(たとえば、ユーザー・インタフェースで40セル表を満たすのに十分な量)。 Oracle OLAPは、アプリケーション用に取得したデータ・ブロックのタイミング、サイズ設定およびキャッシュを効率的に管理するため、その必要はありません。 Cursor
オブジェクトの詳細は、「カーソル・クラスおよび概念の理解」および「問合せ結果の取得中」を参照してください。
親トピック: OLAP Java APIを使用したデータへのアクセス
1.3 OLAP Java APIの例のサンプル・スキーマ
このドキュメントのOLAP Java APIコードの例は、Oracle Technology Network (OTN) webサイトで使用可能な一連のサンプル・プログラムからの抜粋です。 CreateAndBuildAW.java
の例には、アナリティク・ワークスペースをビルドおよびビルドするメソッドがあります。 SpecifyAWValues
という別の例では、CreateAndBuildAW.java
のメソッドをコールし、メタデータ・オブジェクトの名前や、メタデータ・オブジェクトをデータ・ソースにマッピングするためのリレーショナル表の列の名前などの値を指定します。 これらの例で生成されるアナリティク・ワークスペースの名前はGLOBAL_AWJ
です。 その他の例では、アナリティク・ワークスペースを問い合せます。 アナリティク・ワークスペース内のメタデータ・オブジェクトは、グローバル・スキーマ内のリレーショナル表の列にマップされます。
OTN webサイトから、グローバル・スキーマを作成するSQLスクリプトを含むファイルおよびサンプル・プログラムを含むファイルをダウンロードできます。 OTNのwebサイトは、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という名前の階層があります。 最下位レベルは月(Month)の識別子を持ち、その他のレベルは四半期(Quarter)および年(Year)の識別子を持ちます。
-
CHANNEL_AWJ、販売チャネルのディメンションです。 CHANNEL_PRIMARYという名前の階層が1つあります。 最下位レベルは販売チャネル(Channel)の識別子を持ち、上位のレベルはチャネルの合計(Total Channel)の識別子を持ちます。
-
UNITS_CUBE_AWJ、これはCOST、SALESおよびUNITSのメジャーを格納するキューブです。 COSTには、製品ユニットの原価の値があります。 SALESには、製品ユニットの売上に対するドル金額があります。 UNITSには、販売された製品ユニットの数量の値があります。 このキューブは、4つのすべてのディメンションによってディメンション化されます。 キューブの集計メソッドは
SUM
で、各親の値は親の子の値の合計になります。 -
PRICE_CUBE_AWJ、メジャーUNIT_COSTおよびUNIT_PRICEを含むキューブです。 UNIT_COSTには単位のコストがあります。 UNIT_PRICEには単位の価格があります。 キューブは、PRODUCT_AWJおよびTIME_AWJディメンションによってディメンション化されます。 キューブの集計メソッドは
AVG
で、各親の値は親の子の値の平均です。
アナリティク・ワークスペースのOLAPメタデータを検出するプログラムの例は、「メタデータの検出」を参照してください。
親トピック: OLAP Java APIの概要
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
オブジェクトのメソッドのみを使用して、ユーザーがインタフェースで指定するデータを選択および操作できます。 ただし、ユーザーの複数ステップ選択プロシージャを提供し、問合せを変更したり、選択内容の個々のステップを元に戻す機能を提供する場合は、Template
クラスを設計および実装する必要があります。 各Template
のコード内では、Source
クラスのメソッドを使用しますが、Template
クラス自体を使用すると、最も複雑な問合せでも動的に変更および調整できます。 また、汎用Template
クラスを記述し、アプリケーションの様々な部分で再利用できます。Source
オブジェクトの操作の詳細は、「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
オブジェクトを使用した問合せの指定の詳細は、「Sourceオブジェクトの理解」を参照してください。Cursor
オブジェクトを使用してデータを取得する方法の詳細は、「カーソル・クラスおよび概念の理解」を参照してください。SQLCursorManager
クラスの詳細は、「Oracle OLAP Java APIリファレンス」を参照してください。
親トピック: OLAP Java APIの概要