ALLOCMAPコマンドは、aggmapオブジェクトを割当て仕様として識別し、仕様の内容を入力するコマンドです。AGGMAPを使用して割当て仕様をaggmapオブジェクトに割り当てるには、最新の定義または現行のセッション中に検討された定義である必要があります。そうでない場合は、最初にCONSIDER文を使用し、現行の定義にする必要があります。
AGGMAPコマンドの代替コマンドは、EDIT AGGMAPコマンドです。このコマンドは、OLAP Worksheet内でのみ使用できます。EDIT AGGMAPコマンドを実行すると、aggmapオブジェクトの割当て仕様を削除または変更できる編集ウィンドウが開きます。OLAP Worksheetを使用して割当て仕様をコーディングする場合は、「新しく定義されたAggmapの編集による割当て仕様のコーディング」にある手順を参照してください。
構文
ALLOCMAP [specification]
引数
現行のaggmapオブジェクトの割当て仕様である複数行のテキスト式。割当て仕様は、ALLOCMAP文で始まり、END
文で終わります。これらの2つの文の間に、指定する計算に応じて次の文のうち1つ以上をコーディングします。
各文は、複数行のテキスト式で構成されています。コマンドライン・レベルでALLOCMAP文をコード化する際は、改行デリミタ(\n
)で文を区切るか、JOINLINESを使用します。
どの文を含めるかを決定する方法については、「割当て仕様の設計」を参照してください。
注意
割当て仕様の設計
最小限として、割当て仕様はRELATION文またはVALUESET文から構成されます。ただし、次のように他のOLAP DML文を仕様に含めることで、より複雑な割当て仕様を作成、またはエラー処理のデフォルト設定を変更できます。
階層割当ての場合、階層の親子関係を識別するためのセルフ・リレーションを指定するRELATION文。いくつかの処理を実行する順で文をリストするか、または実行順序が重要でなければ、変数定義にあるディメンションと同じ順序でRELATION文をリストします。
非階層割当ての場合、割当ての際に使用される値を指定するVALUESET文。
ディメンション階層の親と子の両要素に対するロックをaggmapのRELATION文で指定しているか否かを検出するかどうかをALLOCATEコマンドに指定するCHILDLOCK文。
ターゲット・セルがロックされているか、または一部の処理のためにNA
の基礎値がそのセルに含まれることが原因で、割当てで値を配布できないときに発生するデッドロックを検出した場合、割当てを継続するかどうかをALLOCATEコマンドに指定するDEADLOCK文。
ディメンションがターゲット変数およびソース・オブジェクトまたは基礎オブジェクトによって共有されない場合、そのディメンションのステータスとして設定する単一の値を指定するDIMENSION(割当て用)文。
ALLOCATEコマンドによって指定されるエラー・ログに記録可能なエラーの数、およびその最大数までエラーが発生した場合に割当てを継続するかどうかを指定するERRORLOG文。
エラー・ログに記録しないエラー条件を指定するERRORMASK文。
ソース・データを変数から取得している場合、割当て後にALLOCATEがソース・データ値を変更するかどうかを指定するSOURCEVAL文。
aggmapの型
aggmapの型を確認するには、AGGMAPINFOファンクションを使用します。ALLOCMAP文を使用して割当て仕様を入力したaggmapの型はALLOCMAPになり、AGGMAP文を使用して集計仕様を入力したaggmapの型はAGGMAPになります。aggmapを定義したが仕様を入力していない場合の型はNA
になります。
各ディメンションに対するRELATION
特定のディメンションに対してaggmapに指定できるRELATION文は1つのみです。
各ディメンションに対する階層
割当て演算では、ディメンションの1階層のみを上位から下位へ順に処理します。ディメンションに複数の階層がある場合、rel-name引数の後に修飾データ参照を使用してディメンションを1つの階層に制限する必要があります。
例
例9-36 入力ファイルからの割当て仕様
この例では、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.parent
、product.parent
およびgeography.parent
がそれぞれの子のディメンション値をディメンション階層の親に関連付けるので、ALLOCATE文によってソース値がターゲット変数のすべての集計レベルのセルおよび詳細レベルのセルに均等に割り当てられます。DEADLOCK文は、ターゲット階層のブランチがロックされているか、NA
値を持つ場合にエラーをロギングし、割当てを継続するようにALLOCATE文に指定します。SOURCEVAL文は、ソース・データの割当て後、ソース・セルにゼロ値を割り当てるようにALLOCATEに指定します。
これにより、次のようなALLOCATE文でsalesalloc
というaggmapを使用できます。
ALLOCATE sales USING salesalloc
例9-37 テキスト式からの割当て仕様
この例では、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-38 割当て仕様における単一ディメンション値の指定
この例では、sales
変数から計算される値をprojectedsales
変数のセルに比例割当てします。sales
変数は、time
、product
、customer
および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
割当て後のtotalchannel
のprojectedsales
のレポートは次のとおりです。
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-39 割当て仕様における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文は、ディメンション階層の親とその子の両方に対するロックを割当て仕様のRELATION文で指定しているかどうかを検出するようにALLOCATE文に指定します。親とそのいずれかの子の両方をロックすると、割当ての結果が不適切になる場合があります。
構文
CHILDLOCK [DETECT|NODETECT]
引数
ディメンション階層の親とそのいずれかの子に対して割当てロックが存在することを検出するようにALLOCATE文に指定します。ロックされた親および子が検出されると、ALLOCATE文によって割当てのエラー・ログにエントリが作成されます。
(デフォルト)ディメンション階層の親とそのいずれかの子に対してロックが存在する場合でも、割当てを継続するようにALLOCATE文に指定します。
例
割当て仕様にCHILDLOCK文を使用する例は、例9-78「割当て用のAggmapの作成」を参照してください。
割当て仕様では、DEADLOCK文は、ターゲット・セルが割当て仕様のRELATION文によってロックされているか、NA
の基礎値を持つために、ディメンション階層の値によって指定されるターゲット・セルにソース値を配布できない場合の処理をALLOCATE文に指定します。
構文
DEADLOCK [SKIP|NOSKIP]
引数
ターゲット・セルがロックされているか、NA
の基礎値を持つために、ディメンション階層のブランチによって指定されるセルにソース値を配布できない場合でも、エラーをロギングして割当てを継続するようにALLOCATE文に指定します。
ターゲット・セルがロックされているか、NA
の基礎値を持つために、ディメンション階層のブランチのセルにソース値を配布できない場合、割当てを中止してエラーを返すようにALLOCATE文に指定します。ALLOCATEコマンドによって使用されるaggmapにDEADLOCK文を含めない場合のデフォルトのアクションです。
例
割当て仕様でDEADLOCK文を使用する例は、例9-36「入力ファイルからの割当て仕様」および例9-37「テキスト式からの割当て仕様」を参照してください。
割当て仕様では、DIMENSION文は、ステータスをディメンションの単一の値に設定します。割当て仕様におけるこのディメンションは、ソース・オブジェクト、基礎オブジェクトおよびターゲット・オブジェクトが共有しないディメンションです。割当て仕様でDIMENSION文によってこのような単一の値が指定されていない場合、Oracle OLAPは割当てを実行する際にディメンションの現行のステータス値を使用します。
DIMENSION文を使用すると、ディメンションのステータスを割当てで使用したい値に設定できます。ソース・オブジェクト、基礎オブジェクトおよびターゲット・オブジェクトによって共有されない各ディメンションには、個別のDIMENSION文を使用する必要があります。
構文
DIMENSION dimension 'dimval'
引数
制限するディメンションの名前。
割当てが行われる間、ディメンションのステータスとして設定するディメンションの単一の値。
例
割当て仕様にDIMENSION文を使用する例は、例9-38「割当て仕様における単一ディメンション値の指定」を参照してください。
割当て仕様では、ERRORLOG文は、ロギングする割当てエラー条件の数、およびロギングしたエラーの数が指定した最大数に達した場合に割当てを継続するか中止するかを指定します。エラー・ログはALLOCATEコマンドにERRORLOGキーワードで指定します。
構文
ERRORLOG [UNLIMITED|MAX <num>] [STOP|NOSTOP]
引数
エラーを制限数なくエラー・ログに書き込むようにALLOCATEコマンドに指定します。これはデフォルト設定です。
ALLOCATEによってエラー・ログに書き込まれるエラーの最大数を指定します。
ALLOCATEがエラー・ログにエラーを最大数まで書き込んだ場合、割当てを中止するかどうかを指定します。STOPを指定すると、割当ては中止されます。NOSTOPを指定すると割当ては継続されますが、ALLOCATEはそれ以降のエラーをエラー・ログに書き込みません。UNLIMITEDを指定している場合、STOP引数およびNOSTOP引数は無効になり、エラーの発生数にかかわらず割当てが継続されます。
注意
エラー・ログの書式設定
ALLOCERRLOGFORMATオプションは、ALLOCATEコマンドにERRORLOG引数で指定するエラー・ログの内容および書式を設定するオプションです。エラー・ログのヘッダーはALLOCERRLOGHEADERオプションで指定します。
割当て仕様では、ERRORMASK文は、割当てエラー・ログに記録しないエラー条件を指定します。エラー・ログはALLOCATEコマンドにERRORLOGキーワードで指定します。
構文
ERRORMASK <num...>
引数
エラー・ログに記録しないエラーの番号。
例
割当て仕様では、MEASUREDIM文は、演算子変数または引数変数の定義で指定されるメジャー・ディメンションの名前を識別します。ただし、メジャー・ディメンションは、aggmapオブジェクトの定義に含まれている場合、指定できません。
構文
MEASUREDIM name
引数
メジャー・ディメンションの名前。メジャー・ディメンションは、ユーザーが定義するディメンションです。ディメンション値は、既存の変数の名前です。
割当て仕様では、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 nafillval] weightobj]}]
引数
割当てのパスを識別するディメンション階層の値を指定するOracle OLAPのセルフ・リレーション。rel-nameの値によって識別されるターゲット変数のセルが割り当てられたデータを受け取ります。
セルフ・リレーションの一部ではないリレーションの各ディメンションに単一のディメンション値を指定する1つ以上の修飾データ参照。セルフ・リレーションに複数の階層がある場合、セルフ・リレーションのディメンションの階層ディメンションにqdrを指定し、割当てに含まれない階層を単一の値に制限する必要があります。
表9-3「割当て演算子」に示されている割当て方法、またはALLOCOPSにより返される割当て方法の1つを指定します。この方法によって、ALLOCATEが値を割り当てるrel-nameリレーションのターゲット変数のセルが決定されます。演算子がFIRST、LAST、HFIRSTおよびHLASTの場合、ALLOCATEはディメンションの値の順序を使用してセルを決定します。ディメンションの順序は、割当てディメンションのデフォルトの論理順です。割当てには、デフォルトの演算子はありません。
表9-3 割当て演算子
演算子 | 説明 |
---|---|
COPY |
基礎データ値が |
HCOPY |
階層によって指定されるターゲット・セルのデータが |
MIN |
最小の基礎データ値を持つターゲットに割当てソースをコピーする。 |
MAX |
最大の基礎データ値を持つターゲットに割当てソースをコピーする。 |
FIRST |
非 |
HFIRST |
階層によって指定される最初のターゲット・セルの現行のデータ値が |
LAST |
非 |
HLAST |
階層によって指定される最後のターゲット・セルの現行のデータ値が |
EVEN |
非 |
HEVEN |
|
PROPORTIONAL |
基礎データ値が非 |
NAOPERATORキーワードの後のoperatorには、ALLOCATEの処理でNA
またはロックベースのデッドロックを検出したときに使用する演算子を指定します。有効な演算子は、表9-3「割当て演算子」に示されているHFIRST、HLASTおよびHEVENです。
REMOPERATORキーワードの後のoperatorには、割当てによって生じた残りを格納する際にALLOCATEの処理が使用する演算子を指定します。たとえば、INTEGER
値である10を階層の同レベルの3つのセルに割り当てると残りは1になります。REMOPERATORは、この残りを割当て演算によって格納する場所を指定します。REMOPERATORの有効な演算子は、表9-3「割当て演算子」に示されているMIN、MAX、FIRST、HFIRST、LASTおよびHLASTです。
追加引数で割当て演算の追加パラメータを指定することを示します。これらの引数はすべて、rel-nameによって指定されるディメンション階層に一様に適用されます。
親に応じて特殊な割当て(親または子による加重など)を指定します。dimension-alias-nameには、rel-nameのディメンションの別名を指定します。
割当て演算に追加パラメータを指定するARGSキーワードの後の1つ以上の引数。これらの引数はすべて、rel-nameによって指定されるディメンション階層に一様に適用されます。
割り当てられるターゲット・データ値がfloorvalに指定される値より小さい場合、そのターゲット・セルに割り当てるデータをNA
にするように指定します。PROPORTIONAL演算子が指定されている場合にのみ、この引数はリレーションに適用されます。
割り当てられるターゲット・データ値がceilvalに指定される値より大きい場合、そのターゲット・セルに割り当てられるデータをNA
にするように指定します。PROPORTIONAL演算子が指定されている場合にのみ、この引数はリレーションに適用されます。
割り当てられるターゲット・データ値がminvalに指定される値より小さい場合、そのターゲット・セルに割り当てられるデータをminvalにするように指定します。
割り当てられるターゲット・データ値がmaxvalに指定される値より大きい場合、そのターゲット・セルに割り当てられる値をmaxvalにするように指定します。
ALLOCATEでのNA
値の処理方法を指定します。OPERATORがMINまたはMAXである場合にのみ有効です。
IGNOREは、MIN演算またはMAX演算においてALLOCATEがNA
値を無視するように指定します。(デフォルト)
CONSIDERは、ALLOCATEがNA
値をゼロとして処理するように指定します。ただし、ターゲット・セルのデータ値が実際にゼロである場合、そのゼロのセルは割り当てられるデータ値を受け取り、NA
のセルはデータ値を受け取りません。
PREFERは、ALLOCATEがNA
値をゼロとして処理するように指定します。この場合、NA
がゼロ値より優先されるので、割り当てられるデータ値をNA
のセルが受け取り、実際にゼロ値のセルはデータ値を受け取りません。
割り当てられるデータをターゲット・セルにある現行のデータに追加するようにALLOCATEに指定します。
割り当てられるデータでターゲット・セルのデータを置き換えるようにALLOCATEに指定します(デフォルトの動作)。
割当てのターゲットにならないようにロックするディメンション値のセットを指定します。ソース・データを割り当てる前に、ソース・データから指定のロックされたセルのデータ値を差し引くことによって、割当て演算はソースを正規化します。
割当て演算がソース・データを正規化しないことを指定します。NONORMALIZEを使用すると、lockvaluesetによって指定されるディメンション値より下位にある階層の値を割当てから効果的に削除できます。
ロックされたデータ値は後に続く割当てでソース・データとして使用できないので、lockvalueset値より下位にある階層のデータをロックすることを指定します。
割当てにおいて、lockvaluesetディメンション値によって識別されるセルにデータ値を格納できないが、そのセルのデータを後に続くステップでソース・データとして使用できることを指定します。ただし、NA
またはZERO
を指定するSOURCEVAL文がaggmapにあり、ロックされたセルが割当てのソースの場合、割当て後にALLOCATEはロックされたセルの値をNA
またはゼロに設定します。
weightobjで指定された値を割当てに使用するよう指定します。この句を使用すると、単位または通貨の変換などの処理ができます。
ALLOCATEに対して、weightobjで指定された値をターゲットの既存のデータ値に加算し、その合計をターゲット・セルに割り当てるよう指定します。
(デフォルト)ALLOCATEに対して、weightobjで指定された値をターゲットのデータ値に乗算し、その値を割り当てるよう指定します。
ALLOCATEに対して、weightobjで指定された値をnafillval値に適用する前にセルのNA
値を置き換えるよう指定します。
ALLOCATEにおいて、NA
値と置き換えられる値です。WEIGHTBY句にADDオプションを指定した場合、デフォルトのNA
の埋込み値は0
ですが、それ以外の場合はデフォルトのNA
の埋込み値は1
になります。
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-39「割当て仕様におけるRELATION文の入力」)を参照してください。
割当て仕様では、SOURCEVAL文は、ALLOCATEコマンドが割当て前のソース・セルの値を正常に割り当てた後、その割当て演算でソース・セルに割り当てる値を指定します。
SOURCEVALのデフォルト値はNA
なので、ALLOCATEは割当て後に割り当てられたソース・セルのそれぞれの値をNA
に設定します。SOURCEVALにCURRENTを指定すると、割り当てられたソース・セルは割当て前に持っていた値を保持します。SOURCEVALにZERO
を指定すると、割り当てられた各ソース・セルにゼロ値を割り当てます。
構文
SOURCEVAL [CURRENT|ZERO|NA]
引数
割当て後のソース・セルの値は、割当て前の値と同じであることを指定します。
割当て後のソース・セルの値は、ゼロであることを指定します。
割当て後のソース・セルの値は、NA
であることを指定します。これがデフォルト値です。
割当て仕様では、VALUESET文は割当てのターゲット・ディメンション値を指定します。ディメンション化された値セットは、メジャー・ディメンションまたは明細項目ディメンションなど非階層ディメンションに割当てターゲットを指定するために使用できます。
注意: 次の制限に注意してください。
|
構文
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またはqdrを含めない場合、Oracle OLAPは現行のステータス値を使用するかわりに、ディメンションのデフォルトの論理順序を使用します。
vs-nameがディメンション化されていない値セットの場合、データの割当ての際に使用するディメンション値を指定する1つ以上の修飾データ参照。
OPERATORキーワードの後のoperator引数は、表9-3「割当て演算子」に示す演算子タイプのいずれかであるテキスト式です。演算子タイプは割当ての方法を指定します。この方法によって、ALLOCATEが値を割り当てるvs-nameリレーションのターゲット変数のセルが決定されます。FIRST演算子、LAST演算子、HFIRST演算子およびHLAST演算子に対してdimorder valuesetを使用して異なるステータスを指定していないかぎり、ALLOCATEは割当てディメンションのデフォルトの論理順序を使用してセルを決定します。割当てには、デフォルトの演算子はありません。
OPERATORキーワードの後のopvar引数には、ディメンションの各値に対して異なる演算を指定するTEXT
変数を指定します。変数の値は、表9-3「割当て演算子」に示されている割当て演算子です。演算子変数は、割当て演算子をあるディメンションの値で変更するために使用します。opvar引数は、次のタイプのディメンションで使用します。
メジャー・ディメンション: 割り当てられる変数に応じて割当て方法を変更します。メジャー・ディメンションの値は、割り当てられる変数の名前です。これにより、各メジャーの割当てに使用される演算を識別する値のテキスト変数がディメンション化されます。割当て仕様には、メジャー・ディメンションを識別するMEASUREDIM(割当て用)文が含まれている必要があります。
明細項目ディメンション: 割り当てられる明細項目に応じて割当て方法を変更します。通常、明細項目ディメンションは非階層で、財務割当てを識別します。データ変数のディメンション化、および各項目の割当てに使用する演算を識別するテキスト変数のディメンション化の両方に、明細項目ディメンションを使用します。演算変数は通常、長期間にわたる明細項目の割当てに使用します。
opvar引数は、この引数を使用して割り当てられるディメンションによってディメンション化できません。たとえば、geography
ディメンションに別の演算を指定する場合、opvarはgeography
によってディメンション化できません。
ヒント: 演算子変数をページングする量を最小限にするには、opvar変数を固定幅8 のTEXT 型で定義します。 |
NAOPERATORキーワードの後のoperatorには、ALLOCATEの処理でNA
またはロックベースのデッドロックを検出したときに使用する演算子を指定します。有効な演算子は、表9-3「割当て演算子」に示されているHFIRST、HLASTおよびHEVENです。
REMOPERATORキーワードの後のoperatorには、割当てによって生じた残りを格納する際にALLOCATEの処理が使用する演算子を指定します。たとえば、INTEGER
値である10を階層の同レベルの3つのセルに割り当てると残りは1になります。REMOPERATORは、この残りを割当て演算によって格納する場所を指定します。REMOPERATORの有効な演算子は、表9-3「割当て演算子」に示されているMIN、MAX、FIRST、HFIRST、LASTおよびHLASTです。
追加引数で割当て演算の追加パラメータを指定することを示します。これらの引数はすべて、値セットに一様に適用されます。
割り当てられるターゲット値がfloorvalに指定される値より小さい場合、Oracle OLAPがその値をNA
として格納することを指定します。
割り当てられるターゲット値がceilvalに指定される値より大きい場合、Oracle OLAPがその値をNAとして格納することを指定します。
割り当てられるターゲット値がminvalに指定される値より小さい場合、Oracle OLAPがminvalの値をターゲットに格納することを指定します。
割り当てられるターゲット値がmaxvalに指定される値より大きい場合、Oracle OLAPがmaxvalの値をターゲットに格納することを指定します。
ADDT句は、Oracle OLAPがターゲット・セルをターゲット・セルの既存の内容に追加する際に加算の符号を指定します。
TRUE
は、割当ての結果がターゲットに加算されることを指定します。(デフォルト)
FALSE
は、割当ての結果がターゲット・セルから減算されることを指定します。
lockvaluesetによって指定されるディメンション・メンバーが割当てのターゲットおよびソース値になることができないことを指定します。これにより、階層のサブツリーに割当てロックを指定できます。ターゲット・セルの現行の内容がソースから減算され、ソースおよび基礎が再正規化されます。
lockvaluesetによって指定されるディメンション・メンバーが割当てのターゲットになることができないことを指定します。ただし、そのターゲット・セルは、割当て処理の後に続くステップでソース値として使用されます。SOURCEVAL文を0
(ゼロ)またはNA
に設定してその値を再割当てすると、値が適切に設定されます。
保護されたセルに基づいてOracle OLAPがソースおよび基礎を再正規化しないことを指定します。このキーワードを指定すると、サブブランチを階層から削除するのと同様の効果があります。通常、このキーワードを使用して、割当て後にデータが割当てレベルから集計されると、ソース・セルには割り当てられた元の合計が含まれません。
格納する直前にターゲット・セルに適用される加重値を指定します。これにより、単位または通貨の変換などの処理ができます。値の加重オブジェクトは変数、計算式またはリレーションです。リレーションを使用した場合、加重リレーションに基づいてターゲット変数が参照され、そのセルが割当てターゲット・セルに適用されます。
Oracle OLAPが加重値を割当てターゲットに乗算ではなく加算することを指定します。
使用する加重変数のデフォルト値を指定します。ADD句を含めない場合、nafillvalのデフォルト値は1
です。ADD句を含める場合、nafillvalのデフォルト値は0
(ゼロ)です。
割り当てられるデータに加重することを指定します。wobj引数は、Oracle OLAPがターゲット・セルに格納する直前に割り当てられたデータに適用する加重値としての変数、計算式またはリレーションの名前です。この句を使用すると、単位または通貨の変換などの処理ができます。また、OPERATOR opvar句に対して作成した演算子変数で指定される異なる演算子によって異なる加重オブジェクトを使用できます。