プライマリ・コンテンツに移動
Oracle® OLAP DML Reference
12c Release 1 (12.1)
B71310-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 OLAP DMLの基礎概念

この章では、次の項目について説明します。

OLAP DMLの概略

OLAP DMLは、Oracle OLAPオブジェクトの定義およびOracle OLAPデータの操作を行うための基本言語です。

OLAP DML文は、主に次の2つのタイプに分けられます。

キューブ対応のOLAP DML文

OLAPキューブは、Oracle OLAPのファースト・クラス・オブジェクトであり、Oracleデータ・ディクショナリで定義されます。OLAP DML文の中には、キューブなどのOLAPのファースト・クラス・オブジェクトを処理対象とするものがあります。


関連項目:

OLAPキューブなどのOLAPの第1レベル・オブジェクトの詳細は、『Oracle OLAPユーザーズ・ガイド』を参照してください。

次のOLAP DMLプログラムは、事前定義されたOLAPのキューブとキューブ・ディメンションを処理します。


ADD_CUBE_MODEL
ADD_DIMENSION_MEMBER
ADD_MODEL_DIMENSION
CREATE_LOGICAL_MODEL
REMOVE_CUBE_MODEL
REMOVE_DIMENSION_MEMBER
REMOVE_MODEL_DIMENSION
SET_INCLUDED_MODEL
SET_PROPERTY
UPDATE_ATTRIBUTE_VALUE
UPDATE_DIMENSION_MEMBER

通常、これらのプログラムは、入力としてOLAPのキューブまたはキューブ・ディメンションのOracleデータ・ディクショナリ名をとります。これらのプログラムを実行すると、キューブまたはキューブ・ディメンションに対して必要な変更が行われるだけではなく、このようなキューブまたはキューブ・ディメンションの下位にあるすべてのアナリティック・ワークスペース・オブジェクトに対しても変更が行われます。

また、キューブに対応していないOLAP DML文でOBJORGファンクションを使用すると、OLAPのキューブまたはキューブ・ディメンションの下位にあるアナリティック・ワークスペース・オブジェクトを指定できます。

アナリティック・ワークスペース・オブジェクトを直接処理するOLAP DML文

これまで、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では、アナリティック・ワークスペースおよびアナリティック・ワークスペースに格納されるオブジェクトを定義できます。たとえば、次の操作を行うことができます。

OLAP DMLの構文の基本単位

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 DML文の実行方法

OLAP Worksheetを使用すると、OLAP DML文の実行が非常に容易になります。OLAP Worksheetは、Analytic Workspace Managerの一部として提供されます。Analytic Workspace Manager内からOLAP Worksheetを開くには、次の手順を実行します。

  1. Oracle Databaseインスタンスに接続します。

  2. スキーマを選択します。

  3. ツールを選択し、次に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コマンドを次の表に示します。

    タスク OLAP DMLコマンド 必要なSQL GRANT権限
    アナリティック・ワークスペースの作成 AW CREATE
    CREATE TABLE
    アナリティック・ワークスペースAS OFのアタッチ ASOFキーワード付きのAW ATTACH FLASHBACK TABLE

  • スキーマの所有者でない場合、アナリティック・ワークスペースの作成、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 アナリティック・ワークスペースに関する情報を表示する文

説明

AWファンクション


現在アタッチされているワークスペースに関する情報を返す。

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では、次のようなアナリティック・ワークスペースのデータ・オブジェクトの型を使用できます。

変数
単純なディメンション
連結ディメンション
コンポジット
パーティション・テンプレート
別名ディメンション
リレーション
値セットとサロゲート・オブジェクト

ヒント:

OBJORGファンクションを使用すると、キューブおよびキューブ・ディメンションの下位にあるアナリティック・ワークスペース・オブジェクトを指定できます。

変数

アナリティック・ワークスペースで最も重要なデータ・オブジェクトは変数です。変数はデータを格納するオブジェクトです。変数内のデータはすべて同じデータ型である必要があります。通常、変数には、ビジネスの特定の側面を定量化するデータ値を含めます。たとえば、ビジネスの取引に関して(ドル、個数、パーセントなどで評価される)複数のカテゴリがある場合、各カテゴリはそれぞれ独自の変数に格納されます。たとえば、ドル(sales変数)や個数(units変数)で売上データを記録できます。

OLAP DMLは多次元プログラミング言語であるため、変数は多次元であり、他のOLAP言語でメジャーと呼ばれるものに相当します。概念的には、2つのディメンションを持つ変数を表、3つのディメンションを持つ変数をキューブなどとみなすことができます。物理的には、変数は多次元配列として格納され、この配列の実際の構造は、変数をディメンション化するオブジェクトによって決定されます。

配列のスコープとパフォーマンスは一定ではありません。永続変数とは、変数の値と定義の両方がアナリティック・ワークスペースに格納される変数です。一時変数とは、現行のセッションでのみ値を保持する変数です。アナリティック・ワークスペースを更新およびコミットすると、一時変数の定義のみが保存されます。アナリティック・ワークスペースを終了すると、データ値は廃棄されます。また、変数はプログラム内で定義することもできます。

プログラム内ではスカラー変数も定義できますが、OLAP DMLを使用して定義する変数の大半は、ディメンション化された変数です。ディメンション化された変数は、複数の値を保持する配列です。変数の索引やディメンションを使用すると、変数を編成できます。ディメンションの値は、データ値を一意に識別するという点で、リレーショナル表のキーに似ています。たとえば、ディメンションtime、geographyおよびproductによってディメンション化されたsales変数が存在する場合、time、geographyおよびproductの値の各組合せによってsalesの値が識別されます。(変数の索引は、実際にはディメンションの値ではなく、ディメンションの値のINTEGER位置です。)

