この章では、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』を参照してください。