この項では、OLAP DMLモデルの作成および実行について説明します。項目は次のとおりです。
OLAP DMLモデルは、変数またはディメンション値に結果を割当て可能な、相互に関連する一連の方程式です。たとえば、財務モデルでは、gross.margin
またはnet.income
などの特定の明細項目に値を割り当てることができます。
gross.margin = revenue - cogs
代入文がデータをディメンション値に割り当てるか、またはその計算でディメンション値を参照する場合、ディメンションベースの方程式と呼ばれます。ディメンションベースの方程式は、ディメンション自体は参照せず、ディメンションの値のみを参照します。そのため、モデルにディメンションベースの方程式が含まれている場合、モデルの先頭でDIMENSION
文を使用し、それらの各ディメンションの名前を指定する必要があります。
モデルにディメンションベースの方程式が含まれている場合、モデルを実行する際にソリューション変数の名前を指定する必要があります。ソリューション変数は、データのソースであるとともにモデルの方程式の代入ターゲットでもあります。この変数により、ディメンションベースの方程式で使用される入力データが保持され、計算された結果はソリューション変数の指定された値に格納されます。たとえば、line
ディメンションに基づく財務モデルを実行する場合、ソリューション変数としてactual
を指定できます。
ディメンションベースの方程式により、財務モデリングに柔軟性が提供されます。モデルを解決するまでモデリング変数を指定する必要がないため、actual
変数、budget
変数、またはline
によってディメンション化された任意の変数で同じモデルを実行できます。
モデルは非常に複雑になる場合があります。次のことができます。
1つのモデルを別のモデルに含めます(「モデルのネスト」を参照)。
異なる時間間隔からのデータを使用します(「過去および将来の時間間隔からのデータの使用」を参照)。
連立方程式を解決します(「連立方程式の解決」を参照)。
異なるシナリオのモデルを作成します(「複数のシナリオのモデリング」を参照)。
OLAP DMLモデルを作成するには、次の手順を実行します。
DEFINE MODELコマンドを発行して、プログラム・オブジェクトを定義します。
モデルに仕様を追加するMODELコマンドを発行して、実行する処理を指定します。
モデルをコンパイルします(「モデルのコンパイル」を参照)。
(オプション)必要な場合は、モデル・オプションの設定を変更します(「モデル・オプション」のリストを参照)。
モデルを実行します(「モデルの実行」を参照)。
モデルをデバッグします(「モデルのデバッグ」を参照)。
モデルをアナリティック・ワークスペースの中で永続化する場合は、UPDATEコマンドおよびCOMMITコマンドを順に実行して、モデルを保存します。
モデルの作成の例は、例10-58「モデルの作成」を参照してください。
MODELコマンド内でINCLUDE文を使用して、1つのモデルを別のモデルに含めることができます。INCLUDE文を含むMODELコマンドは、親モデルと呼ばれます。含められているモデルは、ベース・モデルと呼ばれます。INCLUDE文をベース・モデルで使用することにより、モデルをネストできます。たとえば、モデルmyModel1
がモデルmyModel2
を含み、モデルmyModel2
がモデルmyModel3
を含むことが可能です。ネストしたモデルは階層形式になります。この例では、myModel1
が一番上の階層になり、myModel3
がルートになります。
モデルにINCLUDE文が含まれる場合、DIMENSION文を含めることはできません。親モデルは、含まれる階層のルート・モデルのDIMENSION文からそのディメンションを継承します(存在する場合)。前述の例では、モデルmyModel1
およびmyModel2
は、どちらもモデルmyModel3
のDIMENSION文からそのディメンションを継承します。
INCLUDE文により、モジュール・モデルの作成が可能になります。特定の方程式が複数のモデルで共通している場合、それらの方程式を独立したモデルに配置して、必要に応じてそのモデルの他のモデルに含めることができます。
さらに、INCLUDE文によりwhat-if分析が容易になります。実験的なモデルでは、ベース・モデルから方程式を流用し、それを選択的に新しい方程式に置き換えることが可能です。what-if分析をサポートするには、モデルで方程式を使用して以前の方程式をマスクします。以前の方程式は、同じモデルまたはそれに含まれているモデルにあります。マスクされた方程式は実行されず、モデルのMODEL.COMPRPTレポートにも表示されません。
ディメンション値にデータを割り当てる代入文がモデルに含まれている場合、ディメンションは一時的にその値に制限され、計算を実行してディメンションの初期ステータスをリストアします。
たとえば、モデルには次の文が含まれる場合があります。
DIMENSION line gross.margin = revenue - cogs
モデルを実行する際にソリューション変数としてactual
を指定すると、次のコードが構成され、実行されます。
PUSH line LIMIT line TO gross.margin actual = actual(line revenue) - actual(line cogs) POP line
この自動的な構成により、単純なモデル方程式で複雑な計算を実行できます。たとえば、明細項目データは、line
によってディメンション化されたactual
変数に格納されます。ただし、明細項目の詳細データは、detail.line
という名前のディメンションを持つdetail.data
という変数に格納される場合があります。
各詳細項目に関連する明細項目を指定するline
とdetail.line
間のリレーションが、アナリティック・ワークスペースに含まれる場合、次のようなモデル方程式を記述できます。
revenue = total(detail.data line) expenses = total(detail.data line)
detail.line
とline
間のリレーションは、詳細データを適切な明細項目に集計するために自動的に使用されます。モデルの実行時に構成されるコードにより、適切な合計が確実にline
ディメンションの各値に割り当てられます。たとえば、revenue
項目の方程式が計算される際、line
は一時的にrevenue
に制限され、TOTAL
ファンクションはline
のrevenue
値に対する詳細項目の合計を返します。
いくつかのOLAP DMLファンクションにより、過去または将来の時間間隔のデータを使用することが容易になります。たとえば、LAG
ファンクションは指定した過去の時間間隔のデータを返し、LEAD
ファンクションは指定した将来の時間間隔のデータを返します。
その計算で過去または将来のデータを使用するモデルを実行する場合、ソリューション変数に必要な過去または将来のデータが含まれていることを確認する必要があります。たとえば、モデルには、先月のrevenue
明細項目に基づいて今月のrevenue
明細項目の推定値を求める代入文が含まれていることがあります。
DIMENSION line month ... revenue = LAG(revenue, 1, month) * 1.05
モデルを実行するときにmonth
ディメンションがApr2004
からJun2004
に制限されている場合、ソリューション変数にMar96
のrevenue
データが含まれていることを確認する必要があります。
モデルにLEAD
ファンクションが含まれている場合、ソリューション変数には必要な将来のデータが含まれている必要があります。たとえば、2004年4月から6月までのデータを計算するときに、モデルが1か月先からデータを取得する場合、モデルの実行時にはソリューション変数に2004年7月のデータが含まれている必要があります。
Oracle OLAPは、モデルの方程式を評価する際にNASKIP2オプションに従います。NASKIP2は、+
(加算)および-
(減算)演算が実行される際のNA
値の処理方法を制御します。ソリューション変数にNA
値が含まれている場合、NASKIP2の設定は重要です。
計算の結果は、ソリューション変数に入力として使用されるNA
値が含まれている場合のみではなく、連立方程式のターゲットがNA
の場合もNA
になる可能性があります。ソリューション変数の値は、連立ブロックでの最初の反復におけるターゲットの初期値として使用されます。そのため、ソリューション変数にターゲットの初期値としてNA
が含まれる場合、最初の反復の結果としてNA
が生成され、そのNA
の結果が続いて起こる反復の間、保持されることがあります。
結果がNA
になるのを回避するには、ソリューション変数にNA
値が含まれていないことを確認するか、NASKIP2をYES
に設定してからモデルを実行します。
連立方程式を解くには、反復解法を使用します。各反復では、方程式ごとに値が計算され、新しい値が以前の反復からの値と比較されます。比較が指定された許容範囲内になると、方程式は収束したと判断されます。比較が指定された限界を超える場合、方程式は発散したと判断されます。
ブロック内のすべての方程式が収束する場合、そのブロックは解決したと判断されます。方程式が発散した場合、または指定された反復の回数で収束しなかった場合、ブロック(およびモデル)の解決は失敗し、エラーが発生します。
連立方程式の解を制御するには、OLAP DMLオプションを使用します(「モデル・オプション」を参照)。たとえば、これらのオプションを使用して、使用する解決の方法、収束および発散のテストで使用する要素、実行する反復の最大回数、および代入文が発散した場合や収束に失敗した場合に行う処理を指定できます。
月および部門について単一の数値セットを計算するかわりに、それぞれ異なる条件に基づいた複数の数値セットを計算する場合があります。
異なる入力値セットに基づいて予測または予算額を計算および格納する、シナリオ・モデルを定義できます。たとえば、楽観値、悲観値および最良予測値に基づいて利益を計算できます。
シナリオ・モデルを作成する手順は、次のとおりです。
シナリオ・ディメンションを定義します。
シナリオ・ディメンションによってディメンション化されるソリューション変数を定義します。
ソリューション変数に入力データを入力します。
入力データに基づいて結果を計算するモデルを作成します。
シナリオ・モデルの作成の例は、例10-59「シナリオ・モデルの作成」を参照してください。
モデルの文を記述した後、COMPILEコマンドを使用してモデルをコンパイルします。コンパイル中、COMPILEはフォーマット・エラーをチェックするため、COMPILEを使用してコードをデバッグしてからモデルを実行できます。モデルを実行する前にCOMPILEを使用しない場合でも、モデルは自動的にコンパイルされてから解決されます。ISCOMPILEDを設定してOBJファンクションを使用することで、モデルがコンパイルされているかどうかをテストできます。
SHOW OBJ(ISCOMPILED 'myModel')
COMPILE文の使用またはモデルの実行によりモデルをコンパイルすると、モデル・コンパイラではモデル特有の問題のチェックが行われます。次のいずれかの場合、エラー・メッセージが表示されます。
モデルが、DIMENSION文、INCLUDE文および代入(SET)文以外の文を含んでいる。
モデルがDIMENSION文とINCLUDE文の両方を含んでいる。
モデル内の最初の方程式の後にDIMENSION文またはINCLUDE文が置かれている。
単一のディメンションベースの方程式内のディメンション値が、2つ以上の異なるディメンションを参照している。
方程式が参照している名前を、コンパイラが、アタッチされたアナリティック・ワークスペースのオブジェクトとして識別できない。このエラーが発生した場合、方程式でディメンションの値が参照されているにもかかわらず、DIMENSION文にそのディメンションが含まれていない可能性があります。さらに、別のモデルを含むモデルをコンパイルしている際、もう一方のモデルのコンパイルが失敗すると、DIMENSION文が見つからないとされる可能性があります。ルート・モデル(含まれるモデルの階層内で最も深くに位置するモデル)のコンパイルが失敗すると、親モデルはルート・モデルからのDIMENSIONコマンドをまったく継承できません。この場合、エラーの実際の発生箇所がルート・モデルであっても、コンパイラでは親モデルにおけるエラーとしてレポートすることがあります。詳細は、INCLUDEを参照してください。
モデル・コンパイラでは、方程式内の各名前を調査して、名前が参照するアナリティック・ワークスペース・オブジェクトを判断します。計算や結果の代入など、モデルの方程式でも変数およびディメンション値をまったく同じ方法で使用できるため、名前は、変数の名前であることもあれば、DIMENSION文にリストされているディメンションの値であることもあります。
各名前参照を解決する際、コンパイラは、明示的または継承されたDIMENSION文にリストされているすべてのディメンションをリスト順で検索し、リストされたディメンションのディメンション値に名前が一致するかどうかを確認します。検索は、一致する値が検出された時点で終了します。
したがって、リストされているディメンションのうち2つ以上のディメンションが同じ名前のディメンション値を持っている場合、コンパイラでは、その値を、DIMENSION文内で最も早く名前が付けられているディメンションに属するものとみなします。
同様に、モデル・コンパイラは、リテラルなINTEGER
値が属するディメンションを誤って解釈することがあります。たとえば、モデル・コンパイラでは、リテラル値'200'
を、200の位置の値またはリテラルなディメンション値200のいずれかを含む最初のディメンションに属するものとみなします。
識別の誤りを回避するため、必要なディメンションを指定して値をカッコおよび一重引用符で囲むことができます。「あいまいなディメンション値の書式設定」を参照してください。
コンパイラでは、ある名前がDIMENSION文で指定されているどのディメンションの値でもないことを検出すると、その名前をアナリティック・ワークスペース変数の名前であるとみなします。アタッチされているどのアナリティック・ワークスペースにもその名前の変数が定義されていない場合、エラーが発生します。
モデル・コンパイラは、文がループ処理するディメンションを決定します。方程式によって結果が変数へ代入されると、コンパイラでは変数のディメンション(またはコンポジットのベース)をループ処理するコードを作成します。
ディメンションベースの方程式を含むモデルを実行する場合、指定するソリューション変数を、DIMENSION文にリストされているディメンションよりも多いディメンションによってディメンション化できます。
ユーザー定義のプログラムに対する引数としてモデル・ディメンションの値を指定する場合、コンパイラは、この引数によって持ち込まれる依存性を認識します。
たとえば、ある方程式で、一定の条件をテストした後でその条件に基づくTaxes
明細項目を重み付けして返すweight
というプログラムを使用するとします。この例の場合、モデル方程式は次のようなものになります。
Net.Income = Opr.Income - weight(Taxes)
コンパイラでは、Net.Income
がOpr.Income
およびTaxes
に依存することを正しく認識します。ただし、weight
プログラムがプログラム引数として指定されていないディメンション値または変数を参照する場合には、コンパイラは、それらの計算によって持ち込まれる隠れた依存性は認識しません。
モデル・コンパイラでは、モデル内の方程式間の依存性を分析します。1つの方程式内で等号の右側にある式が別の方程式の代入ターゲットを参照する場合に、依存関係が存在します。ある方程式が、方程式間の依存性の結果として、それ自体に間接的に依存している場合は、それらの方程式間には循環依存が存在します。
モデル・コンパイラでは、モデルを複数のブロックに編成し、依存性を反映するようにブロック内の方程式およびブロック自体を順序付けます。モデルが実行されると、モデルは一度に1ブロックずつ解決されます。モデル・コンパイラでは、次に示す3つのタイプのソリューション・ブロックを生成できます。
単純ソリューション・ブロック: 単純ブロックには、互いに独立している方程式および相互に非循環的な依存のある方程式が含まれます。
たとえば、ブロックに値A
、B
およびC
について解く方程式が含まれる場合、非循環的な依存はA>B>C
のように表されます。矢印は、A
がB
に依存し、B
がC
に依存していることを示しています。
ステップ・ソリューション・ブロック: ステップ・ブロックには、一方向のディメンションの依存である循環依存を持つ方程式が含まれます。ディメンションの依存関係は、現在のディメンション値のデータが以前または以後のディメンション値からのデータに依存する場合に発生します。ディメンションの依存関係は、データが以前の値のみまたは以後の値のみに依存し、その両方には依存しない場合に一方向となります。一方向のディメンション依存の詳細は、「一方向のディメンション依存の保証」を参照してください。
ディメンションの依存関係は、通常、時間ディメンションで発生します。たとえば、普通、明細項目値は、以前の時間間隔の同じ明細項目または異なる明細項目の値に依存します。ブロックに値A
およびB
について解く方程式が含まれる場合、一方向のディメンション依存はA>B>LAG(A)
のように表されます。矢印は、A
がB
に依存し、B
が前の時間間隔のA
の値に依存していることを示しています。
連立ソリューション・ブロック: 連立ブロックには、一方向のディメンション依存以外の循環依存がある方程式が含まれます。循環依存は、ディメンション修飾子がまったく関与しない場合もあれば、双方向のディメンション依存である場合もあります。双方向のディメンション依存の詳細は、「モデル・コンパイラで双方向のディメンション依存が想定される構造」を参照してください。
モデルに連立方程式のブロックが含まれる場合、COMPILEにより警告メッセージが表示されます。この場合、モデルを実行する前に、連立ソリューションを制御するオプションの設定を確認することもできます。これらのオプションは、「モデル・オプション」にリストされています。
ディメンション修飾子に依存しない循環依存の例は、A>B>C>A
として表すことができます。矢印は、A
がB
に依存し、B
がC
に依存し、C
がA
に依存していることを示しています。
双方向のディメンション依存である循環依存の例は、A>LEAD(B)>LAG(A)
として表すことができます。矢印は、A
が将来の期間におけるB
の値に依存し、一方、B
は以前の期間におけるA
の値に依存していることを示しています。
連立方程式の順序 方程式の連立ブロックの解決は、方程式の順序が影響します。通常は、モデル・コンパイラが決定する最適な方程式の順序をそのまま受け入れます。ただし、場合によっては、方程式を特定の順序に配置することによって収束を促進できることもあります。
各ブロック内の連立方程式を、ユーザーが配置した順序のままコンパイラによって変更されないようにするには、モデルをコンパイルする前にMODINPUTORDERオプションをYES
に設定します(MODINPUTORDERは、単純ブロックまたはステップ・ブロック内の方程式の順序には影響しません)。
モデル・コンパイラで双方向のディメンション依存が想定される構造
依存が次のいずれかの構造を介して持ち込まれる場合、モデル・コンパイラでは、双方向のディメンション依存が存在するものとみなします。
AVERAGE、TOTAL、ANYまたはCOUNTなどの集計ファンクションを使用する場合、双方向のディメンション依存が発生する可能性があります。
Opr.Income = Gross.Margin - (TOTAL(Marketing + Selling + R.D)) Marketing = LAG(Opr.Income, 1, month)
CUMSUM、LAGまたはLEADなどのtime-period引数を必要とする時系列のファンクションを使用する場合(「一方向のディメンション依存の保証」に記述されている特定のファンクションおよび条件を除く)、双方向のディメンション依存が発生する可能性があります。
双方向のディメンション依存は、DEPRSLまたはNPVなどの財務ファンクションを使用している場合にも、発生する可能性があります。
融資または減価償却のファンクションを介して持ち込まれた時間ディメンションでの循環依存は、予期しない結果に繋がる場合があります。融資のファンクションには、FINTSCHED、FPMTSCHED、VINTSCHEDおよびVPMTSCHEDがあります。減価償却のファンクションには、DEPRDECL、DEPRDECLSW、DEPRSLおよびDEPRSOYDがあります。
一方向のディメンション依存の保証
方程式間の依存が次のいずれかの構造を介して持ち込まれる場合、一方向のディメンション依存が発生します。
LAGまたはLEADファンクションを使用し、時間間隔の番号に対する引数が明示的な数(値または定数)またはABSの結果として表されている場合、一方向のディメンション依存が発生します(そうでない場合、以前のディメンション値および将来のディメンション値の両方が関与する双方向の依存がある可能性があり、コンパイラによって、連立ソリューションが必要であるとみなされます)。次の文は、LAGの使用例です。
Opr.Income = Gross.Margin - (Marketing + Selling + R.D) Marketing = LAG(Opr.Income, 1, month)
一方向のディメンション依存は、MOVINGAVERAGE、MOVINGMAX、MOVINGMINまたはMOVINGTOTALファンクションを使用する場合で、start引数およびstop引数がゼロ以外の数であり、start引数およびstop引数が両方とも正の数か両方とも負の数である場合に発生します(そうでない場合は、双方向のディメンション依存とみなされます)。
Opr.Income = Gross.Margin - (Marketing + Selling + R.D) Marketing = MOVINGAVERAGE(Opr.Income, -4, -1, 1, month)
モデルのコンパイル後、次のツールを使用して、コンパイラによる解析の結果についての情報を取得できます。
MODEL.COMPRPTプログラムは、モデルの方程式がどのようにブロックにグループ化されたかを示すレポートを生成するプログラムです。このレポートでは、ディメンション間の依存があるステップ・ブロックおよび連立ブロックについて、依存に関与するディメンションがリストされます。
MODEL.DEPRTプログラムは、各モデル方程式が依存する変数およびディメンション値がリストされるレポートを生成するプログラムです。ディメンションに依存している場合、レポートにはディメンションの名前が示されます。
INFOファンクションでは、モデルの構造に関する情報の特定の項目を取得できます。
モデルを実行する前に、ソリューション変数で入力データが使用可能である必要があります。
連立方程式のブロックを含むモデルを実行する前に、連立ブロックの解決を制御する一部のOLAP DMLオプションの値を確認または変更できます。これらのオプションは、「モデル・オプション」に簡単な解説があります。
モデルにディメンションベースの方程式が含まれる場合、データのソースおよび方程式の結果の割当てターゲットの両方として機能する数値ソリューション変数を指定する必要があります。ソリューション変数は、通常モデル方程式の基となるすべてのディメンションによってディメンション化されますが、方程式の基にしないソリューション変数の他のディメンションによってもディメンション化されます。
モデルを実行すると、方程式の基にしないソリューション変数の各ディメンションの現行のステータス・リストにある値が自動的にループ処理されます。
モデル方程式が以前の時間間隔からのデータを基に計算を行っている場合、ソリューション変数にはそれらの以前の時間間隔のデータが含まれている必要があります。データが含まれていない場合、またはDAY、WEEK、MONTH、QUARTER、YEAR型のディメンションの最初の値がステータスにある場合、計算の結果はNA
となります。
モデルを実行または解決するには、次の構文を使用します。
model-name [solution-variable] [NOWARN]
ここで、
model-nameはモデルの名前です。
solution-variableは、データのソースとしてだけではなく、ディメンションベースの方程式を含むモデルでデータのターゲットととして機能する数値変数の名前です。通常、ソリューション変数は、モデル方程式の基になるすべてのディメンションによってディメンション化されます(明示的に指定するか、DIMENSIONコマンドに含めます)。solution-variable引数は、モデルにディメンションベースの方程式が含まれる場合に必要です。すべてのモデル方程式が変数にのみ基づく場合、ソリューション変数は必要ありません。そのため、この引数を指定するとエラーが発生します。ソリューション変数のディメンションの詳細は、「ソリューション変数のディメンション」を参照してください。
NOWARNは、モデルに連立方程式のブロックが含まれる際の警告が不要であることを指定するオプション引数です。
ディメンションベースの方程式を含むモデルでは、通常、ソリューション変数は、モデル方程式の基となるディメンションによってディメンション化されます。また、ソリューション変数がコンポジットによってディメンション化される場合、モデル方程式はコンポジットのベース・ディメンションに基づきます。モデル方程式が基とするディメンションは、明示的あるいは継承されたDIMENSION文にリストされます。
ソリューション変数の特別な状況
ソリューション変数のディメンションに関する特別な状況として、次のようなことが発生する場合があります。
ソリューション変数が、DIMENSIONコマンドでリストされていないディメンションを持つ可能性があります。Oracle OLAPは、それらのディメンションのステータスにある値を自動的にループ処理します。たとえば、モデルにline
およびmonth
ディメンションをリストするDIMENSION文が含まれている場合に、line
、month
およびdivision
によってディメンション化されるソリューション変数を指定するとします。Oracle OLAPは、モデルを実行する際にdivision
ディメンションを自動的にループ処理します。ソリューション変数は、DIMENSIONコマンドでリストされない1つ以上のベース・ディメンションを含むコンポジットによってディメンション化される場合もあります。「コンポジットによってディメンション化されるソリューション変数」を参照してください。
ソリューション変数が、DIMENSIONコマンドでリストされていないディメンションを持ち、それらのディメンションがステップ・ブロックまたは連立ブロックのディメンションの場合、エラーが発生します。
Oracle OLAPは、DIMENSIONコマンドでリストされるすべてのディメンションのステータスにある値をループ処理します。ソリューション変数がそれらのディメンションによってディメンション化されているかどうかは考慮されません。このため、ソリューション変数が、リストされたすべてのディメンションによってディメンション化されない場合、Oracle OLAPは不要な処理を行います。Oracle OLAPはモデルの解決を開始する前に、この状況を警告するメッセージを表示します。
DAY、WEEK、MONTH、QUARTERまたはYEAR型の不要なディメンションをDIMENSION文に含めると、モデル方程式で融資、減価償却および集計ファンクションを使用する場合に不適切な結果が返されます。これは、モデル・ディメンションの値を参照するモデル方程式のコンポーネントが、そのコンポーネントにモデルのすべてのディメンションが含まれているかのように動作するために発生します。
コンポジットによってディメンション化されるソリューション変数
ソリューション変数にディメンション・リストのコンポジットが含まれる場合、Oracle OLAPは可能な場合は常にコンポジットのスパース性を監視します。Oracle OLAPは、モデルを解決する際、コンポジットのループ処理をそのコンポジットに存在する値に制限します。さらに、ループ処理中はコンポジットのベース・ディメンションの現行のステータスを監視します。
ただし、モデルを適切に解決するため、Oracle OLAPはコンポジットの次のようなベース・ディメンションを通常のディメンションとして処理する必要があります。
DIMENSION文でリストされているベース・ディメンション
SETを使用して作成されるモデル方程式(たとえば、ベース・ディメンションによってディメンション化される変数にデータを代入する方程式など)に関係するベース・ディメンション
方程式のACROSS句で指定される別のコンポジットのベース・ディメンションでもあるベース・ディメンション(代入文およびACROSS句の使用の詳細は、SETを参照)
ソリューション変数のコンポジットのベース・ディメンションが、前述の3つのどれかに該当する場合、Oracle OLAPはそのディメンションを通常のディメンションとして処理し、現行のステータスにあるすべての値をループ処理します。
ソリューション変数のコンポジットに、前述の3つのどれにも該当しない他のベース・ディメンションが含まれる場合、Oracle OLAPはそれらのベース・ディメンションの一時コンポジットを作成します。一時コンポジットの値は、基となったコンポジットに存在していた値の組合せになります。Oracle OLAPは、モデルを解決する際に一時コンポジットをループ処理します。