ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

ALLOCMAP

ALLOCMAPコマンドは、aggmapオブジェクトを割当て仕様として識別し、仕様の内容を入力するコマンドです。AGGMAPを使用して割当て仕様をaggmapオブジェクトに割り当てるには、最新の定義または現行のセッション中に検討された定義である必要があります。そうでない場合は、最初にCONSIDER文を使用し、現行の定義にする必要があります。

AGGMAPコマンドの代替コマンドはEDIT AGGMAPコマンドであり、OLAP Worksheet内でのみ使用できます。EDIT AGGMAPコマンドを実行すると、aggmapオブジェクトの割当て仕様を削除または変更できる編集ウィンドウが開きます。OLAP Worksheetを使用して割当て仕様をコーディングする場合は、「新しく定義されたAggmapの編集による割当て仕様のコーディング」にある手順を参照してください。

構文

ALLOCMAP [specification]

パラメータ

specification

現行のaggmapオブジェクトの割当て仕様である複数行のテキスト式。割当て仕様は、ALLOCMAP文で始まり、END文で終わります。これらの2つの文の間に、指定する計算に応じて次の文のうち1つ以上をコーディングします。

CHILDLOCK
DEADLOCK
DIMENSION(割当て用)
ERRORLOG
ERRORMASK
MEASUREDIM(割当て用)
RELATION(割当て用)
SOURCEVAL
VALUESET

各文は、複数行のテキスト式で構成されています。コマンドライン・レベルでALLOCMAP文をコード化する際は、改行デリミタ(\n)で文を区切るか、JOINLINESを使用します。

どの文を含めるかを決定する方法については、「割当て仕様の設計」を参照してください。

使用上の注意

割当て仕様の設計

最小限として、割当て仕様はRELATION文またはVALUESET文から構成されます。ただし、次のように他のOLAP DML文を仕様に含めることで、より複雑な割当て仕様を作成、またはエラー処理のデフォルト設定を変更できます。

  1. 階層割当ての場合、階層の親子関係を識別するためのセルフ・リレーションを指定するRELATION文。いくつかの処理を実行する順で文をリストするか、または実行順序が重要でなければ、変数定義にあるディメンションと同じ順序でRELATION文をリストします。

  2. 非階層割当ての場合、割当ての際に使用される値を指定するVALUESET文。

  3. ディメンション階層の親と子の両要素に対するロックをaggmapのRELATION文で指定しているか否かを検出するかどうかをALLOCATEコマンドに指定するCHILDLOCK文。

  4. ターゲット・セルがロックされているか、または一部の処理のためにNAの基礎値がそのセルに含まれることが原因で、割当てで値を配布できないときに発生するデッドロックを検出した場合、割当てを継続するかどうかをALLOCATEコマンドに指定するDEADLOCK文。

  5. ディメンションがターゲット変数およびソース・オブジェクトまたは基礎オブジェクトによって共有されない場合、そのディメンションのステータスとして設定する単一の値を指定するDIMENSION(割当て用)文。

  6. ALLOCATEコマンドによって指定されるエラー・ログに記録可能なエラーの数、およびその最大数までエラーが発生した場合に割当てを継続するかどうかを指定するERRORLOG文。

  7. エラー・ログに記録しないエラー条件を指定するERRORMASK文。

  8. ソース・データを変数から取得している場合、割当て後にALLOCATEがソース・データ値を変更するかどうかを指定するSOURCEVAL文。

aggmapの型

aggmapの型を確認するには、AGGMAPINFOファンクションを使用します。ALLOCMAP文を使用して割当て仕様を入力したaggmapの型はALLOCMAPになり、AGGMAP文を使用して集計仕様を入力したaggmapの型はAGGMAPになります。aggmapを定義したが仕様を入力していない場合の型はNAになります。

各ディメンションに対するRELATION

特定のディメンションに対してaggmapに指定できるRELATION文は1つのみです。

各ディメンションに対する階層

割当て演算では、ディメンションの1階層のみを上位から下位へ順に処理します。ディメンションに複数の階層がある場合、rel-name引数の後に修飾データ参照を使用してディメンションを1つの階層に制限する必要があります。

例9-37 入力ファイルからの割当て仕様

この例では、aggmapとその仕様はsalesalloc.txtという名前のASCIIディスク・ファイルに保存されています。このファイルの文はINFILE文を使用することによってアナリティック・ワークスペースで実行されます。salesalloc.txtの文は次のとおりです。

IF NOT EXISTS ('salesalloc')
  THEN DEFINE salesalloc AGGMAP
  ELSE CONSIDER salesalloc
ALLOCMAP
  RELATION time.parent OPERATOR EVEN
  RELATION product.parent OPERATOR EVEN
  RELATION geography.parent OPERATOR EVEN
  SOURCEVAL ZERO
  DEADLOCK SKIP
END

salesallocというaggmapをアナリティック・ワークスペースに含めるには、次の文を実行します。

