通常、リレーショナル・データベースでは、第3正規形のデータの表にデータ値を格納します。このタイプの実装では、リレーショナル・データベース表のキー列の値は、単一レベルの一意のデータ値になります。たとえば、リレーショナル・データベースの1つのレベルに都市の名前を含む「City」という名前のキー列を持つ表が存在し、その次の上位レベルに州の名前を含む「state」という名前のキー列を持つ表が存在し、さらに同じようにその次の上位レベルに別の名前のキー列を持つ表が存在するという具合です。
アナリティック・ワークスペースでは、分析するデータを保持するオブジェクトは変数と呼ばれる配列です。変数内のキーは、変数のディメンションとして機能する他のオブジェクトに格納されます。OLAP分析のパフォーマンスを向上させるために、複数のレベルの値は階層ディメンションと呼ばれる単一のディメンション内に格納されます。たとえば、アナリティック・ワークスペースでは、都市と州の両方の名前を値として持つ「geog」という名前の階層ディメンションを持つことができます。
2つ以上のディメンションの値を関連付ける値を格納するオブジェクトは、リレーションと呼ばれます。このような階層ディメンションの異なるレベルの値に関する1対多関係は、アナリティック・ワークスペースに格納されます。たとえば、階層ディメンション「geog」の都市と州の値の関係は、通常、parentrelリレーションと呼ばれるアナリティック・ワークスペースのリレーションに格納されます。詳細は、「parentrelリレーション」を参照してください。
通常、追加のアナリティック・ワークスペース・オブジェクトには、階層ディメンションに関する追加情報を保持するように定義されます。一部の重要なOLAP DMLのコマンドとファンクション(LIMITコマンドなど)は、これらのオブジェクトの名前を文の構文内の1つの引数に指定して、アナリティック・ワークスペース内のこれらのオブジェクトの存在を推測します。
概要
最も重要なデータ・オブジェクトは変数です。変数はデータを格納するオブジェクトです。変数内のデータはすべて同じデータ型である必要があります。通常、変数には、ビジネスのある側面を定量化するデータ値を含めます。たとえば、ビジネスの取引に関して(ドル、個数、パーセントなどで評価される)複数のカテゴリがある場合、各カテゴリはそれぞれ独自の変数に格納されます。たとえば、ドル(sales変数)や個数(units変数)で売上データを記録できます。
OLAP DMLは多次元プログラミング言語であるため、変数は多次元であり、他のOLAP言語でメジャーと呼ばれるものに相当します。概念的には、2つのディメンションを持つ変数を表、3つのディメンションを持つ変数をキューブなどとみなすことができます。物理的には、変数は多次元配列として格納されます。この配列の実際の構造は、変数をディメンション化するオブジェクトによって決定されます。
配列のスコープとパフォーマンスは一定ではありません。永続変数とは、変数の値と定義の両方がアナリティック・ワークスペースに格納される変数です。一時変数とは、現行のセッションでのみ値を保持する変数です。アナリティック・ワークスペースを更新およびコミットすると、一時変数の定義のみが保存されます。アナリティック・ワークスペースを終了すると、データ値は廃棄されます。また、変数はプログラム内で定義することもできます。
スカラー変数も定義できますが(通常はプログラム内で)、OLAP DMLを使用して定義する変数の大半は、ディメンション化された変数です。ディメンション化された変数は、複数の値を保持する配列です。変数の索引やディメンションを使用すると、変数を編成できます。ディメンションの値は、データ値を一意に識別するという点でリレーショナル表のキーに似ています。たとえば、ディメンションtime、geographyおよびproductによってディメンション化されたsales変数が存在する場合、salesの値はtime、geographyおよびproductの値の各組合せによって識別されます。変数の索引は、実際にはディメンションの値ではありません。ディメンションの値の位置(INTEGER)です。
変数は、フラット・ディメンションまたは階層ディメンションのどちらかでディメンション化できます。フラット・ディメンションは、ディメンション内の値がすべて同じレベルである(別の値の子や親ではない)場合に存在します。階層ディメンションは、単一ディメンションの値が互いに1対多(親子)関係である場合に存在します。
階層ディメンションは、単一のディメンション内のこのような型のデータを編成および構造化する手法です。階層ディメンションを使用すると、データを含む変数をすべてのレベルにディメンション化できます。ディメンションは複数の階層を持つ場合があります。ディメンション値の親子関係は、セルフ・リレーションを作成することで指定します。階層ディメンションを使用すると、単一の変数内に様々なレベルの集計データを含む変数を定義できます。このタイプの格納では、(特に変数が大きい場合)データを表示しようとするユーザーに対する応答時間が短くなります。
通常、階層ディメンションの上位レベルに対応する変数のセルは、下位レベルのディメンション値に対応する変数のセルの値の合計を含みます。たとえば、期間を表す階層ディメンションで定義されているsales変数の場合、各四半期を表す変数のセルは四半期の月の総売上を表すことができます。
階層ディメンションで変数を定義した後、変数データを下位レベルの階層に追加して、上位レベルの階層の値を計算または集計できます。逆に、階層の上位レベルから下位レベルにデータを配布または割当てすることもできます。
変数とリレーション・データを実際に構造化および格納する方法は、変数やリレーションのディメンション化に使用するオブジェクトの型、およびこれらのオブジェクトが変数やリレーションの定義に現れる順序に依存します。変数は、単純なディメンション、連結ディメンション、コンポジット、パーティション・テンプレートおよび別名ディメンションによってディメンション化されます。変数をディメンション化するために選択するオブジェクトによって、変数のデータの格納方法が決定されます。
単純なディメンション
単純なディメンションのメンバーは、すべて同じデータ型を持つデータ値です。単純なディメンションで変数をディメンション化すると、ディメンションの各メンバーに対して変数のセルは1つになります。データを持たない変数のディメンション・メンバーが存在する場合、Oracle OLAPでは、その空の値を持つ変数にNA値が格納されます。これらのNA値の格納の結果すべてNA値となった場合、Oracle OLAPは実際に値を格納しません。Oracle OLAPでは、範囲がある場合はNA値が格納されません。
連結ディメンション
連結ディメンションは、事前定義された単純なディメンションや結合ディメンションにまたがって定義されます。したがって、連結ディメンションのベース・ディメンションは異なるデータ型になる場合があります。ベース・ディメンションに2つ以上の単純なフラット・ディメンションを持つ連結ディメンションを使用すると、階層を表現できます。連結ディメンションを使用すると、アナリティック・ワークスペースのディメンションをリレーショナル表の列に容易にマップでき、リレーショナル構造のデータをアナリティック・ワークスペース構造に非常に効率的にロードできます。
コンポジット
コンポジットは、事前定義されたディメンションやその他のコンポジットにまたがって定義されます。概念として、コンポジットは次の2つの構造から成り立っていると考えられます。
コンポジット・オブジェクト自体。コンポジットには、ディメンション値の組合せ(つまり、コンポジット・タプル)が含まれます。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リレーション」を参照してください。
gidrelリレーション。各階層内の各値のグルーピングIDです。詳細および例は、「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