この章では、JavaアプリケーションでOracle OLAP Java APIを使用したいと考えているアプリケーション開発者を対象に、OLAP Java APIの概要を紹介します。
この章では、次の項目について説明します。
OLAP Java APIは、Java Application Programming Interface(API)です。アプリケーションではこのAPIを介してメタデータ・モデルを実装し、アナリティック・ワークスペースを定義および構築し、オンライン分析処理(OLAP)用のデータにアクセスできます。このデータは、リレーショナル・データベース構造内に配置することも、アナリティック・ワークスペース内に配置することもできます。APIを実装するJavaクラスは、Oracle DatabaseのOracle OLAPコンポーネントの一部です。
OLAP Java APIの目的は、OLAPアプリケーションの開発を容易にすることです。OLAP Java APIにより、ユーザーはグラフィカル・ユーザー・インタフェースを介してアナリティック・ワークスペースを作成し、データに対する選択、集計、計算およびその他の分析タスクを動的に実行できるようになります。通常、OLAPアプリケーションのユーザー・インタフェースでは、データがグラフやクロス集計などの多次元形式で表示されます。
一般に、OLAPアプリケーションはビジネス・インテリジェンス・システムおよびデータ・ウェアハウス・システムのコンテキスト内で開発され、OLAP Java APIの機能は、このタイプのアプリケーション用に最適化されています。OLAP Java APIを使用すると、Javaアプリケーションでアナリティック・ワークスペースの作成やメンテナンスを行ったり、リレーショナル・データベースやアナリティック・ワークスペース内のデータを多次元形式で表示することができます。また、OLAP Java APIを使用すると、操作順に従って問合せを定義することもできます。これによって、問合せ全体を再作成しなくても個々の問合せ手順を取り消すことが可能になります。このような複数手順の問合せは、動的な変更および改良を簡単に行うことができます。
データ・ウェアハウスおよびOLAPアプリケーションは、データの多次元ビューに基づき、データの選択を表す問合せを処理します。多次元ビューを反映する概念の定義を次に示します。これらの概念は、データ・ウェアハウス、OLAPおよびOLAP Java APIの基本となります。
キューブ: ディメンションのセットと1つ以上のメジャーとを関連付ける、多次元データの論理編成。すべてのメジャーが、同じディメンション・セットによってディメンション化されます。OLAPキューブは、本体と複数のエッジで構成されます。通常、キューブのエッジにはディメンション・メンバーの値が含まれ、キューブの本体にはメジャーの値が含まれます。たとえば、製品の販売台数に関するデータがキューブ内に編成され、そのエッジに時間、製品、顧客およびチャネル・ディメンションのメンバーの値が含まれ、本体に販売台数メジャーの値が含まれます。
メジャー: 調査および分析可能なデータ(通常は数値であり加算的)。メジャーは、メジャー値を識別する1つ以上のディメンションによってディメンション化されます。たとえば、製品の販売台数のメジャーは、時間、製品、顧客およびチャネルのディメンションによってディメンション化できます。各メジャー値は、ディメンション・メンバーの一意のセットによって識別されます。
ディメンション: データを分類する構造。顧客、製品および時間のディメンションが一般的に使用されます。通常、ディメンションのメンバーは、1つ以上のレベルを持つ1つ以上の階層に編成されます。異なるディメンションのメンバーのセットによって、メジャー値が識別されます。エンド・ユーザーは、ディメンションのメンバー、メジャー、およびデータ上で実行する計算を指定することによって、ビジネス上の問題を定式化し、問合せに対する答えを得ることができます。たとえば、月ごとにデータを分類する時間ディメンション、単位項目ごとにデータを分類する製品ディメンション、および、製品の販売台数の月ごとのデータを持つメジャーを使用すると、「製品の売上は1月と6月のどちらが多いか」のような問合せをアプリケーションで作成できます。
階層: ディメンション・メンバーを親子関係で編成する方法として、順序付けられたレベルまたは値を使用する論理構造。通常、エンド・ユーザーはユーザー・インタフェースでレベルをドリルダウンまたはドリルアップすることによって、階層を開いたり閉じたりすることができます。
レベル: レベルベース階層の構成要素。たとえば、時間ディメンションには、日、月、四半期および年のレベルでデータを表すメンバーを持つ階層を持ちます。
属性: ディメンション・メンバーの記述特性。エンド・ユーザーは属性を使用してデータを選択できます。たとえば、色の属性を使用して製品のセットを選択できます。
問合せ: 特定のデータセットの指定。OLAP Java APIにおける「問合せ」という用語は、データセットを指定し、集計、計算、またはデータを使用して実行するその他の操作を格納できる、Source
オブジェクトを指します。データおよびデータに対する操作によって、問合せの結果セットが定められます。11g リリースでは、oracle.olapi.syntax
パッケージにQuery
クラスが導入されています。1つのQuery
で、複数行、複数列の結果セット(リレーショナル表に類似)、1つのSQL SELECT
文、または1つのOLAPファンクションを表すことができます。このマニュアルでは、「問合せ」という一般用語は引き続きSource
オブジェクトを指すものとします。
エッジとは、キューブの1つの面のことです。エッジというOLAPの概念はOLAP Java APIのメタデータ・オブジェクトでは表されませんが、多くの場合、OLAP Java APIを使用するアプリケーションの設計に組み込まれます。各エッジには、1つ以上のディメンションのメンバーの値が含まれます。キューブのエッジ数に制限はありませんが、多くの場合、データは表示の目的で3つのエッジ(行エッジ、列エッジおよびページ・エッジ)に沿って編成されます。
これらのすべての概念の詳細は、『Oracle OLAPユーザーズ・ガイド』および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
Oracle OLAPの一部であるOLAP Java APIによって、Oracleデータ・ウェアハウスに格納されたデータにJavaアプリケーション(アプレットを含む)でアクセスできるようになります。データ・ウェアハウスは、トランザクション処理ではなく、問合せおよび分析用に設計されたリレーショナル・データベースです。ウェアハウス・データは、多くの場合、多次元データ・モデルを表すスター・スキーマに準拠します。スター・スキーマは、外部キーを介して関連付けられた1つ以上のファクト表およびディメンション表で構成されます。通常、データ・ウェアハウスは、Oracle Warehouse BuilderなどのExtraction Transformation Transport(ETT)ツールによってトランザクション処理データベースから作成されます。
OLAP Java APIアプリケーションでデータ・ウェアハウス内のデータにアクセスするには、データベース管理者がOracle OLAPでサポートされている編成に従ってそのデータ・ウェアハウスを構成する必要があります。サポートされている編成にはスター・スキーマなどがあります。ウェアハウス内にデータを編成したら、データベース管理者はAnalytic Workspace Manager(AWM)を使用して、OLAPメタデータ・モデルの設計、ウェアハウス内のデータへの論理メタデータ・オブジェクトのマッピング、アナリティック・ワークスペースの構築を行うことができます。アナリティック・ワークスペースを構築すると、OLAPメタデータ・オブジェクトによって表されるデータが格納構造に移入されます。サポートされているデータ・ウェアハウス構成およびAWMによるアナリティック・ワークスペースの作成方法については、『Oracle OLAPユーザーズ・ガイド』を参照してください。
OLAP Java APIを使用すると、アプリケーションでもメタデータ・モデルの設計、ウェアハウス内のデータへの論理オブジェクトのマッピング、およびアナリティック・ワークスペースの構築を実行できます。アプリケーションではその後で、OLAP Java APIまたはAWMで作成したOLAPメタデータ・オブジェクトを取得できます。アプリケーションは、これらのメタデータ・オブジェクトを使用して、ウェアハウス内のデータを操作する問合せを作成します。
データベース管理者がアナリティック・ワークスペースを作成したウェアハウス・データの集合が、OLAP Java APIでアクセスが提供されるデータ・ストアです。ただし、OLAP Java APIを介してデータにアクセスする各ユーザーは、セキュリティ上の制限によって、データ・ストア内でアクセス可能なデータの範囲が制限される場合があります。
OLAP Java APIを介してアプリケーションで実行可能なタスクは次のとおりです。
Oracle Databaseインスタンスへの接続を確立する。
接続およびメタデータ・オブジェクトのキャッシュを共有する複数のユーザー・セッションを提供する。
論理メタデータ・オブジェクトを作成し、リレーショナル・ソースにマップする。
メタデータ・オブジェクトをアナリティック・ワークスペース、またはリレーショナル表およびリレーショナル・ビューとしてデプロイし、そのオブジェクトをデータベースにコミットする。
メタデータを調査し、表示または分析に使用可能なデータを検出する。
アプリケーション・ユーザーのニーズに応じてデータの操作(データの選択、集計、計算など)および指定を行う問合せを作成する。
多次元形式での表示用に構成された問合せ結果を取得する。
アプリケーション・ユーザーがより詳しい分析を行う場合に、(既存の問合せを全面的に再定義するのではなく)既存の問合せを一部変更する。
OLAP Java APIでは、Java環境のすべてのメリットが得られます。OLAP Java APIはプラットフォームに依存せず、抽象化、カプセル化、ポリモフィズム、継承などのオブジェクト指向APIのメリットを提供します。これらの機能はOLAP Java APIに組み込まれており、クライアント・アプリケーションはJavaで作成されているため、クライアント・アプリケーションでもそれらの機能を活用できます。
アプリケーション開発者は、OLAP Java APIで作業するために、Java、オブジェクト指向プログラミング、リレーショナル・データベース、データ・ウェアハウスおよび多次元のOLAPの概念を理解しておく必要があります。
このマニュアル内のOLAP Java APIのコード例は、GLOBAL_AWJ
というアナリティック・ワークスペースを問い合せるサンプル・プログラムからの抜粋です。このアナリティック・ワークスペースは、BuildAW11g.java
というサンプル・プログラムによってリレーショナル表から作成されます。リレーショナル表は、Globalスキーマにあります。
Globalスキーマを作成するSQLスクリプトが含まれたzipファイルは、Oracle Technology Network(OTN)のWebサイトからダウンロードできます。このファイルを入手するには、「Documentation」セクションの「Sample Schemas for Documentation」をクリックします。Oracle Technology Network(OTN)のWebサイトは次の場所にあります。
http://www.oracle.com/technology/products/bi/olap/olap.html
最新サンプルの完全なコードは、このOTNのWebサイトのexamples.zip
ファイル内にあります。Oracle Databaseのリリース時に使用可能だったサンプルは、Oracle Databaseインストール・ファイルに含まれるexamples.zip
ファイルで提供されています。このファイルは、OLAP Java APIクラス・ライブラリと同じディレクトリにあります。格納場所については、付録A「開発環境のセットアップ」を参照してください。
サンプル・プログラムは、開発環境に容易に追加できるパッケージ構造になっています。パッケージ階層の最上位レベルには、サンプル・プログラムのクラスが拡張するベース・クラスと、サンプル・プログラムのクラスで使用されるユーティリティ・クラスがあります。ベース・クラスはBaseExample11g.java
です。ユーティリティ・クラスにはContext11g.java
およびCursorPrintWriter.java
が含まれています。Context11g.java
クラスは、Oracle Databaseインスタンスへの接続を作成するメソッド、メタデータ・オブジェクトを格納するメソッド、格納されているメタデータ・オブジェクトを戻すメソッド、およびCursor
オブジェクトを作成するメソッドを持ちます。CursorPrintWriter.java
クラスは、Cursor
オブジェクトの内容を表示するメソッドを持つPrintWriter
です。
BuildAW11g.java
プログラムで作成される永続OLAPメタデータ・オブジェクトには、次のものが含まれます。
GLOBAL_AWJ
: その他のオブジェクトを格納するアナリティック・ワークスペースです。
PRODUCT_AWJ
: 製品用のディメンションです。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
: 販売チャネル用のディメンションです。PRIMARY
という階層を1つ持ちます。最下位レベルは販売チャネル(Channel)の識別子を持ち、上位のレベルはチャネルの合計(Total Channel)の識別子を持ちます。
UNITS_CUBE_AWJ
: UNITS
メジャーおよびSALES
メジャーを格納するキューブです。UNITS
には、製品の販売台数の値が格納されます。SALES
には、製品の売上額(ドル)が格納されます。このキューブは、4つのすべてのディメンションによってディメンション化されます。
PRICE_CUBE_AWJ
: UNIT_COST
メジャーおよびUNIT_PRICE
メジャーを格納するキューブです。UNIT_COST
には、単位原価が格納されます。UNIT_PRICE
には、単位価格が格納されます。このキューブは、PRODUCT_AWJ
ディメンションおよびTIME_AWJ
ディメンションによってディメンション化されます。
アナリティック・ワークスペースのOLAPメタデータを検出するサンプル・プログラムについては、第3章「メタデータの検出」を参照してください。
Oracle OLAPメタデータ・オブジェクトは、データベースへの接続を介してOLAP Java APIで使用可能なデータを記述します。メタデータ・オブジェクトには、次の3つの内容が記録されます。
データセットの存在。たとえば、単位価格のメジャー、製品および時間メンバー値のディメンション、および、指定されたエンティティとしてデータ・ストアに存在しているディメンションのメンバーに関する情報が格納される属性などです。
データセットの構造。たとえば、単位価格メジャーは製品および時間でディメンション化され、属性は情報が記録されるディメンションでディメンション化され、ディメンションのメンバーは階層レベルに編成されます。
データの特性。たとえば、単位価格メジャーにはディメンション・メンバー値で指定される数値が格納され、ディメンション・メンバーには一意のString
値が格納されます。ディメンションは、各ディメンション・メンバーの説明的な名前などの追加情報を提供する属性を持ちます。
一方、特定の月における特定の製品の価格が2426.07ドルであるという情報は、メタデータではなくデータです。
これらの例に示すとおり、単位価格のメジャーのデータとメタデータとは区別されます。OLAP Java APIでは、ディメンションのデータとメタデータも同様に区別されます。たとえば、製品ディメンションが存在し、ディメンション・メンバーにテキスト値が含まれているという情報はメタデータです。一方、ディメンション・メンバーのいずれかの一意値がPRODUCT_PRIMARY::ITEM::ENV STD
であるという情報はデータです。
OLAP Java APIの多次元メタデータ(MDM)モデルでは、OLAPおよびデータ・ウェアハウスの開発者にとって一般的な多次元形式でデータが記述されます。たとえば、これにはキューブ、メジャー、ディメンション、階層および属性のオブジェクトが含まれます。
OLAP Java APIによってMDMモデルの実装で提供されるJavaクラスの一部を次に示します。
MdmMetadataProvider
MdmRootSchema
MdmDatabaseSchema
MdmCube
MdmMeasure
MdmDimension
MdmDimensionLevel
MdmHierarchy
MdmHierarchyLevel
MdmAttribute
MdmMetadataProvider
により、アプリケーションから、OLAPメタデータ・オブジェクトを表すMDMメタデータ・オブジェクトへのアクセスが可能になります。アプリケーションは、MDMメタデータ・オブジェクトを取得するために、MdmMetadataProvider
のgetRootSchema
メソッドを使用します。このメソッドによって、他のアクセス可能なOLAPメタデータ・オブジェクトのコンテナであるMdmRootSchema
が戻されます。アプリケーションは、MdmRootSchema
から、使用可能なMdmDatabaseSchema
オブジェクトを取得できます。MdmDatabaseSchema
は、リレーショナル・データベースのスキーマを表します。各データベース・ユーザーは1つのリレーショナル・スキーマを所有するため、各ユーザーは1つのMdmDatabaseSchema
を持ちます。
MdmDatabaseSchema
は、キューブ、メジャーおよびディメンションなど、他のアクセス可能なメタデータ・オブジェクトを格納します。MdmDatabaseSchema
は1つ以上のサブスキーマを持つことができます。これらのサブスキーマは、Analytic Workspace Managerのメジャー・フォルダに対応するMdmOrganizationalSchema
クラスのインスタンスです。
アプリケーションはまた、MdmRootSchema
から、使用可能なMdmCube
、MdmMeasure
およびMdmDimension
オブジェクトをすべて取得できます。MdmDatabaseSchema
からは、このスキーマが所有しているMdmCube
、MdmMeasure
およびMdmDimension
オブジェクトを取得できます。
MdmDimension
オブジェクトおよびMdmMeasure
オブジェクトが階層ツリーで編成され、MdmOrganizationalSchema
サブスキーマがMdmDatabaseSchema
の下にネストされる場合があります。アプリケーションはMdmDatabaseSchema
が所有しているオブジェクト間をナビゲートし、使用可能なメタデータ・オブジェクトを検出できます。
OLAP Java APIメタデータの詳細は、第2章「OLAP Java APIメタデータの理解」を参照してください。
MdmMeasure
またはMdmDimension
は、データ・ストア内のデータを表します。たとえば、mdmSales
というMdmMeasure
オブジェクトで一連の要素(販売額(ドル)の数値を持つ)を表し、mdmProdDim
というMdmDimension
オブジェクトで一連のメンバー(製品識別子のテキスト値を持つ)を表すことができます。ただし、アプリケーションはMdmMeasure
またはMdmDimension
を使用してデータに対する問合せを作成することはできません。MdmMeasure
およびMdmDimension
オブジェクトは、メタデータとしてデータの定義を提供しますが、そのデータを指定する問合せを作成する機能は提供しません。分析用にデータを選択、計算および操作するには、アプリケーションで問合せを作成する必要があります。
アプリケーションは、MdmMeasure
またはMdmDimension
のデータに対する問合せを作成するために、メタデータ・オブジェクトのgetSource
メソッドをコールして、MdmMeasure
またはMdmDimension
のSource
オブジェクトを最初に取得する必要があります。このメソッドによって、アプリケーションが問合せの指定に使用できるSource
オブジェクトが戻されます。問合せによって結果セットが定義されます。この例では、結果セットはMdmMeasure
またはMdmDimension
のデータです。
Source
オブジェクトは、メタデータ・オブジェクト用のデータを表す他に、アプリケーションが作成するすべての問合せ用のデータを表すこともできます。たとえば、Source
は、MdmDimension
の値(2002年January、February、March)を選択する問合せ、またはあるMdmMeasure
の値から他の値を引く計算(unitPrice
- unitCost
)を行う問合せを指定できます。アプリケーションは、Source
クラスおよびそのサブクラスの強力なメソッドを使用して、ユーザーの要求どおりにデータを組み合せることができます。
Source
オブジェクトのメリットの1つは、属性、ディメンションおよびメジャーが区別されないことです。これらすべてに対してSource
オブジェクトは同一の動作を行います。
アプリケーションは、Source
によって指定されるデータを取得するために、そのSource
のCursor
を作成します。次に、アプリケーションはこのCursor
を使用してデータ・ストアからデータを要求および取得します。アプリケーションがデータを要求する際、一度に要求するデータの量(たとえば、画面上の40個のセルを含む表を埋めるために十分な量)を指定できます。次に、Oracle OLAPによって、効率的な取得に関連する問題が処理されます。アプリケーションは、OLAP Java APIを介して取得するデータ・ブロックのタイミング、サイズおよびキャッシュの設定を管理する必要はありません。
Oracle OLAPディメンションのメンバーは通常、1つ以上の階層に編成されます。階層には、レベルに基づいた親子関係を持つものや、値に基づいた親子関係を持つものがあります。
OLAP Java APIでは、3分割書式を使用して、ディメンション・メンバーの階層、レベルおよび値を指定することによって、階層における一意の値を識別します。一意値の最初の部分は階層オブジェクトの名前、2番目の部分はレベル・オブジェクトの名前、3番目の部分はレベル内のメンバーの値です。一意値の各部分は、値の分割文字列によって分割されます。これはデフォルトではダブルコロン(::
)です。次に、TIME_AWJ
ディメンションのCALENDAR_YEAR
階層のYEAR
レベルの一意メンバー値の例を示します。
CALENDAR_YEAR::YEAR::CY2001
一意値の3番目の部分がローカル値です。前述の例のローカル値では、暦年2001が識別されます。
OLAP Java APIには、ディメンション・メンバーのローカル値の取得に使用できるクラスおよびメソッドがあります。MdmPrimaryDimension
クラスには、MdmPrimaryDimension
のコンポーネントである階層メンバーのローカル値を記録するMdmAttribute
を取得するためのメソッドがあり、MdmDimensionMemberInfo
クラスには、階層またはレベルのメンバーのローカル値または一意値を取得するメソッドがあります。
OLAP Java APIクライアント・ソフトウェアは、Oracle OLAPへのプログラミング・インタフェースを実装するクラスを含む一連のJavaパッケージです。アプリケーションは、これらのクラスのオブジェクトの作成、メタデータを作成または検出するためのそれらのメソッドのコール、問合せの指定、およびデータの取得を行います。
Javaアプリケーションは、OLAP Java APIクラスのオブジェクトのメソッドをコールする際、OLAP Java APIクライアント・ソフトウェアを使用して、Oracle Databaseインスタンス内に存在するOracle OLAPと通信します。OLAP Java APIクライアント・ソフトウェアとOracle OLAP間の通信は、リレーショナル・データベースに接続するための標準のJavaインタフェースであるJava Database Connectivity(JDBC)APIを介して行われます。
アプリケーションの開発時にOLAP Java APIクラスを使用するには、これらのクラスをJavaコードにインポートします。アプリケーションをユーザーにデプロイする際、アプリケーションにOLAP Java APIクラスを含めます。また、ユーザーがJDBCにアクセス可能であることを確認する必要もあります。
OLAP Java APIアプリケーションを開発するには、Sun社またはOracle JDeveloperのJava Development Kit(JDK)が必要です。ユーザーには、開発に使用されたJDKと互換性のあるバージョン番号のJava Runtime Environment(JRE)が必要です。
Javaのバージョン要件およびOLAP Java APIクライアント・ソフトウェアの設定方法の詳細は、付録A「開発環境のセットアップ」を参照してください。OLAP Java APIのクラスおよびメソッドの詳細は、『Oracle OLAP Java API Reference』およびこのマニュアルの後続の章を参照してください。
OLAP Java APIを使用するアプリケーションは、通常、次のタスクを実行します。
データ・ストアへの接続
メタデータ・オブジェクトの作成または検出
アナリティック・ワークスペースの定義および構築(必要に応じて)
データを選択および操作する問合せの指定
問合せ結果の取得
次に、これらのタスクの概要を示します。詳細は、後続の章を参照してください。
アプリケーションは、ターゲットOracle Databaseインスタンスに関する一部の情報を特定し、JDBC接続メソッドにこれらの情報を指定して、データ・ストアに接続します。
接続に関する詳細は、第3章「メタデータの検出」を参照してください。
接続の確立後、アプリケーションはDataProvider
を作成し、MdmMetadataProvider
を取得するために使用します。MdmMetadataProvider
は、データ・ストア内のすべてのメタデータ・オブジェクトへのアクセスを提供します。
アプリケーションは、使用可能なメタデータを検出するために、MdmMetdataProvider
のgetRootSchema
メソッドを使用して、すべてのメタデータ・オブジェクトを格納するMdmRootSchema
オブジェクトを取得します。次に、現在のユーザーがアクセス権限を持つMdmDatabaseSchema
オブジェクトを取得します。
アプリケーションは、MdmDatabaseSchema
から、スキーマが所有している既存のメタデータ・オブジェクトを検出したり、新しいメタデータ・オブジェクトを作成することができます。getMeasures
およびgetDimensions
などのメソッドは、MdmDatabaseSchema
が所有しているすべてのメジャーまたはディメンションを取得します。findOrCreateAW
およびfindOrCreateCube
などのメソッドは、アナリティック・ワークスペースまたはキューブを取得したり(存在する場合)、存在しない場合は作成します。
データを表すメタデータ・オブジェクトをアプリケーションで新たに作成する場合、メタデータ・オブジェクトをリレーショナル・ソース表にマップする、またはデータを生成する際にOracle OLAPによって使用されるExpression
を指定する必要があります。メタデータの作成については、第4章「メタデータとアナリティック・ワークスペースの作成」を参照してください。
アプリケーションは、アナリティック・ワークスペース、キューブまたはディメンションなどの最上位のメタデータ・オブジェクトから、それぞれのオブジェクトに属するオブジェクトを取得できます。たとえば、アプリケーションは、MdmPrimaryDimension
から、このディメンションに関連付けられている階層、レベルおよび属性を取得できます。アプリケーションは、処理する必要があるメタデータ・オブジェクトを判別すると、データの選択および操作に使用するためのオブジェクトの関連リストをユーザーに提供できます。
メタデータ・オブジェクトの詳細は、第2章「OLAP Java APIメタデータの理解」を参照してください。アプリケーションが使用可能なメタデータを検出する方法については、第3章「メタデータの検出」を参照してください。
一般的なOLAPアプリケーションでは、データ・ストアに対する問合せを作成します。ユーザーは、アプリケーション・ユーザー・インタフェースを使用して、データを選択し、そのデータを使用して実行する処理を指定できます。次に、その指定内容がデータ操作コードによってデータ・ストアに対する問合せに変換されます。問合せには、ディメンション・メンバーの選択のような単純なものから、ディメンション・メンバーの選択によって指定されたメジャー値の何とおりかの集計および計算のような複雑なものまであります。
問合せを表すOLAP Java APIオブジェクトはSource
です。データを表すメタデータ・オブジェクトはMdmSource
クラスを拡張したものです。MdmMeasure
またはMdmPrimaryDimension
などのMdmSource
から、Source
オブジェクトを取得できます。Source
オブジェクトのメソッドを使用すると、Source
の要素の選択を指定したり、Source
の値に対して実行する計算や他の操作を指定する他のSource
オブジェクトを生成できます。
単純なユーザー・インタフェースを実装する場合は、Source
オブジェクトのメソッドのみを使用して、インタフェース内でユーザーが指定したデータを選択および操作できます。ただし、ユーザーが複数手順での選択、および問合せの変更や選択の個々の手順の取消しを行えるようにする場合、Template
クラスを設計および実装する必要があります。各Template
のコード内ではSource
クラスのメソッドを使用しますが、Template
クラス自体でほとんどの複雑な問合せの変更および改良が可能になります。また、汎用のTemplate
クラスを作成し、アプリケーションの様々な部分に再利用することができます。
Source
オブジェクトの処理の詳細は、第5章「Sourceオブジェクトの理解」を参照してください。Template
オブジェクトの処理の詳細は、第10章「動的問合せの作成」を参照してください。
OLAPアプリケーションのユーザーがデータの選択、計算、組合せおよび一般的な操作を行う場合、操作結果の表示も必要となります。そのため、アプリケーションは、データ・ストアから問合せの結果セットを取得し、データを多次元形式で表示する必要があります。アプリケーションは、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
の構造と同じです。つまり、Cursor
はメジャー・データであるベース値を持ち、Cursor
は4つの出力を持ちます。出力の値は、ディメンションのSource
オブジェクトの値です。
アプリケーションは、多次元構造のCursor
をループし、Cursor
を介してデータのすべての項目を取得できます。この設計は、コンピュータ画面に表示するための標準のユーザー・インタフェース・オブジェクトの要件に対して適切に調整されています。特に、多次元形式でのデータの表示に対して適切に調整されています。
Source
オブジェクトを使用して問合せを指定する方法の詳細は、第5章「Sourceオブジェクトの理解」を参照してください。Cursor
オブジェクトを使用してデータを取得する方法の詳細は、第8章「CursorクラスおよびCursorの概念」を参照してください。SQLCursorManager
クラスの詳細は、『Oracle OLAP Java API Reference』を参照してください。