INFILE 'salesalloc.txt'

これで、sales.agg aggmapが定義され、3つのRELATION文、SOURCEVAL文およびDEADLOCK文が含まれるようになりました。この例では、リレーションtime.parentproduct.parentおよびgeography.parentがそれぞれの子のディメンション値をディメンション階層の親に関連付けるので、ALLOCATE文によってソース値がターゲット変数のすべての集計レベルのセルおよび詳細レベルのセルに均等に割り当てられます。DEADLOCK文は、ターゲット階層のブランチがロックされているか、NA値を持つ場合にエラーをロギングし、割当てを継続するようにALLOCATE文に指定します。SOURCEVAL文は、ソース・データの割当て後、ソース・セルにゼロ値を割り当てるようにALLOCATEに指定します。

これにより、次のようなALLOCATE文でsalesallocというaggmapを使用できます。

ALLOCATE sales USING salesalloc

例9-38 テキスト式からの割当て仕様

この例では、salesallocというaggmapがすでに定義されています。この仕様は、ALLOCMAP文に対するテキスト式の引数としてaggmapに追加されます

CONSIDER salesalloc
ALLOCMAP
RELATION time.parent OPERATOR EVEN
RELATION product.parent OPERATOR EVEN
RELATION geography.parent OPERATOR EVEN
SOURCEVAL ZERO
DEADLOCK SKIP

 

例9-39 割当て仕様における単一ディメンション値の指定

この例では、sales変数から計算される値をprojectedsales変数のセルに比例割当てします。sales変数は、timeproductcustomerおよびchannelディメンションでディメンション化されます。

次に、この例では、projectedsales変数を割当てのターゲットとして使用し、increasefactor計算式をソースとして使用するように定義します。この計算式はsalesの値を10%増加します。さらに、この例では、timeディメンションを制限し、2001年を2002年の各四半期に関連付けるytoq.relリレーションを作成します。次のLIMITコマンドは、salesおよびprojectedsalesによって共有されるディメンションを制限します。

さらに、この例では、aggmapを作成し、ALLOCMAP文を使用してRELATION文およびDIMENSION文を作成したaggmapに入力します。RELATION文は、割当てに使用するディメンション階層としてytoq.relリレーションを指定し、割当てが比例であることを指定します。DIMENSION文は、割当てが行われる間、channelディメンションのステータスをtotalchannelに設定するようにALLOCATEに指定します。

DEFINE projectedSales DECIMAL VARIABLE <time, SPARSE <product, customer>>
DEFINE increaseFactor DECIMAL FORMULA <product>
EQ sales * 1.1
LIMIT time TO '2001' 'Q1.02' TO 'Q4.02'
DEFINE YtoQ.rel RELATION time <time>
LIMIT time TO 'Q1.02' to 'Q4.02'
YtoQ.rel = '2001'
LIMIT time TO '2001' 'Q1.02' to 'Q4.02'
LIMIT product TO 'TotalProduct' 'Videodiv' 'Audiodiv' 'Accdiv'
LIMIT customers TO 'TotalCustomer'
DEFINE time.alloc AGGMAP
ALLOCMAP
RELATION YtoQ.rel OPERATOR PROPORTIONAL
DIMENSION channel 'TotalChannel'
END
ALLOCATE increaseFactor BASIS sales TARGET projectedSales USING time.alloc

割当ての基礎であるsales値は次のとおりです。

CHANNEL: TOTALCHANNEL
CUSTOMERS: TOTALCUSTOMER
                 ---------------PROJECTEDSALES---------------
                 --------------------TIME--------------------
PRODUCT           2001      Q1.02      Q2.02      Q3.02      Q4.02
------------     ------     ------     ------     ------     ------
TotalProduct      7000       1000       2000       3000       1000
Videodiv          4100        600       1100       1900        500
Audiodiv          1700        200        600        600        300
Accdiv            1200        200        300        500        200

割当て後のtotalchannelprojectedsalesのレポートは次のとおりです。

CHANNEL: TOTALCHANNEL
CUSTOMERS: TOTALCUSTOMER
                 ---------------PROJECTEDSALES---------------
                 --------------------TIME--------------------
PRODUCT           2001      Q1.02      Q2.02      Q3.02      Q4.02
------------     ------     ------     ------     ------     ------
TotalProduct       NA         NA         NA         NA         NA
Videodiv           NA        660       1210       2090        550
Audiodiv           NA        220        660        660        330
Accdiv             NA        220        330        550        220

例9-40 割当て仕様におけるRELATION文の入力