変数は、フラット・ディメンションまたは階層ディメンションのどちらかでディメンション化できます。フラット・ディメンションは、ディメンション内の値がすべて同じレベルである(別の値の子や親ではない)場合に存在します。階層ディメンションは、単一ディメンションの値が互いに1対多(親子)関係である場合に存在します。

階層ディメンションは、単一のディメンション内のこのような型のデータを編成および構造化する手法です。階層ディメンションを使用すると、データを含む変数をすべてのレベルにディメンション化できます。複数の階層を持つディメンションもあります。セルフ・リレーションを作成することでディメンション値の親子関係を指定します。階層ディメンションを使用して、単一の変数内に様々なレベルの集計データを含む変数を定義します。単一の変数内にこれらすべての値を格納すると、(特に変数が大きい場合に)データを表示しようとするユーザーに対する応答時間が短くなります。

通常、階層ディメンションの上位レベルに対応する変数のセルは、下位レベルのディメンション値に対応する変数のセルの値の合計を含みます。たとえば、期間を表す階層ディメンションで定義されているsales変数の場合、各四半期を表す変数のセルは四半期の月の総売上を表すことができます。

階層ディメンションで変数を定義した後、変数データを下位レベルの階層に追加して、上位レベルの階層の値を計算または集計できます。逆に、階層の上位レベルから下位レベルにデータを配布または割当てすることもできます。


参照:

DEFINE VARIABLE

変数をディメンション化できるオブジェクト

変数とリレーションのデータがどのように実際に構造化され格納されるかは、変数やリレーションをディメンション化するために使用するオブジェクトの型とそれらのオブジェクトが変数やリレーションの定義で表示される順序によって異なります。単純なディメンション、連結ディメンション、コンポジット、パーティション・テンプレートおよび別名ディメンションにより、変数をディメンション化できます。変数をディメンション化するために選択するオブジェクトによって、変数のデータの格納方法が決定されます。

単純なディメンション

単純なディメンションのメンバーは、すべて同じデータ型を持つデータ値です。変数が単純なディメンションでディメンション化されている場合、ディメンションの各メンバーに対する変数のセルは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でデータの集計を表示できます。


関連項目:

DEFINE RELATION

値セットとサロゲート・オブジェクト

OLAP DMLでは、変数の定義では使用せずに変数の問合せで使用する、次の特殊なデータ・オブジェクトが用意されています。

値セット・オブジェクト

値セットは、事前定義された1つ以上のディメンションのディメンション値のリストです。値セットを使用すると、複数のセッションにまたがってディメンション・ステータス・リストを保存できます。


参照:

DEFINE VALUESET

サロゲート

ディメンション・サロゲートは、事前定義されたディメンションの値の代替セットです。サロゲートで変数をディメンション化することはできませんが、モデル、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ディメンション

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リレーション

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ディメンション

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値セットは、階層ディメンションの各階層に含まれている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値セットは、各階層内の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リレーション

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リレーション

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リレーション

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では一度の操作が値セット全体に適用されます。これは、概念的には、これらの操作が変数内のすべてのセルの値に適用されると考えられ、一方、物理的には、これらの操作が変数である配列内のすべての要素に適用されると考えられます。したがって、OLAP DMLの代入文(SETまたは=)を使用する場合は、変数のすべての要素に値を代入するための明示的なループをコーディングする必要はありません。かわりに、1つ以上のディメンションを持つオブジェクトに対して文を発行する場合、文はオブジェクトの各ディメンションに対してステータスの値をループ処理し、要求された演算を実行します。

たとえば、3つの値Prod01Prod02およびProd03を持つprodidという名前のディメンションがあり、prodidによってディメンション化されるquantityという名前の変数があるとします。次のコードの抜粋が示すように、Prod01Prod02および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など)も、実行時に、ディメンション化されたオブジェクトの要素のうち、ステータスにあるすべての要素をループ処理します。

文のデフォルトのループ動作の変更

文は、デフォルトでは、オブジェクトのディメンションがオブジェクトの定義にリストされている順番に従って、ディメンション化されたオブジェクトの値をループ処理します。さらに、変数がコンポジットによってディメンション化されている場合、ほとんどのループ文は、変数がコンポジットによってディメンション化されているのではなく、コンポジットのベース・ディメンションによってディメンション化されているものとして変数をループ処理します。

OLAP DMLには、デフォルトのループ処理の動作を変更する、あるいはループ処理を明示的に要求する次のような方法があります。

  • ACROSS句: 一部のループ・コマンド(値の代入に使用する代入文など)には、デフォルト以外のループ処理の動作を指定できるACROSS句があります。ACROSS句の詳細は、SET(=)コマンドを参照してください。

  • ACROSSコマンド: OLAP DML文がループ文ではない場合、あるいはACROSS句を含まない場合、ACROSSコマンドの引数としてDML文をコーディングすることによりループ処理の動作を要求できます。

OLAP DML処理対象のデータ・セットの指定方法

定義された各ディメンションに対して、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つ以上のディメンションを単一の値に制限できます。

多次元階層データ・オブジェクトの移入

通常、まず変数のベース値をリレーショナル表またはフラット・ファイルから移入します。次に、OLAP DML計算オブジェクトを使用してこれらのベース値からその他の値を計算します。たとえば、集計オブジェクトを定義して、上位の階層にある値を集計することもできます。

また、代入文を使用して、変数、リレーションおよびディメンション・サロゲートに値を代入することも(SETおよびSET1を参照)、MAINTAIN文を使用してディメンションに値を追加することもできます。