この章では、次の項目について説明します。
OLAP DMLは、Oracle OLAPオブジェクトの定義およびOracle OLAPデータの操作を行うための基本言語です。
OLAP DML文は、主に次の2つのタイプに分けられます。
Oracleデータ・ディクショナリでOLAP APIを使用して事前に定義されたOracle OLAPのキューブとキューブ・ディメンションを処理対象とするOLAP DML文。これらの文の概要は、「キューブ対応のOLAP DML文」を参照してください。
アナリティック・ワークスペースで定義され格納されている下位レベルのOLAPオブジェクトを作成および操作するOLAP DML文。これらの文の概要は、「アナリティック・ワークスペース・オブジェクトを直接処理するOLAP DML文」を参照してください。
OLAPキューブは、Oracle OLAPのファースト・クラス・オブジェクトであり、Oracleデータ・ディクショナリで定義されます。OLAP DML文の中には、キューブなどのOLAPのファースト・クラス・オブジェクトを処理対象とするものがあります。
参照: OLAPキューブなどのOLAPの第1レベル・オブジェクトの詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。 |
次のOLAP DMLプログラムは、事前定義されたOLAPのキューブとキューブ・ディメンションを処理します。
通常、これらのプログラムは、入力としてOLAPのキューブまたはキューブ・ディメンションのOracleデータ・ディクショナリ名をとります。これらのプログラムを実行すると、キューブまたはキューブ・ディメンションに対して必要な変更が行われるだけではなく、このようなキューブまたはキューブ・ディメンションの下位にあるすべてのアナリティック・ワークスペース・オブジェクトに対しても変更が行われます。
また、キューブに対応していないOLAP DML文でOBJORGファンクションを使用すると、OLAPのキューブまたはキューブ・ディメンションの下位にあるアナリティック・ワークスペース・オブジェクトを指定できます。
これまで、OLAP DML文は、OLAPデータ・ディクショナリで定義されるOLAPの第1レベル・オブジェクトを処理対象としていませんでした。かわりに、OLAP DML文は、アナリティック・ワークスペースで定義され格納されている下位レベルのOLAPオブジェクトを作成および操作します。現在でもOLAP DML文のほとんどは、このような下位レベルのOLAPオブジェクトを処理対象としています。
注意: 特に明記しないかぎり、このマニュアルで説明する文と情報は、キューブに対応していないOLAP DML文(アナリティック・ワークスペース・オブジェクトを直接処理するOLAP DML文)に適用されます。 |
アナリティック・ワークスペース・オブジェクトを直接処理するOLAP DML文では、OLAP DML文への入力としてオブジェクト名が必要な場合、そのオブジェクト名はOracleデータ・ディクショナリで定義されたオブジェクトの名前ではなく、アナリティック・ワークスペースで定義されたオブジェクトの名前になります。
これらのOLAP DML文を使用すると、SQL、Java、OLAP APIまたはOracle OLAPツールを使用せずにアナリティック・ワークスペースのデータを分析するプログラムを作成できます。OLAP DMLでは、アナリティック・ワークスペースおよびアナリティック・ワークスペースに格納されるオブジェクトを定義できます。たとえば、次の操作を行うことができます。
アナリティック・ワークスペースの作成(「新しいアナリティック・ワークスペースの定義」を参照)。
DEFINEコマンドを使用したアナリティック・ワークスペースの多次元データ・オブジェクトの定義。
データを分析する計算オブジェクトとプログラムの定義(第3章「計算式、モデル、集計および割当て」を参照)。
多次元データ・オブジェクトにおけるデータの移入および分析
OLAP DMLの構文の基本単位は、オプション、プロパティ、コマンド、ファンクションおよびプログラムです。これらの基本単位をすべてまとめて、OLAP DML文と呼ぶ場合があります。
OLAP DMLオプション
OLAP DMLオプションは、特殊なタイプのアナリティック・ワークスペース・オブジェクトで、Oracle OLAPによってデータがどのように計算またはフォーマットされるのか、あるいはどのOracle OLAP演算がアクティブ化されるのかなど、いくつかの特性を指定します。オプションには、読取り専用オプションと、値を指定できる読取り/書込みオプションがあります。読取り/書込みオプションには、デフォルト値があります。
独自のオプションは、アナリティック・ワークスペースの一部としては定義できません。しかし、Oracle OLAP DMLの一部として定義されているオプションは、どれでも使用できます。オプションの詳細は、第5章「OLAP DMLオプション」を参照してください。
OLAP DMLプロパティ
プロパティは、アナリティック・ワークスペース・オブジェクトの定義に関連付けられた名前付きの値です。OLAP DMLのPROPERTYコマンドを使用すると、プロパティの名前付け、作成およびオブジェクトへの割当てができます。
$(ドル記号)で始まるプロパティは、Oracle OLAPによりシステム・プロパティとして認識されます。システム・プロパティは、作成はできませんが、オブジェクトへの割当ては可能な場合があります。システム・プロパティの詳細は、第4章「OLAP DMLプロパティ」を参照してください。
OLAP DMLファンクション
OLAPファンクションの動作は、他のプログラミング言語のコマンドとほとんど同じです。アクションを開始したり値を返します。OLAP DMLファンクションには、「すべてのデータ・オブジェクトの値に対するOLAP DML文の適用」で説明する、ループ特性がある点が異なります。
OLAP DMLファンクションの多くは、標準のテキスト・ファンクションと計算ファンクションです。さらに複雑な情報を返すOLAP DMLファンクションもあります。また、ファンクションとして実行可能なOLAP DMLプログラムを作成することにより、OLAP DMLの機能を強化できます。
組込みOLAP DMLファンクションの詳細は、第7章「OLAP DMLファンクション: AからK」および第8章「OLAP DMLファンクション: LからZ」を参照してください。
OLAP DMLコマンド
OLAP DMLコマンドの動作は、他のプログラミング言語のコマンドとほとんど同じです。ただし、OLAP DMLコマンドにはループ特性があります(「すべてのデータ・オブジェクトの値に対するOLAP DML文の適用」を参照)。
多くのOLAP DMLコマンドは、複雑なアクションを実行します。これらのコマンドには、アナリティック・ワークスペースの作成に使用するAWコマンドや、アナリティック・ワークスペース内でのオブジェクトの定義に使用するDEFINEコマンドなどのデータ定義コマンドがあります。その他のOLAP DMLコマンドは、データ操作コマンドです。Oracle OLAPによってOLAP DMLプログラムの実行をトリガーするイベントとして認識されるコマンドもあります。(詳細は、「トリガー・プログラム」を参照してください。)さらに、コマンドとして実行可能なOLAP DMLプログラムを作成することにより、OLAP DMLの機能を強化できます。
組込みOLAP DMLコマンドの詳細は、第8章、第9章「OLAP DMLコマンド: AからG」および第10章「OLAP DMLコマンド: HからZ」を参照してください。
OLAP DMLプログラム
複数のOLAP DMLプログラムがOLAP DMLの一部として提供されています。プログラムの中には、印刷可能またはオンラインで参照可能なレポートを生成するものがあります。OLAP DMLの一部として提供される他のプログラムは、プログラマおよびデータベース管理者にとって有用な標準的な計算を実行します。OLAP DMLで提供されているプログラムの詳細は、「OLAP DMLから提供されるプログラム」を参照してください。
さらに、独自のOLAP DMLプログラムを作成してOLAP DMLの機能を強化することもできます(第6章「OLAP DMLプログラム」を参照)。
OLAP Worksheetを使用すると、OLAP DML文の実行が非常に容易になります。OLAP Worksheetは、Analytic Workspace Managerの一部として提供されます。Analytic Workspace Manager内からOLAP Worksheetを開くには、次の手順を実行します。
Oracle Databaseインスタンスに接続します。
スキーマを選択します。
ツールを選択し、次にOLAP Worksheetを選択します。
OLAP DML文は、SQLやJavaを使用して実行することもできます。
PL/SQL DBMS_AW
パッケージを使用してOLAP DML文を実行できます。詳細は、「SQL文へのOLAP DMLの埋込み」を参照してください。
Oracle OLAP Java APIの一部として提供されているSPL_Executor
を使用して、OLAP DML文をJavaプログラムに埋め込むことができます。
参照: 『Oracle OLAP Java API Reference』 |
概念的には、アナリティック・ワークスペースは、OLAP分析のためにOracle OLAPが使用するOracle Databaseの一部です。物理的には、アナリティック・ワークスペースは、データベース内のAW$
workspacename
という名前の表にLOBとして格納されます。
また、アナリティック・ワークスペースには、次の種類のオブジェクトとこれらのオブジェクトのOLAP DML定義が格納されます。
分析するデータおよび分析結果を含む多次元データ・オブジェクト
実行する分析を指定するOLAP DML文を含む計算オブジェクト(計算式、モデル、集計および割当て)
複雑な分析を実行するOLAP DMLプログラム
アナリティック・ワークスペースはOracle Databaseインスタンス内に表として物理的に格納されるため、アナリティック・ワークスペースを操作するにはSQL GRANT権限が必要です。必要な権限は、アナリティック・ワークスペースが自分の所有するスキーマに存在するか、または自分が所有しないスキーマに存在するかによって異なります。
スキーマの所有者である場合、アナリティック・ワークスペースを作成またはアタッチするときに必要なのは、SQL GRANT権限のみです。これらのタスクの実行に必要な権限とそのタスクに関連するOLAP DMLコマンドを次の表に示します。
スキーマの所有者でない場合、アナリティック・ワークスペースの作成、ASOFモードでのアナリティック・ワークスペースのアタッチ、アナリティック・ワークスペースの削除、アナリティック・ワークスペースの切捨てを行うには、次の表に示すSQL GRANT権限が必要です。
タスク | OLAP DMLコマンド | 必要なSQL GRANT権限 |
---|---|---|
アナリティック・ワークスペースの作成 | AW CREATE |
CREATE ANY TABLE、SELECT ANY TABLE、UPDATE ANY TABLE |
アナリティック・ワークスペースAS OFのアタッチ | ASOFキーワード付きのAW ATTACH | FLASHBACK ANY TABLE |
アナリティック・ワークスペースの削除 | AW DELETE | DROP ANY TABLE |
アナリティック・ワークスペースの切捨て | AW TRUNCATE |
TRUNCATE ANY TABLE |
Oracle Databaseでは、名前付きPL/SQLプロシージャを実行する場合、ロールは有効になりません。この場合、CREATE TABLE権限が必要です。
OLAP DMLを使用すると、アナリティック・ワークスペースを作成できます。アナリティック・ワークスペースを作成するには、CREATEキーワードを指定してAWコマンドを発行し、続けてUPDATE文およびCOMMIT文を順に発行します。
定義済アナリティック・ワークスペースを使用するには、あらかじめAW ATTACH文を発行してアナリティック・ワークスペースをアタッチしておく必要があります。アナリティック・ワークスペースには、次のようなアタッチ・モードでアタッチできます。
読取り専用: ユーザーはワークスペースのデータに独自の変更を加えることによって、what-if分析を実行できますが、これらの変更をコミットできません。読取り専用モードでは、アタッチされるユーザーの数に制限はありません。
読取り/書込みアクセス権モード: 読取り/書込みモードで同時にアナリティック・ワークスペースを開くことができるのは1ユーザーのみです。ユーザーはワークスペースに対する変更をすべてコミットするか、変更しないことをコミットする必要があります。
読取り/書込み排他アクセス権モード: 読取り/書込み排他アタッチ・モードは、他のアクセス権モードとの互換性がありません。他のユーザーがいずれかのモードでアナリティック・ワークスペースをアタッチしている場合、ユーザーは読取り/書込み排他モードでアナリティック・ワークスペースをアタッチできません。読取り/書込み排他モードでアナリティック・ワークスペースを開くことができるのは一度に1ユーザーのみです。ユーザーはワークスペースに対する変更をすべてコミットするか、変更しないことをコミットする必要があります。
マルチライタ・アクセス権モード: マルチライタ・モードでアタッチされているアナリティック・ワークスペースには、複数のセッションから同時にアクセスできます。マルチライタ・モードでは、変数、リレーション、値セットおよびディメンションの個々に対してアタッチ・モード(読取り専用または読取り/書込み)を指定することでアナリティック・ワークスペースを制御しているので、ユーザーは同じアナリティック・ワークスペースを同時に変更できます。
各種アタッチ・モードの詳細は、AW ATTACH文に関する構文および注意事項を参照してください。
表1-1「アナリティック・ワークスペースに関する情報を表示する文」に、アナリティック・ワークスペースに関する情報を表示するOLAP DML文を示します。
表1-1 アナリティック・ワークスペースに関する情報を表示する文
文 | 説明 |
---|---|
|
現在アタッチされているワークスペースに関する情報を返す。 |
AWDESCRIBEプログラム |
現行のアナリティック・ワークスペースに関する情報を、現行の出力ファイルに送信する。 |
EXISTSファンクション |
アタッチされたワークスペースでオブジェクトが定義されているかどうかを示す値を返す。 |
LISTBYプログラム |
1つ以上の指定されたディメンションまたはコンポジットによってディメンション化される、またはそれらに関連付けられるアナリティック・ワークスペースのすべてのオブジェクトをリストする。 |
LISTNAMESプログラム |
アナリティック・ワークスペース内のオブジェクトの名前をリストする。 |
OBJファンクション |
アナリティック・ワークスペース・オブジェクトに関する情報を返す。 |
OBJLISTファンクション |
指定する1つ以上のワークスペース内のオブジェクトをリストする。 |
DESCRIBEコマンド |
1つ以上のワークスペース・オブジェクトの簡単な定義をリストする。 |
FULLDSCプログラム |
オブジェクトのプロパティおよびトリガーを含む、1つ以上のワークスペース・オブジェクトの完全な定義をリストする。 |
通常、リレーショナル・データベースでは、第3正規形のデータの表にデータ値を格納します。このタイプの実装では、リレーショナル・データベース表のキー列の値は、単一レベルの一意のデータ値になります。たとえば、リレーショナル・データベースの1つのレベルに都市の名前を含む「City」という名前のキー列を持つ表が存在し、その次の上位レベルに州の名前を含む「state」という名前のキー列を持つ表が存在し、さらに同じようにその次の上位レベルに別の名前のキー列を持つ表が存在するという具合です。
アナリティック・ワークスペースでは、分析するデータを保持するオブジェクトは変数と呼ばれる配列です。変数内のキーは、変数のディメンションとして機能する他のオブジェクトに格納されます。OLAP分析のパフォーマンスを向上させるために、複数のレベルの値は階層ディメンションと呼ばれる単一のディメンション内に格納されます。たとえば、アナリティック・ワークスペースでは、都市と州の両方の名前を値として持つ「geog」という名前の階層ディメンションを持つことができます。
2つ以上のディメンションの値を関連付ける値を格納するオブジェクトは、リレーションと呼ばれます。このような階層ディメンションの異なるレベルの値に関する1対多関係は、アナリティック・ワークスペースに格納されます。たとえば、階層ディメンション「geog」の都市と州の値の関係は、通常、parentrelリレーションと呼ばれるアナリティック・ワークスペースのリレーションに格納されます。詳細は、「parentrelリレーション」を参照してください。
通常、追加のアナリティック・ワークスペース・オブジェクトには、階層ディメンションに関する追加情報を保持するように定義されます。一部の重要なOLAP DMLのコマンドとファンクション(LIMITコマンドなど)は、これらのオブジェクトの名前を文の構文内の1つの引数に指定して、アナリティック・ワークスペース内のこれらのオブジェクトの存在を推測します。
OLAP DMLを使用して定義するデータ・オブジェクトは多次元オブジェクトであり、アナリティック・ワークスペースに格納されます。OLAP DML文を使用してこれらの多次元データ・オブジェクトを操作する場合、こうした操作は各多次元データ・オブジェクトに含まれる値セット全体に同時に適用されます。
OLAP DMLでは、次のようなアナリティック・ワークスペースのデータ・オブジェクトの型を使用できます。
アナリティック・ワークスペースで最も重要なデータ・オブジェクトは変数です。変数はデータを格納するオブジェクトです。変数内のデータはすべて同じデータ型である必要があります。通常、変数には、ビジネスの特定の側面を定量化するデータ値を含めます。たとえば、ビジネスの取引に関して(ドル、個数、パーセントなどで評価される)複数のカテゴリがある場合、各カテゴリはそれぞれ独自の変数に格納されます。たとえば、ドル(sales変数)や個数(units変数)で売上データを記録できます。
OLAP DMLは多次元プログラミング言語であるため、変数は多次元であり、他のOLAP言語でメジャーと呼ばれるものに相当します。概念的には、2つのディメンションを持つ変数を表、3つのディメンションを持つ変数をキューブなどとみなすことができます。物理的には、変数は多次元配列として格納され、この配列の実際の構造は、変数をディメンション化するオブジェクトによって決定されます。
配列のスコープとパフォーマンスは一定ではありません。永続変数とは、変数の値と定義の両方がアナリティック・ワークスペースに格納される変数です。一時変数とは、現行のセッションでのみ値を保持する変数です。アナリティック・ワークスペースを更新およびコミットすると、一時変数の定義のみが保存されます。アナリティック・ワークスペースを終了すると、データ値は廃棄されます。また、変数はプログラム内で定義することもできます。
プログラム内ではスカラー変数も定義できますが、OLAP DMLを使用して定義する変数の大半は、ディメンション化された変数です。ディメンション化された変数は、複数の値を保持する配列です。変数の索引やディメンションを使用すると、変数を編成できます。ディメンションの値は、データ値を一意に識別するという点で、リレーショナル表のキーに似ています。たとえば、ディメンションtime、geographyおよびproductによってディメンション化されたsales変数が存在する場合、time、geographyおよびproductの値の各組合せによってsalesの値が識別されます。(変数の索引は、実際にはディメンションの値ではなく、ディメンションの値のINTEGER位置です。)
変数は、フラット・ディメンションまたは階層ディメンションのどちらかでディメンション化できます。フラット・ディメンションは、ディメンション内の値がすべて同じレベルである(別の値の子や親ではない)場合に存在します。階層ディメンションは、単一ディメンションの値が互いに1対多(親子)関係である場合に存在します。
階層ディメンションは、単一のディメンション内のこのような型のデータを編成および構造化する手法です。階層ディメンションを使用すると、データを含む変数をすべてのレベルにディメンション化できます。複数の階層を持つディメンションもあります。セルフ・リレーションを作成することでディメンション値の親子関係を指定します。階層ディメンションを使用して、単一の変数内に様々なレベルの集計データを含む変数を定義します。単一の変数内にこれらすべての値を格納すると、(特に変数が大きい場合に)データを表示しようとするユーザーに対する応答時間が短くなります。
通常、階層ディメンションの上位レベルに対応する変数のセルは、下位レベルのディメンション値に対応する変数のセルの値の合計を含みます。たとえば、期間を表す階層ディメンションで定義されているsales変数の場合、各四半期を表す変数のセルは四半期の月の総売上を表すことができます。
階層ディメンションで変数を定義した後、変数データを下位レベルの階層に追加して、上位レベルの階層の値を計算または集計できます。逆に、階層の上位レベルから下位レベルにデータを配布または割当てすることもできます。
変数とリレーションのデータがどのように実際に構造化され格納されるかは、変数やリレーションをディメンション化するために使用するオブジェクトの型とそれらのオブジェクトが変数やリレーションの定義で表示される順序によって異なります。単純なディメンション、連結ディメンション、コンポジット、パーティション・テンプレートおよび別名ディメンションにより、変数をディメンション化できます。変数をディメンション化するために選択するオブジェクトによって、変数のデータの格納方法が決定されます。
単純なディメンション
単純なディメンションのメンバーは、すべて同じデータ型を持つデータ値です。変数が単純なディメンションでディメンション化されている場合、ディメンションの各メンバーに対する変数のセルは1つになります。データを持たない変数のディメンション・メンバーが存在する場合、Oracle OLAPでは、その空の値を持つ変数にNA値が格納されます。そのようなNA値の格納の結果、すべてNA値となった場合、Oracle OLAPは実際には値を格納しません。
連結ディメンション
連結ディメンションは、事前定義された単純なディメンションや結合ディメンションにまたがって定義されます。したがって、連結ディメンションのベース・ディメンションは異なるデータ型になる場合があります。ベース・ディメンションに2つ以上の単純なフラット・ディメンションを持つ連結ディメンションを使用すると、階層を表現できます。連結ディメンションを使用すると、アナリティック・ワークスペースのディメンションをリレーショナル表の列に容易にマップでき、リレーショナル構造のデータをアナリティック・ワークスペース構造に非常に効率的にロードできます。
コンポジット
コンポジットは、事前定義されたディメンションにまたがって定義されます。概念として、コンポジットは次の2つの構造から成り立っていると考えられます。
コンポジット・オブジェクト自体。コンポジットには、ディメンション値の組合せ(つまり、コンポジット・タプル)が含まれており、Oracle OLAPでは、この組合せを使用して、コンポジットによってディメンション化される変数の構造を決定します。
コンポジット値とそのベース・ディメンション値との間の索引。
コンポジットでディメンション化される変数では、Oracle OLAPでは、単純なディメンションによって変数をディメンション化する場合のように、ベース・ディメンション内のすべての値についてセルが作成されるわけではありません。かわりに、配列要素(つまり変数セル)はコンポジットのタプルに格納されるディメンション値についてのみが作成されます。変数のデータは、コンポジットの各タプルに対し、セルからセルへ順番に格納されます。データ格納の観点からは、コンポジット内のベース・ディメンション値の各組合せは、通常のディメンションの値と同様に扱われます。したがって、通常のディメンションとコンポジットを1つずつ持つ変数を定義する場合、変数のデータは、2次元の変数と同様に格納されます。コンポジットを使用することにより、変数に対して作成される要素の数が減り、データの格納がより効率化されます。
パーティション・テンプレート
パーティション・テンプレートは、事前定義されたディメンションやコンポジットにまたがって定義されます。パーティション・テンプレートは、パーティション変数のパーティション仕様です。パーティション変数は、アナリティック・ワークスペースであるLOBのリレーショナル表に複数行として格納され、各パーティションが表の1行になります。
別名ディメンション
別名ディメンションは、単純なディメンションに対する別名です。別名ディメンションは、そのベース・ディメンションと同じ型および値を持ちます。通常、ある変数を同じディメンションで2回ディメンション化する必要がある場合に、別名ディメンションを定義します。
リレーションとは、アナリティック・ワークスペース内の特定のディメンションの値と、同一のディメンションまたは他のディメンションの値との対応関係を設定するオブジェクトです。リレーションはディメンション化された配列です。リレーションの各セルにはディメンションの値の索引が保持されます。2つ以上のディメンション間のリレーション、ディメンションのセット間の複数のリレーション、または同一ディメンション内のリレーション(セルフ・ディメンション)を定義できます。
通常、リレーションは階層ディメンションのセルフ・リレーションです。1対多(親子)関係にあるディメンション値間のリレーションを作成することで、子値でデータを編成し、親値でデータの集計を表示できます。たとえば、geography
ディメンションに対してgeog.parent
リレーションを作成して、geography
の値cityとstateの関係を定義できます。この方法により、cityでデータを編成してstateでデータの集計を表示できます。
OLAP DMLでは、変数の定義では使用せずに変数の問合せで使用する、次の特殊なデータ・オブジェクトが用意されています。
値セット・オブジェクト
値セットは、事前定義された1つ以上のディメンションのディメンション値のリストです。値セットを使用すると、複数のセッションにまたがってディメンション・ステータス・リストを保存できます。
サロゲート
ディメンション・サロゲートは、事前定義されたディメンションの値の代替セットです。サロゲートで変数をディメンション化することはできませんが、モデル、LIMITコマンド、修飾データ参照または文(FILEREAD、FILEVIEW、SQL FETCH、SQL IMPORTなど)でロードするデータでは、ディメンションのかわりにサロゲートを使用できます。
通常、変数は階層オブジェクトによってディメンション化されます。たとえば、geog、timeおよびproductでディメンション化されているsales変数があるとします。この場合、geogディメンションには、2つの階層(国別と売上地域)が存在し、それぞれの階層では、国別の階層の最上位レベルに「すべての国」が存在し、売上地域の階層の最上位レベルに「すべての地域」が存在する複数のレベルを持つことができます。例1-1「geogという名前の階層ディメンションの定義および移入」に、このタイプの地理階層ディメンションの定義および移入を示します。
例1-1 geogという名前の階層ディメンションの定義および移入
DEFINE geog DIMENSION TEXT LD A dimension with two hierarchies for geography "Populate the dimension with City, State, Region, and Country values MAINTAIN geog ADD 'Boston' 'Springfield' 'Hartford' 'Mansfield' 'Montreal' 'Walla Walla' 'Portland' 'Oakland' 'San Diego' 'MA' 'CT' 'WA' 'CA' 'Quebec' 'East' 'West' 'All Regions' 'USA' 'Canada' 'All Country' "Display the values in geog REPORT geog GEOG -------------- Boston Springfield Hartford Mansfield Montreal Walla Walla Portland Oakland San Diego MA CT WA CA Quebec East West All Regions USA Canada All Country
通常、階層ディメンションを定義した後、そのディメンションについて次のオブジェクトを定義します。
ディメンションの階層の名前をリストするhierlistディメンション。詳細および例は、「hierlistディメンション」を参照してください。
階層を定義するparentrelリレーション。ディメンションは、そのディメンションに対して定義されたparentrelを持つ場合は、必ず階層ディメンションになります。詳細および例は、「parentrelリレーション」を参照してください。
すべての階層のあらゆるレベルの名前をリストするlevellistリレーション。詳細および例は、「levellistディメンション」を参照してください。
各階層のレベルの値であるhierlevels値セット。詳細および例は、「hierlevels値セット」を参照してください。
各階層の値を識別するinhier値セットまたは変数。詳細および例は、「inhier値セットまたは変数」を参照してください。
階層ディメンションの各値を階層のレベルに関連付けるlevelrelリレーション。詳細および例は、「levelrelリレーション」を参照してください。
各階層ディメンションの値とその関連付けられた値であるfamilyrelリレーション。詳細および例は、「familyrelリレーション」を参照してください。
各階層内の各値のグルーピングIDであるgidrelリレーション。詳細および例は、「gidrelリレーション」を参照してください。
hierlistディメンションは、階層ディメンションの階層の名前を値として保持するアナリティック・ワークスペース内のTEXT
ディメンションです。たとえば、企業で異なる暦年と会計年度を使用する場合、その企業のtimeディメンションで、2つの階層(暦年用と会計年度用)を使用します。そのtime階層をサポートしたhierlistディメンションでは、2つの値(CalendarとFiscal)を使用します。
一貫性を保つために、アナリティック・ワークスペースには、各階層ディメンションに対するhierlistディメンションが含まれます。これは、階層ディメンションに1つの階層しかない場合も例外ではありません。
例1-2「geog_hierlistという名前のhierlistディメンションの定義および移入」に、このタイプのディメンションの定義および移入を示します。
例1-2 geog_hierlistという名前のhierlistディメンションの定義および移入
DEFINE geog_hierlist DIMENSION TEXT LD List of Hierarchies for geog dimension "Populate the geog_hierlist dimension MAINTAIN geog_hierlist ADD 'Political_Geog' 'Sales_Geog' "Display the values of the geog_hierlist dimension REPORT geog_hierlist GEOG_HIERLIST -------------- Political_Geog Sales_Geog
parentrelリレーションは、階層ディメンション、それ自身(セルフ・ディメンション)およびhierlistディメンション間のリレーションです。このリレーションにより、階層内の各ディメンション・メンバーが識別されます。
例1-3「geog_parentrelという名前のparentrelリレーションの定義および移入」に、このタイプのリレーションの定義および移入を示します。
例1-3 geog_parentrelという名前のparentrelリレーションの定義および移入
"Define the relation DEFINE geog_parentrel RELATION geog <geog geog_hierlist> LD Self-relation for geog showing parents of each value "Populate each cell in the relation "with the parent of the geog value "This example using assignment statement with QDRs to do that geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Boston') = 'MA' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Hartford') = 'CT' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Springfield') = 'MA' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Mansfield') = 'CT' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Montreal') = 'Quebec' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Walla Walla') = 'WA' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Portland') = 'WA' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Oakland') = 'CA' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'San Diego') = 'CA' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'CT') = 'East' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'MA') = 'East' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'WA') = 'West' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'CA') = 'West' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'Quebec') = 'East' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'East') = 'All Regions' geog_parentrel (geog_hierlist 'Sales_Geog' geog 'West') = 'All Regions' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Boston') = 'MA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Hartford') = 'CT' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Springfield') = 'MA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Mansfield') = 'CT' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Montreal') = 'Quebec' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Walla Walla') = 'WA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Portland') = 'WA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Oakland') = 'CA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'San Diego') = 'CA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'CT') = 'USA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'MA') = 'USA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'WA') = 'USA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'CA') = 'USA' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Quebec') = 'Canada' geog_parentrel (geog_hierlist 'Political_Geog' geog 'USA') = 'All Country' geog_parentrel (geog_hierlist 'Political_Geog' geog 'Canada') = 'All Country' "Display the values of geog_parentrel REPORT DOWN geog W 20 geog_parentrel -------------GEOG_PARENTREL-------------- --------------GEOG_HIERLIST-------------- GEOG Political_Geog Sales_Geog -------------- -------------------- -------------------- Boston MA MA Springfield MA MA Hartford CT CT Mansfield CT CT Montreal Quebec Quebec Walla Walla WA WA Portland WA WA Oakland CA CA San Diego CA CA MA USA East CT USA East WA USA West CA USA West Quebec Canada East East NA All Regions West NA All Regions All Regions NA NA USA All Country NA Canada All Country NA All Country NA NA
levellistディメンションは、階層ディメンションの階層のすべてのレベルの名前を値として保持するTEXTディメンションです。
例1-4「geog_levellistという名前のlevellistディメンションの定義および移入」に、このタイプのディメンションの定義および移入を示します。
例1-4 geog_levellistという名前のlevellistディメンションの定義および移入
DEFINE geog_levellist DIMENSION TEXT LD List of levels used by hierarchies of the geog dimension "Populate the geog_levellist dimension with the names of the levels of both the "Political_Geog and Sales_Geog hierarchies MAINTAIN geog_levellist ADD 'All Country' 'Country' 'All Regions' 'Region' MAINTAIN geog_levellist ADD 'State-Prov' 'City' "Display the values of the geog_levellist dimension REPORT geog_levellist GEOG_LEVELLIST -------------- All Country Country All Regions Region State-Prov City
hierlevels値セットは、階層ディメンションの各階層に含まれているhierlevelsディメンション(通常は最下位から最上位への順)の値です。
例1-5「geog_hierlevelsという名前のhierlevels値セットの定義および移入」に、このタイプの値セットの定義および移入を示します。
例1-5 geog_hierlevelsという名前のhierlevels値セットの定義および移入
DEFINE geog_hierlevels VALUESET geog_levellist <geog_hierlist> "Using LIMIT populate the valueset with the appropriate values for each hierarchy LIMIT geog_hierlevels TO ALL LIMIT geog_hierlevels (geog_hierlist 'Political_Geog') TO 'City' 'State-Prov' 'Country' 'All Country' LIMIT geog_hierlevels (geog_hierlist 'Sales_Geog') TO 'City' 'State-Prov' 'Region' 'All Regions' "Display the values in the valueset REPORT W 22 geog_hierlevels GEOG_HIERLIST GEOG_HIERLEVELS -------------- ---------------------- Political_Geog City State-Prov Country All Country Sales_Geog City State-Prov Region All Regions
inhier値セットは、各階層内のinhierディメンションの値です。例1-6「geog_inhierという名前のinhier値セットの定義および移入」に、このタイプの値セットの定義および移入を示します。
inhier変数は、階層ディメンションとhierlistディメンションでディメンション化されるBOOLEAN変数です。各階層では、その階層内の各ディメンション値に対してTRUE値を持っています。例1-7「geog_inhiervarという名前のinhier変数の定義および移入」に、このタイプの値セットの定義および移入を示します。
例1-6 geog_inhierという名前のinhier値セットの定義および移入
"Define the valueset DEFINE geog_inhier VALUESET geog <geog_hierlist> "Using LIMIT commands, populate the valueset LIMIT geog_inhier (geog_hierlist 'Political_Geog') REMOVE 'East' 'West' 'All Regions' LIMIT geog_inhier (geog_hierlist 'Sales_Geog') REMOVE 'Canada' 'USA' 'All Country' "Display the values in the valueset REPORT W 20 geog_inhier GEOG_HIERLIST GEOG_INHIER -------------- -------------------- Political_Geog Boston Springfield Hartford Mansfield Montreal Walla Walla Portland Oakland San Diego MA CT WA CA Quebec USA Canada All Country Sales_Geog Boston Springfield Hartford Mansfield Montreal Walla Walla Portland Oakland San Diego MA CT WA CA Quebec East West All Regions
例1-7 geog_inhiervarという名前のinhier変数の定義および移入
DEFINE geog_inhiervar VARIABLE BOOLEAN <geog geog_hierlist> "Using LIMIT commands and assignment statements, populate " the variable LIMIT geog_hierlist TO ALL LIMIT geog_hierlist TO 'Political_Geog' LIMIT geog TO 'East' 'West' 'All Regions' geog_inhiervar = FALSE LIMIT geog COMPLEMENT geog_inhiervar = TRUE LIMIT geog_hierlist TO ALL LIMIT geog_hierlist TO 'Sales_Geog' LIMIT geog TO ALL LIMIT geog TO 'Canada' 'USA' 'All Country' geog_inhiervar = FALSE LIMIT geog COMPLEMENT geog_inhiervar = TRUE LIMIT geog TO ALL LIMIT geog_hierlist TO ALL "Display the values of the variable REPORT DOWN geog geog_inhiervar ---GEOG_INHIERVAR---- ----GEOG_HIERLIST---- Political_ GEOG Geog Sales_Geog -------------- ---------- ---------- Boston yes yes Springfield yes yes Hartford yes yes Mansfield yes yes Montreal yes yes Walla Walla yes yes Portland yes yes Oakland yes yes San Diego yes yes MA yes yes CT yes yes WA yes yes CA yes yes Quebec yes yes East no yes West no yes All Regions no yes USA yes no Canada yes no All Country yes no
levelrelリレーションは、階層ディメンションの各メンバーのレベルを記録する、levellistディメンションとhierlistディメンション間のリレーションです。
例1-8「geog_levelrelという名前のlevelrelリレーションの定義および移入」に、このタイプのリレーションの定義および移入を示します。
例1-8 geog_levelrelという名前のlevelrelリレーションの定義および移入
"Define the relation DEFINE geog_levelrel RELATION geog_levellist <geog geog_hierlist> LD Level of each dimension member for geog "Populate the relation "This example uses assignment statements with QDRs to populate geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Boston') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Hartford') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Springfield') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Mansfield') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Montreal') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Walla Walla') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Portland') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Oakland') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'San Diego') = 'City' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'CT') = 'State-Prov' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'MA') = 'State-Prov' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'WA') = 'State-Prov' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'CA') = 'State-Prov' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'Quebec') = 'State-Prov' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'East') = 'Region' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'West') = 'Region' geog_levelrel (geog_hierlist 'Sales_Geog' geog 'All Regions') = 'All Regions' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Boston') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Hartford') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Springfield') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Mansfield') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Montreal') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Walla Walla') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Portland') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Oakland') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'San Diego') = 'City' geog_levelrel (geog_hierlist 'Political_Geog' geog 'CT') = 'State-Prov' geog_levelrel (geog_hierlist 'Political_Geog' geog 'MA') = 'State-Prov' geog_levelrel (geog_hierlist 'Political_Geog' geog 'WA') = 'State-Prov' geog_levelrel (geog_hierlist 'Political_Geog' geog 'CA') = 'State-Prov' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Quebec') = 'State-Prov' geog_levelrel (geog_hierlist 'Political_Geog' geog 'USA') = 'Country' geog_levelrel (geog_hierlist 'Political_Geog' geog 'Canada') = 'Country' geog_levelrel (geog_hierlist 'Political_Geog' geog 'All Country') = 'All Country' "Display the values REPORT DOWN geog W 20 geog_levelrel --------------GEOG_LEVELREL-------------- --------------GEOG_HIERLIST-------------- GEOG Political_Geog Sales_Geog -------------- -------------------- -------------------- Boston City City Springfield City City Hartford City City Mansfield City City Montreal City City Walla Walla City City Portland City City Oakland City City San Diego City City MA State-Prov State-Prov CT State-Prov State-Prov WA State-Prov State-Prov CA State-Prov State-Prov Quebec State-Prov State-Prov East NA Region West NA Region All Regions NA All Regions USA Country NA Canada Country NA All Country All Country NA
familyrelリレーションは、階層ディメンション、levellistディメンションおよびhierlistディメンション間のリレーションです。このリレーションでは、階層の各ディメンション・メンバーの完全な親子関係が表示されます。
例1-9「geog_familyrelという名前のfamilyrelリレーションの定義および移入」に、このタイプのリレーションの定義および移入を示します。
例1-9 geog_familyrelという名前のfamilyrelリレーションの定義および移入
"Define the relation DEFINE geog_familyrel RELATION geog <geog geog_levellist geog_hierlist> LD FEATURES Family/Ancestry structure for the geog dimension "Populate the relation using the HIERHEIGHT command HIERHEIGHT geog_parentrel INTO geog_familyrel USING geog_levelrel "Display the values of the familyrel relation "First the values for the Political_Geog hierarchy are displayed "Then the values for the Sales_Geog hierarchy REPORT DOWN geog W 12 geog_familyrel GEOG_HIERLIST: Political_Geog -------------------------------GEOG_FAMILYREL-------------------------------- -------------------------------GEOG_LEVELLIST-------------------------------- GEOG All Country Country All Regions Region State-Prov City -------------- ------------ ------------ ------------ ------------ ------------ ------------ Boston All Country USA NA NA MA Boston Springfield All Country USA NA NA MA Springfield Hartford All Country USA NA NA CT Hartford Mansfield All Country USA NA NA CT Mansfield Montreal All Country Canada NA NA Quebec Montreal Walla Walla All Country USA NA NA WA Walla Walla Portland All Country USA NA NA WA Portland Oakland All Country USA NA NA CA Oakland San Diego All Country USA NA NA CA San Diego MA All Country USA NA NA MA NA CT All Country USA NA NA CT NA WA All Country USA NA NA WA NA CA All Country USA NA NA CA NA Quebec All Canada NA NA Quebec NA Countries East NA NA NA NA NA NA West NA NA NA NA NA NA All Regions NA NA NA NA NA NA USA All Country USA NA NA NA NA Canada All Country Canada NA NA NA NA All Country All Country NA NA NA NA NA GEOG_HIERLIST: Sales_Geog -------------------------------GEOG_FAMILYREL-------------------------------- -------------------------------GEOG_LEVELLIST-------------------------------- GEOG All Country Country All Regions Region State-Prov City -------------- ------------ ------------ ------------ ------------ ------------ ------------ Boston NA NA All Regions East MA Boston Springfield NA NA All Regions East MA Springfield Hartford NA NA All Regions East CT Hartford Mansfield NA NA All Regions East CT Mansfield Montreal NA NA All Regions East Quebec Montreal Walla Walla NA NA All Regions West WA Walla Walla Portland NA NA All Regions West WA Portland Oakland NA NA All Regions West CA Oakland San Diego NA NA All Regions West CA San Diego MA NA NA All Regions East MA NA CT NA NA All Regions East CT NA WA NA NA All Regions West WA NA CA NA NA All Regions West CA NA Quebec NA NA All Regions East Quebec NA East NA NA All Regions East NA NA West NA NA All Regions West NA NA All Regions NA NA All Regions NA NA NA USA NA NA NA NA NA NA Canada NA NA NA NA NA NA All Country NA NA NA NA NA NA
gidrelリレーションは、NUMBERディメンション、階層ディメンションおよびhierlistディメンション間のリレーションで、階層ディメンションの各階層における各ディメンション・メンバーのグルーピングIDが含まれます。各ディメンション・メンバーの階層内の深さを識別する$GID_DEPTHプロパティも保持します。
例1-10「geog_gidrelという名前のgidrelリレーションの定義および移入」に、このタイプのリレーションの定義および移入を示します。
例1-10 geog_gidrelという名前のgidrelリレーションの定義および移入
"Create a dimension that has values that are numbers DEFINE gid_dimension DIMENSION NUMBER (38,0)"Add values to that dimension "This example uses MAINTAIN ADD to add a few numbers MAINTAIN gid_dimension ADD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 "Define the gidrel relation DEFINE geog_gidrel RELATION gid_dimension <geog geog_hierlist> "Display the complete definition of the geog_gidrel relation "Note that it has no properties DEFINE GEOG_GIDREL RELATION GID_DIMENSION <GEOG GEOG_HIERLIST> "Populate the gidrel relation using the GROUPINGID command GROUPINGID geog_parentrel INTO geog_gidrel USING geog_levelrel INHIERARCHY geog_inhier "Display the values of the geog_gidrel relation REPORT down geog w 20 geog_gidrel ---------------GEOG_GIDREL--------------- --------------GEOG_HIERLIST-------------- GEOG Political_Geog Sales_Geog -------------- -------------------- -------------------- Boston 0 0 Springfield 0 0 Hartford 0 0 Mansfield 0 0 Montreal 0 0 Walla Walla 0 0 Portland 0 0 Oakland 0 0 San Diego 0 0 MA 1 1 CT 1 1 WA 1 1 CA 1 1 Quebec 1 1 East NA 3 West NA 3 All Regions NA 7 USA 3 NA Canada 3 NA All Country 7 NA "Display the complete definition of the geog_gidrel relation "Note that it now has a $GID_DEPTH property DEFINE GEOG_GIDREL RELATION GID_DIMENSION <GEOG GEOG_HIERLIST> PROPERTY '$GID_DEPTH' 4
OLAP DMLは多次元言語です。したがって、OLAP DMLでは一度の操作が値セット全体に適用されます。これは、概念的には、これらの操作が変数内のすべてのセルの値に適用されると考えられ、一方、物理的には、これらの操作が変数である配列内のすべての要素に適用されると考えられます。したがって、OLAP DMLの代入文(SETまたは=)を使用する場合は、変数のすべての要素に値を代入するための明示的なループをコーディングする必要はありません。かわりに、1つ以上のディメンションを持つオブジェクトに対して文を発行する場合、文はオブジェクトの各ディメンションに対してステータスの値をループ処理し、要求された演算を実行します。
たとえば、3つの値Prod01
、Prod02
およびProd03
を持つprodid
という名前のディメンションがあり、prodidによってディメンション化されるquantity
という名前の変数があるとします。次のコードの抜粋が示すように、Prod01
、Prod02
およびProd03
がステータス内のすべての値である場合、値3
をquantityに代入すると、値3
がquantity内のすべての要素に代入されます。
quantity = 3 REPORT quantity PRODID QUANTITY -------------- ---------- PROD01 3.00 PROD02 3.00 PROD03 3.00
他のOLAP DML文(REPORT、ROWおよびFORなど)も、実行時に、ディメンション化されたオブジェクトの要素のうち、ステータスにあるすべての要素をループ処理します。
定義された各ディメンションに対して、Oracle OLAPでステータス・リストというリストを使用して、ユーザーがアクセスできるディメンション値を追跡します。
Oracle OLAPではデフォルトのステータス・リストと現行のステータス・リストの2種類を使用します。アナリティック・ワークスペース内のディメンションにおける現行のステータス・リストの値によって、常時、OLAP DMLで使用できるデータ・セットが決定されます。
ディメンションのデフォルトのステータス・リストとは、アナリティック・ワークスペースの最初のアタッチ時に、値が格納されている順序で読取り権限を持つディメンションのすべての値のリストです。次の方法でディメンションのデフォルトのステータス・リストを変更できます。
MAINTAINコマンドを使用するか、他の方法(たとえば、SQL FETCH文を使用)でディメンション値を追加して、ディメンションの値の追加、削除、移動、マージおよび名前の変更ができます。
PERMITまたはPERMITRESET文を使用して、ディメンションに関連付けられた値の読取り権限を変更できます。
ディメンションの現行のステータス・リストとは、そのディメンションで現在アクセス可能な値を順序付けしたリストです。ディメンションの現行のステータス・リストに存在する値は、「ステータスにある」と言われます。アナリティック・ワークスペースの最初のアタッチ時は、各ディメンションのデフォルトおよび現行のステータス・リストは同じになります。
ディメンションの現行のステータス・リストによって、アナリティック・ワークスペース内のデータのアクセス可能性が決定されます。
ディメンションの場合、現行のステータス・リストにあるディメンション値のみが表示され、OLAP DML式でアクセスできます。
変数のようなディメンション化されたオブジェクトの場合、現行のステータス・リストにあるディメンション値によって索引付けされるデータ値のみが表示され、OLAP DML式でアクセスできます。ディメンション化されたオブジェクトのループ処理が実行されるとき、現行のステータス・リスト内のディメンション値の順序により、アクセスされるオブジェクトの値の順序が決定されます。
ディメンションとその任意のディメンション・サロゲートは、同じステータスを共有します。ディメンション・サロゲートのステータスの設定により、そのディメンションのステータスが設定され、ディメンションのステータスの設定により、そのディメンションに対するすべてのディメンション・サロゲートのステータスが設定されます。このマニュアルを通して、ディメンションに関するリファレンスの内容は、特に記載がないかぎりはディメンション・サロゲートにも同様に適用されます。また、コンポジットはディメンションではないため、独自のステータスがありません。ステータスにあるコンポジットの値は、コンポジットのベース・ディメンションのステータスによって決定されます。
注意: ディメンション値がステータスにあるかどうかは、特定のセッション中にOLAP DMLで値を参照できるかどうかにのみ影響します。アナリティック・ワークスペースに格納されている値に永続的に影響することはありません。 |
ディメンションの現行のステータス・リストがアナリティック・ワークスペース内のデータのアクセス可能性を決定するため、アナリティック・ワークスペース内のデータのサブセットを処理するには、1つ以上のディメンションの現行のステータス・リストを変更する必要があります。
LIMITコマンドを使用して、ディメンションの現行のステータス・リスト内で値および値の順序を変更します。LIMITコマンドは、非常に複雑なOLAP DMLコマンドで、このコマンドを使用して、リレーションを使用して明示的または暗黙的に値を指定することによって、現行のステータス・リスト内の値を指定できます。最も単純な例として、例10-20「LIMITによる変数の部分的な移入」に、LIMITコマンドを使用してディメンションの現行のステータス・リストを変更する方法を示しますが、この方法でデータのサブセットを操作できます。
ディメンションの現行のステータスを保存するには、いくつかの方法があります。ただし方法ごとに、保存の対象となるステータスは異なります。
任意のセッション: 任意のセッションで使用するために現行のステータスを保存する場合は、そのステータスを持つ名前付き値セットを作成します。値セットを定義するには、DEFINE VALUESETコマンドを使用します。値セットに値を割り当てるには、LIMITコマンドを使用します。
現行のセッション: 現行のセッションで使用するために現行のステータスの保存、アクセスまたは更新を行う場合は、名前付きコンテキストを使用します。コンテキストを定義するには、CONTEXTコマンドを使用します。
現行のプログラム: 現行のプログラムで使用するために現行のステータスを保存する場合は、PUSHLEVELコマンドおよびPUSHコマンドを使用します。POPLEVELコマンドおよびPOPコマンドを使用すると、現行のステータス値をリストアできます。
場合によっては、ディメンションの現行のステータス・リストを実際には変更することなく、データのサブセットに対して個々のOLAP DML文またはOLAP DML式を実行する必要があります。このため、ディメンションの名前を指定するかわりに定義済の値セット・オブジェクトを指定できるOLAP DML文が用意されています。また次のいずれかを使用すると、ディメンションの現行のステータス・リストを変更することなく、データのサブセットを指定できます。
CHGDIMSファンクション。式の評価時に、式のディメンション性やディメンション・ステータスを変更します。
LIMITファンクション。指定したLIMITコマンドや指定したディメンション・ステータス・スタックの結果として得られたディメンションまたはディメンション・サロゲートの値を、式の評価時に返します。
修飾データ参照(QDR)。現行のステータスを変更せずにデータ・オブジェクトの単一の値を指定する場合に、式の1つ以上のディメンションを単一の値に制限できます。