この例では、time.typeディメンションを定義し、timeディメンションの2つの階層を追加します。これにより、階層の型(time.type)をtimeディメンションに関連付けるtime.timeリレーションを定義します。この例ではtime.allocというaggmapを定義します。ALLOCMAPコマンドを使用すると、RELATION文をaggmapに入力します。RELATION文は、割当てで使用するtimeディメンション階層の値を指定し、QDRでtimeディメンションを1つの階層に制限し、割当てにEVEN演算を指定します。次にALLOCATEコマンドは、time.allocというaggmapを使用して、データをソース・オブジェクトからターゲット変数に割り当てます。ALLOCATEコマンドのソース・オブジェクト、基礎オブジェクトおよびターゲット・オブジェクトは、同じsales変数です。

 
DEFINE time.type TEXT DIMENSION
MAINTAIN time.type add 'Fiscal'
MAINTAIN time.type add 'Calendar'
DEFINE time.time RELATION time <time, time.type>
DEFINE time.alloc AGGMAP
 
ALLOCMAP
RELATION time.time (time.type 'Fiscal') OPERATOR EVEN 
END
 
ALLOCATE sales USING time.alloc 

CHILDLOCK

割当て仕様では、CHILDLOCK文は、ディメンション階層の親とその子の両方に対するロックを割当て仕様のRELATION文で指定しているかどうかを検出するようにALLOCATE文に指定します。親とそのいずれかの子の両方をロックしていると、割当ての結果が不適切になる場合があります。

構文

CHILDLOCK [DETECT|NODETECT]

パラメータ

DETECT

ディメンション階層の親とそのいずれかの子に対して割当てロックが存在することを検出するようにALLOCATE文に指定します。ロックされた親および子が検出されると、ALLOCATE文によって割当てのエラー・ログにエントリが作成されます。

NODETECT

(デフォルト)ディメンション階層の親とそのいずれかの子に対してロックが存在する場合でも、割当てを継続するようにALLOCATE文に指定します。

割当て仕様にCHILDLOCK文を使用する例は、例9-79「割当て用のAggmapの作成」を参照してください。


DEADLOCK

割当て仕様では、DEADLOCK文は、ターゲット・セルが割当て仕様のRELATION文によってロックされているか、またはターゲット・セルがNAの基礎値を持つために、ディメンション階層の値によって指定されるターゲット・セルにソース値を配布できない場合の処理をALLOCATE文に指定します。

構文

DEADLOCK [SKIP|NOSKIP]

パラメータ

SKIP

ターゲット・セルがロックされているか、NAの基礎値を持つために、ディメンション階層のブランチによって指定されるセルにソース値を配布できない場合でも、エラーをロギングして割当てを継続するようにALLOCATE文に指定します。

NOSKIP

ターゲット・セルがロックされているか、NAの基礎値を持つために、ディメンション階層のブランチのセルにソース値を配布できない場合、割当てを中止してエラーを返すようにALLOCATE文に指定します。ALLOCATEコマンドによって使用されるaggmapにDEADLOCK文を含めない場合のデフォルトのアクションです。

割当て仕様でDEADLOCK文を使用する例は、例9-37「入力ファイルからの割当て仕様」および例9-38「テキスト式からの割当て仕様」を参照してください。


DIMENSION(割当て用)

割当て仕様では、DIMENSION文は、ステータスをディメンションの単一の値に設定します。割当て仕様におけるこのディメンションは、ソース・オブジェクト、基礎オブジェクトおよびターゲット・オブジェクトが共有しないディメンションです。割当て仕様でDIMENSION文によってこのような単一の値が指定されていない場合、Oracle OLAPは割当てを実行する際にディメンションの現行のステータス値を使用します。

DIMENSION文を使用すると、ディメンションのステータスを割当てで使用したい値に設定できます。ソース・オブジェクト、基礎オブジェクトおよびターゲット・オブジェクトによって共有されない各ディメンションには、個別のDIMENSION文を使用する必要があります。

構文

DIMENSION dimension 'dimval'

パラメータ

dimension

制限するディメンションの名前。

dimval

割当てが行われる間、ディメンションのステータスとして設定するディメンションの単一の値。

割当て仕様にDIMENSION文を使用する例は、例9-39「割当て仕様における単一ディメンション値の指定」を参照してください。


ERRORLOG

割当て仕様では、ERRORLOG文は、ロギングする割当てエラー条件の数、およびロギングしたエラーの数が指定した最大数に達した場合に割当てを継続するか中止するかを指定します。エラー・ログはALLOCATEコマンドにERRORLOGキーワードで指定します。

構文

ERRORLOG [UNLIMITED|MAX <num>] [STOP|NOSTOP]

パラメータ

UNLIMITED

エラーを制限数なくエラー・ログに書き込むようにALLOCATEコマンドに指定します。(デフォルト)

MAX num

ALLOCATEによってエラー・ログに書き込まれるエラーの最大数を指定します。

STOP
NOSTOP

ALLOCATEがエラー・ログにエラーを最大数まで書き込んだ場合、割当てを中止するかどうかを指定します。STOPを指定すると、割当ては中止されます。NOSTOPを指定すると割当ては継続されますが、ALLOCATEはそれ以降のエラーをエラー・ログに書き込みません。UNLIMITEDを指定している場合、STOP引数およびNOSTOP引数は無効になり、エラーの発生数にかかわらず割当てが継続されます。

使用上の注意

エラー・ログの書式設定

ALLOCERRLOGFORMATオプションは、ALLOCATEコマンドにERRORLOG引数で指定するエラー・ログの内容および書式を設定するオプションです。エラー・ログのヘッダーはALLOCERRLOGHEADERオプションで指定します。


ERRORMASK

割当て仕様では、ERRORMASK文は、割当てエラー・ログに記録しないエラー条件を指定します。エラー・ログはALLOCATEコマンドにERRORLOGキーワードで指定します。

構文

ERRORMASK <num...>

パラメータ

num...

エラー・ログに記録しないエラーの番号。

例9-41 CHILDLOCKエラーを対象外にする

CHILDLOCKエラーを対象外にするには、割当て仕様に次の文を入力します。

ERRORMASK 10

例9-42 すべての割当てエラーを対象外にする

すべてのエラーを対象外にするには、割当て仕様に次の文を入力します。

ERRORMASK 1 2 3 4 5 6 7 8 9 10

MEASUREDIM(割当て用)

割当て仕様では、MEASUREDIM文は、演算子変数または引数変数の定義で指定されるメジャー・ディメンションの名前を識別します。ただし、メジャー・ディメンションは、aggmapオブジェクトの定義に含まれている場合、指定できません。

構文

MEASUREDIM name

パラメータ

name

メジャー・ディメンションの名前。メジャー・ディメンションは、ユーザーが定義するディメンションです。ディメンション値は、既存の変数の名前です。


関連項目:

AGGMAPコマンドのMEASUREDIM(集計用)


RELATION(割当て用)

割当て仕様では、RELATION文は、ディメンション階層のパスおよび割当ての方法を指定するリレーションを識別します。ソース・データをディメンション階層の上位から下位へ順に割り当てるには、階層の値をRELATION文で指定し、割当てのターゲットである変数のセルを識別する必要があります。割当てのターゲットが多次元変数の場合、ソース・データを上位から下位へ順に割り当てるには、各ディメンションに個別のRELATION文を含める必要があります。aggmapのRELATION文の順序で割当ての順序が決定します。最初のRELATION文のディメンション階層で上位から下位へ順に割当てが行われ、続いてその後の文が処理されていきます。


注意:

AGGMAPコマンドの一部としてのみ使用可能なこのRELATION文は、ディメンションのデフォルト・リレーションを定義するRELATIONコマンドや、AGGMAPコマンドの一部として使用されるRELATION文とは混同しないでください。

構文

RELATION rel-name [(qdr. . .)] OPERATOR {operator|} -

     [NAOPERATOR operator] [REMOPERATOR operator] -

     [PARENTALIAS dimension-alias-name] -

     [ARGS {[FLOOR floorval] [CEILING ceilval] [MIN minval] [MAX maxval] -

     [NAHANDLE {IGNORE|CONSIDER|PREFER}] -

     [ADD|ASSIGN] [PROTECT [NONORMALIZE] [READWRITE|WRITE] lockvalueset] -

     [WEIGHTBY [ADD|MULTIPLY] [WNAFILL nafillvalweightobj]}]

パラメータ

rel-name

割当てのパスを識別するディメンション階層の値を指定するOracle OLAPのセルフ・リレーション。rel-nameの値によって識別されるターゲット変数のセルが割り当てられたデータを受け取ります。

qdr. . .

セルフ・リレーションの一部ではないリレーションの各ディメンションに単一のディメンション値を指定する1つ以上の修飾データ参照。セルフ・リレーションに複数の階層がある場合、セルフ・リレーションのディメンションの階層ディメンションにqdrを指定し、割当てに含まれない階層を単一の値に制限する必要があります。

OPERATOR operator

表9-3「割当て演算子」に示されている割当て方法、またはALLOCOPSにより返される割当て方法を指定します。この方法によって、ALLOCATEが値を割り当てるrel-nameリレーションのターゲット変数のセルが決定されます。演算子がFIRST、LAST、HFIRSTおよびHLASTの場合、ALLOCATEはディメンションの値の順序を使用してセルを決定します。ディメンションの順序は、割当てディメンションのデフォルトの論理順です。割当てには、デフォルトの演算子はありません。

表9-3 割当て演算子

演算子 説明

COPY

基礎データ値がNA以外のターゲット・セルすべてに割当てソースをコピーする。

HCOPY

階層によって指定されるターゲット・セルのデータがNAの場合でも、そのすべてのセルに割当てソースをコピーする。ソース・データがNAの場合、そのNA値は割当てのターゲット・セルには割り当てられない。

MIN

最小の基礎データ値を持つターゲットに割当てソースをコピーする。

MAX

最大の基礎データ値を持つターゲットに割当てソースをコピーする。

FIRST

NAの基礎データ値を持つ最初のターゲット・セルに割当てソースをコピーする。

HFIRST

階層によって指定される最初のターゲット・セルの現行のデータ値がNAの場合でも、そのセルに割当てソースをコピーする。

LAST

NAの基礎データ値を持つ最後のターゲット・セルに割当てソースをコピーする。

HLAST

階層によって指定される最後のターゲット・セルの現行のデータ値がNAの場合でも、そのセルに割当てソースをコピーする。

EVEN

NAの基礎データ値を持つターゲット・セルの数で割当てソースを除算し、その商を各ターゲット・セルに適用する。

HEVEN

NA値のターゲット・セルを含めたターゲット・セルの数で割当てソースを除算し、その商を各ターゲット・セルに適用する。

PROPORTIONAL

基礎データ値が非NAのターゲット・セルのデータ値を合計してその数で割当てソースを除算し、各ターゲット・セルの基礎データ値とその商をそれぞれ乗算し、その結果データをそのターゲット・セルに適用する。


NAOPERATOR operator

NAOPERATORキーワードの後のoperatorには、ALLOCATEの処理でNAまたはロックベースのデッドロックを検出したときに使用する演算子を指定します。有効な演算子は、表9-3「割当て演算子」に示されているHFIRST、HLASTおよびHEVENです。

REMOPERATOR operator

REMOPERATORキーワードの後のoperatorには、割当てによって生じた残りを格納する際にALLOCATEの処理が使用する演算子を指定します。たとえば、INTEGER値である10を階層の同レベルの3つのセルに割り当てると残りは1になります。REMOPERATORは、この残りを割当て演算によって格納する場所を指定します。REMOPERATORの有効な演算子は、表9-3「割当て演算子」に示されているMIN、MAX、FIRST、HFIRST、LASTおよびHLASTです。

ARGS

追加引数で割当て演算の追加パラメータを指定することを示します。これらの引数はすべて、rel-nameによって指定されるディメンション階層に一様に適用されます。

PARENTALIAS dimension-alias-name

親に応じて特殊な割当て(親または子による加重など)を指定します。dimension-alias-nameには、rel-nameのディメンションの別名を指定します。

ARGS argument...

割当て演算に追加パラメータを指定するARGSキーワードの後の1つ以上の引数。これらの引数はすべて、rel-nameによって指定されるディメンション階層に一様に適用されます。

FLOOR floorval

割り当てられるターゲット・データ値がfloorvalに指定される値より小さい場合、そのターゲット・セルに割り当てるデータをNAにするように指定します。PROPORTIONAL演算子が指定されている場合にのみ、この引数はリレーションに適用されます。

CEILING ceilval

割り当てられるターゲット・データ値がceilvalに指定される値より大きい場合、そのターゲット・セルに割り当てられるデータをNAにするように指定します。PROPORTIONAL演算子が指定されている場合にのみ、この引数はリレーションに適用されます。

MIN minval

割り当てられるターゲット・データ値がminvalに指定される値より小さい場合、そのターゲット・セルに割り当てられるデータをminvalにするように指定します。

MAX maxval

割り当てられるターゲット・データ値がmaxvalに指定される値より大きい場合、そのターゲット・セルに割り当てられる値をmaxvalにするように指定します。

NAHANDLE

ALLOCATEでのNA値の処理方法を指定します。OPERATORがMINまたはMAXである場合にのみ有効です。

  • IGNOREは、MIN演算またはMAX演算においてALLOCATEがNA値を無視するように指定します。(デフォルト)

  • CONSIDERは、ALLOCATEがNA値をゼロとして処理するように指定します。ただし、ターゲット・セルのデータ値が実際にゼロである場合、そのゼロのセルは割り当てられるデータ値を受け取り、NAのセルはデータ値を受け取りません。

  • PREFERは、ALLOCATEがNA値をゼロとして処理するように指定します。この場合、NAがゼロ値より優先されるので、割り当てられるデータ値をNAのセルが受け取り、実際にゼロ値のセルはデータ値を受け取りません。

ADD

割り当てられるデータをターゲット・セルにある現行のデータに追加するようにALLOCATEに指定します。

ASSIGN

割り当てられるデータでターゲット・セルのデータを置き換えるようにALLOCATEに指定します(デフォルトの動作)。

PROTECT lockvalueset

割当てのターゲットにならないようにロックするディメンション値のセットを指定します。ソース・データを割り当てる前に、ソース・データから指定のロックされたセルのデータ値を差し引くことによって、割当て演算はソースを正規化します。

NONORMALIZE

割当て演算がソース・データを正規化しないことを指定します。NONORMALIZEを使用すると、lockvaluesetによって指定されるディメンション値より下位にある階層の値を割当てから効果的に削除できます。

READWRITE

ロックされたデータ値は後に続く割当てでソース・データとして使用できないので、lockvalueset値より下位にある階層のデータをロックすることを指定します。

WRITE

割当てにおいて、lockvaluesetディメンション値によって識別されるセルにデータ値を格納できないが、そのセルのデータを後に続くステップでソース・データとして使用できることを指定します。ただし、NAまたはZEROを指定するSOURCEVAL文がaggmapにあり、ロックされたセルが割当てのソースの場合、割当て後にALLOCATEはロックされたセルの値をNAまたはゼロに設定します。

WEIGHTBY

weightobjで指定された値を割当てに使用するよう指定します。この句を使用すると、単位または通貨の変換などの処理ができます。

ADD

ALLOCATEに対して、weightobjで指定された値をターゲットの既存のデータ値に加算し、その合計をターゲット・セルに割り当てるよう指定します。

MULTIPLY

(デフォルト)ALLOCATEに対して、weightobjで指定された値をターゲットのデータ値に乗算し、その値を割り当てるよう指定します。

WNAFILL

ALLOCATEに対して、weightobjで指定された値をnafillval値に適用する前にセルのNA値を置き換えるよう指定します。

nafillval

ALLOCATEにおいて、NA値と置き換えられる値です。WEIGHTBY句にADDオプションを指定した場合、デフォルトのNAの埋込み値は0ですが、それ以外の場合はデフォルトのNAの埋込み値は1になります。

weightobj

Oracle OLAPが、ターゲット・セルに格納する直前に割り当てられたデータに適用する加重値としての変数、計算式またはリレーションの名前です。リレーションを使用した場合、加重リレーションに基づいてターゲット変数が参照され、そのセルが割当てターゲット・セルに適用されます。

使用上の注意

割当てのパスの指定

割当てのパスは、割当てシステムが使用するソース・データからターゲット・データまでのルートです。割当てパスが異なると、その結果は大幅に異なります。このパスは、aggmapに入力するRELATION文で指定します。RELATION文のリレーション・オブジェクトおよびそのRELATION文の順序によって、割当てのパスおよび方法が指定されます。

割当てパスは、ディメンション階層の任意のレベルから階層の任意の下位レベルまでのルートです。階層のメンバーを相互に関連付けるリレーション・オブジェクト(セルフ・リレーション)を使用して、割当てに関係する階層の要素を識別できます。割当ては、aggmapの最初のRELATION文でディメンション階層を上位から下位へ順に処理し、続いて2番目のRELATION文で階層を上位から下位へ順に処理していきます(以降同様)。

ディメンションに複数の階層がある場合、割当てに使用する階層を指定するためにqdr引数をRELATION文で使用する必要があります。リレーションで指定する階層には循環リレーションを含めないでください(たとえば、ディメンション値Aがディメンション値Bに関連し、ディメンション値Bがディメンション値Cに関連し、ディメンション値Cがディメンション値Aに関連するリレーションなど)。

割当てパスのタイプ

ソースからターゲットへ値を割り当てる際に使用できるパスの種類を次に示します。

  • 直接割当てパス: 階層の中間ノードに対する割当てを行わずに、ソース・セルから最終のターゲット・セルに値を直接割り当てます。たとえば、階層timeディメンションのQuarterレベルのディメンション値によって指定されるソース・データ値をMonthレベルの値に、またはYearレベルのディメンション値によって指定されるソース・データ値をMonthレベルの値に割り当てます。

  • 再帰的下降階層パス: 値を階層の中間ノードに割り当ててから最終のターゲット・セルに割り当てます。たとえば、productディメンションのCategoryレベルのディメンション値によって指定されるソース・データ値を、Subcategoryレベルの値に割り当ててからProductIDレベルの値に割り当てます。

  • 多次元割当てパス: 最初に1つのディメンションに対して上位から下位へ順に割り当ててから、別のディメンションに対して上位から下位へ順に割り当てます。直接または再帰的、あるいはその両方の組合せの割当てが使用可能です。割当ての順序によって結果が異なる場合があります。

  • 連立多次元割当てパス: 値の割当て先になる変数の非NAのセルを指定するコンポジット・ディメンションを作成することにより、複数のディメンションによって指定される複数の変数セルに対して値の直接割当てを同時に実行します。その後、そのコンポジットを割当ての基礎として使用します。

割当て用のRELATION文を設計する際の制限

RELATION文の設計時には、次の制限事項に注意してください。

  • Oracle OLAPでは、ALLOCATEコマンドの1回の実行でディメンションの1階層に対してのみ割当てが行われます。ディメンションに複数の階層がある場合、リレーションを1階層のみに制限するためにqdr引数を指定する必要があります。

  • 割当て仕様にはRELATION文またはVALUESET文を指定する必要があります。

  • 割当て仕様で各ディメンションに使用できるRELATION文またはVALUESET文は1つのみです。

割当てパスにおけるセルのロック

場合によっては、セルの既存の値を保持し割当ての影響を受けないようにする必要があります。ディメンション階層の値をロックすることによって、その値を割当てパスから削除できます。階層の詳細レベルより上位の値をロックすると、その値より下位の階層のブランチが割当てから削除されます。値をロックするには、RELATION文にPROTECT引数を使用します。

たとえば、毎月見直しする年間予算を割り当てる場合、timeディメンション階層のYearレベルにbudgetの値を設定します。データはMonthレベルにある各要素に割り当てます。時間の経過とともに、実際の月間データを入力してその要素をロックし、残りの年間予算値を再割当てすることにより、年間目標を達成するのに必要な新しい月別ターゲットを確認します。

要素をロックする場合、ソース値を再正規化するかどうかを指定できます。デフォルトでは、階層の要素をロックすると、その要素によって指定されるターゲット変数のセルの値がソース値から差し引かれ、その残りがターゲット・セルに割り当てられます。割当ての際にソースが再正規化されないようにするには、PROTECT引数の後にNONORMALIZEを指定します。

割当て文にRELATION文を使用する例は、ALLOCMAPコマンドの例(特に、例9-40「割当て仕様におけるRELATION文の入力」)を参照してください。


SOURCEVAL

割当て仕様では、SOURCEVAL文は、ALLOCATEコマンドが割当て前のソース・セルの値を正常に割り当てた後、その割当て演算でソース・セルに割り当てる値を指定します。

SOURCEVALのデフォルト値はNAなので、ALLOCATEは割当て後に割り当てられたソース・セルのそれぞれの値をNAに設定します。SOURCEVALにCURRENTを指定すると、割り当てられたソース・セルは割当て前に持っていた値を保持します。SOURCEVALにZEROを指定すると、割り当てられた各ソース・セルにゼロ値を割り当てます。

構文

SOURCEVAL [CURRENT|ZERO|NA]

パラメータ

CURRENT

割当て後のソース・セルの値は、割当て前の値と同じであることを指定します。

ZERO

割当て後のソース・セルの値は、ゼロであることを指定します。

NA

割当て後のソース・セルの値は、NAであることを指定します。(デフォルト値)


VALUESET

割当て仕様では、VALUESET文は割当てのターゲット・ディメンション値を指定します。ディメンション化された値セットは、メジャー・ディメンションまたは明細項目ディメンションなど非階層ディメンションに割当てターゲットを指定するために使用できます。


注意:

次の制限に注意してください。
  • 割当て仕様には、RELATION文またはVALUESET文を少なくとも1つ指定する必要があります。

  • 割当て仕様で指定される各ディメンションに指定できるRELATION文またはVALUESET文は1つのみです。


構文

VALUSET vs-name[(nondimvalueset)| qdr... ] OPERATOR operator | opvar

     [NAOPERATOR text -exp] [REMOPERATOR text -exp] -

     [ARGS [FLOOR floorval] [CEILING ceilval] –

     [MIN minval] [MAX maxval] –

     [ADDT [ {TRUE|FALSE} | ASSIGN] –

     [{PROTECTRW| PROTECTW} [NONORMALIZE] lockvalueset] –

     [WEIGHTBY [ADD] weightobj [WNAFILL nafillval]] | -

     [WEIGHTBY WEIGHTVAR wobjr]]

パラメータ

vs-name

割当てのパスとしてディメンションの値を指定する値セット・オブジェクトの名前を指定します。vs-nameの値によって識別されるターゲット変数のセルが割り当てられたデータを受け取ります。

nondimvalueset

vs-nameがディメンション化された値セットの場合、その値セット・ディメンションのループ処理に使用されるステータスとしてディメンション化されていない値セットを指定します。nondimvaluesetまたはqdrを含めない場合、Oracle OLAPは現行のステータス値を使用するかわりに、ディメンションのデフォルトの論理順序を使用します。

qdr

vs-nameがディメンション化されていない値セットの場合、データの割当ての際に使用するディメンション値を指定する1つ以上の修飾データ参照。

OPERATOR operator

OPERATORキーワードの後のoperator引数はテキスト式であり、表9-3「割当て演算子」で示されている演算子タイプが使用されます。演算子タイプは割当ての方法を指定します。この方法によって、ALLOCATEが値を割り当てるvs-nameリレーションのターゲット変数のセルが決定されます。FIRST演算子、LAST演算子、HFIRST演算子およびHLAST演算子に対してdimorder valuesetを使用して異なるステータスを指定していないかぎり、ALLOCATEは割当てディメンションのデフォルトの論理順序を使用してセルを決定します。割当てには、デフォルトの演算子はありません。

OPERATOR opvar

OPERATORキーワードの後のopvar引数には、ディメンションの各値に対して異なる演算を指定するTEXT変数を指定します。変数の値は、表9-3「割当て演算子」に示されている割当て演算子です。演算子変数は、割当て演算子をあるディメンションの値で変更するために使用します。opvar引数は、次のタイプのディメンションで使用します。

  • メジャー・ディメンション -- 割り当てられる変数に応じて割当て方法を変更します。メジャー・ディメンションの値は、割り当てられる変数の名前です。これにより、各メジャーの割当てに使用される演算を識別する値のテキスト変数がディメンション化されます。割当て仕様には、メジャー・ディメンションを識別するMEASUREDIM(割当て用)文が含まれている必要があります。

  • 明細項目ディメンション -- 割り当てられる明細項目に応じて割当て方法を変更します。通常、明細項目ディメンションは非階層で、財務割当てを識別します。データ変数のディメンション化、および各項目の割当てに使用する演算を識別するテキスト変数のディメンション化の両方に、明細項目ディメンションを使用します。演算変数は通常、長期間にわたる明細項目の割当てに使用します。

opvar引数は、この引数を使用して割り当てられるディメンションによってディメンション化できません。たとえば、geographyディメンションに別の演算を指定する場合、opvargeographyによってディメンション化できません。


ヒント:

演算子変数をページングする量を最小限にするには、opvar変数を固定幅8TEXT型で定義します。

NAOPERATOR text-exp

NAOPERATORキーワードの後のoperatorには、ALLOCATEの処理でNAまたはロックベースのデッドロックを検出したときに使用する演算子を指定します。有効な演算子は、表9-3「割当て演算子」に示されているHFIRST、HLASTおよびHEVENです。

REMOPERATOR text-exp

REMOPERATORキーワードの後のoperatorには、割当てによって生じた残りを格納する際にALLOCATEの処理が使用する演算子を指定します。たとえば、INTEGER値である10を階層の同レベルの3つのセルに割り当てると残りは1になります。REMOPERATORは、この残りを割当て演算によって格納する場所を指定します。REMOPERATORの有効な演算子は、表9-3「割当て演算子」に示されているMIN、MAX、FIRST、HFIRST、LASTおよびHLASTです。

ARGS

追加引数で割当て演算の追加パラメータを指定することを示します。これらの引数はすべて、値セットに一様に適用されます。

FLOOR floorval

割り当てられるターゲット値がfloorvalに指定される値より小さい場合、Oracle OLAPがその値をNAとして格納することを指定します。

CEILING ceilval

割り当てられるターゲット値がceilvalに指定される値より大きい場合、Oracle OLAPがその値をNAとして格納することを指定します。

MIN minval

割り当てられるターゲット値がminvalに指定される値より小さい場合、Oracle OLAPがminvalの値をターゲットに格納することを指定します。

MAX maxval

割り当てられるターゲット値がmaxvalに指定される値より大きい場合、Oracle OLAPがmaxvalの値をターゲットに格納することを指定します。

ADDT {TRUE|FALSE}

ADDT句は、Oracle OLAPがターゲット・セルをターゲット・セルの既存の内容に追加する際に加算の符号を指定します。

  • TRUEは、割当ての結果がターゲットに加算されることを指定します。(デフォルト)

  • FALSEは、割当ての結果がターゲット・セルから減算されることを指定します。

PROTECTRW lockvalueset

lockvaluesetによって指定されるディメンション・メンバーが割当てのターゲットおよびソース値になることができないことを指定します。この句を使用すると、階層のサブツリーに割当てロックを指定できます。ターゲット・セルの現行の内容がソースから減算され、ソースおよび基礎が再正規化されます。

PROTECTW lockvalueset

lockvaluesetによって指定されるディメンション・メンバーが割当てのターゲットになることができないことを指定します。ただし、そのターゲット・セルは、割当て処理の後に続くステップでソース値として使用されます。SOURCEVAL文を0(ゼロ)またはNAに設定してその値を再割当てすると、値が適切に設定されます。

NONORMALIZE

保護されたセルに基づいてOracle OLAPがソースおよび基礎を再正規化しないことを指定します。このキーワードを指定すると、サブブランチを階層から削除するのと同様の効果があります。通常、このキーワードを使用して、割当て後にデータが割当てレベルから集計されると、ソース・セルには割り当てられた元の合計が含まれません。

WEIGHTBY weightobj

格納する直前にターゲット・セルに適用される加重値を指定します。この句を使用すると、単位または通貨の変換などの処理ができます。値の加重オブジェクトは変数、計算式またはリレーションです。リレーションを使用した場合、加重リレーションに基づいてターゲット変数が参照され、そのセルが割当てターゲット・セルに適用されます。

ADD

Oracle OLAPが加重値を割当てターゲットに乗算ではなく加算することを指定します。

WNAFILL nafillval

使用する加重変数のデフォルト値を指定します。ADD句を含めない場合、nafillvalのデフォルト値は1です。ADD句を含める場合、nafillvalのデフォルト値は0(ゼロ)です。

WEIGHTBY WEIGHTVAR wobj

割り当てられるデータに加重することを指定します。wobj引数は、Oracle OLAPが、ターゲット・セルに格納する直前に割り当てられたデータに適用する加重値としての変数、リレーションまたは計算式の名前です。この句を使用すると、単位または通貨の変換などの処理ができ、OPERATOR opvar句に対して作成した演算子変数で指定される異なる演算子によって異なる加重オブジェクトを使用できます。