FIX…ENDFIX
FIX…ENDFIXコマンド・ブロックは、データベース計算をデータベースのサブセットに制限します。 FIX文とENDFIX文の間にネストされたすべてのコマンドは、指定されたデータベース・サブセットに制限されます。
このコマンドは、必要に応じて異なる式を使用してデータベースの別々の部分を計算できるため便利です。 また、他の方法よりもはるかに高速にサブセクションを計算できます。
ENDFIXコマンドは、FIXコマンド・ブロックを終了します。 この例に示すように、FIXコマンド・ブロック内のすべてのコマンドがコールされた後、計算スクリプトの次の要素の前にENDFIXをコールします。
{set} 角カッコ内のオプションの構文は、計算tuplesを使用して定義するリージョンを選択するためのものです。 タプル選択は、ディメンション間の非対称グリッド計算を最適化し、過剰計算を回避するのに役立ちます。
構文
FIX ([{ tupleList|@GRIDTUPLES(dimensionList)},]fixMbrs)
COMMANDS ;
ENDFIX
パラメータ
- fixMbrs
-
任意の数のデータベース・ディメンションのメンバー名またはメンバーのリスト。
fixMbrs
には、次のものも含めることができます:-
AND/OR operators. AND演算子は、すべての条件を満たす必要がある場合に使用します。 OR演算子は、複数の条件を満たす必要がある場合に使用します。
-
メンバー・セット関数。他のメンバーに基づいてメンバー・リストを構築するために使用されます。
-
- COMMANDS
-
FIXの実行中に実行するコマンド。
- tupleList
-
計算タプルのオプション・リスト。 計算タプルは、複数の疎ディメンションのメンバーのリストです。 タプルには、異なる数のメンバーを含めることができます。
例:
("Diet Cola", "Cola", Florida) (Cola, "New Hampshire")
tupleListには、fixMbrsで使用されるディメンションのメンバーを含めないでください。
タプルが重複する場合、重複するリージョンは一度のみ計算されます。
- @GRIDTUPLES(dimensionList)
- 計算実行時のSmart ViewグリッドPOVに存在するメンバーに基づいたコンテキスト・タプルの選択。 @GRIDTUPLES関数に、アクティブなSmart Viewグリッドのメンバーが計算リージョンの定義に使用される複数の疎ディメンションのリストを渡します。
例:
@GRIDTUPLES(Product, Market)
ノート
-
FIXが空のメンバー・セットに評価された場合、SET EMPTYMEMBERSETSを使用してFIXコマンド内の計算を停止できます。
-
FIXコマンドは、他のFIXコマンド・ブロック内にネストできます。 ネストされたFIXコマンドの不適切な使用例は、「FIXコマンドの使用」を参照してください。
-
FIX文は計算スクリプトでのみ使用でき、アウトライン・メンバー式では使用できません。 メンバー式では、FIX文のかわりにIFコマンドを使用します。 例:
Jan( IF (Sales) Actual=5; ENDIF;)
-
AND/OR演算子の優先順位は同じです。Essbaseでは左から右に評価されます。 カッコを使用して式をグループ化します。 たとえば:
A OR B AND C
は、((A OR B) AND C)
と同じです。 ただし、(A OR (B AND C))
を使用すると、Essbaseは式全体の前にカッコ(B AND C)
内のサブ式を評価し、異なる結果を生成します。 -
FIX文の中で、AND演算子は2つのセットの共通部分を表し、OR演算子は2つのセットの結合を表します。 式では、これらの演算子はブール演算子です。 異なるディメンションのメンバーに対してANDまたはOR演算子を使用すると、次の値が戻されます:
-
AND: 空のセット。 FIX文は無視され、計算は警告メッセージで続行されます。
-
OR: 2つのメンバー・セットの和集合。 FIX (Jan OR Market)はFIX (Jan, Market)と同じです。
-
-
FIX文では、特に指定しないかぎり、同じディメンションのメンバーは常にORとして処理されます。
-
NOT演算子はFIX文ではサポートされていません。 FIX文で@REMOVEを使用します。
-
ENDFIXの後にセミコロンを付ける必要はありません。
-
FIX文では、@ATTRIBUTEおよび@WITHATTR (
FIX(@ATTRIBUTE(Can))
など)を使用して属性を指定できます。 これらの関数を使用する必要があります。FIX(Can)
はサポートされていません。 -
FIX文内で計算するディメンションのサブセットである場合、ディメンションに対してFIX文を使用することはできません。 たとえば、FIX文内のすべてのMarketを計算する場合、FIX文でMarket "New Mkt"を使用することはできません。
-
FIX文では、「動的計算」メンバーは無視されます。 FIX文のメンバーが「動的計算」メンバーのみの場合、FIX文に「動的計算」メンバーを含めることができないことを示すエラー・メッセージが表示されます。
-
FIXコマンドを計算スクリプトから発行して空のセットを生成した場合、計算のその部分は無視され、計算は次の文に進みます。 計算のアプリケーション・ログ・エントリは、FIX文が空のセットに評価されたことを示しています(固定メンバー[]を使用した[…]の計算)。
たとえば、Sample Basicを使用して、次の文が計算スクリプトに含まれているとします:
FIX (@children(Jan)) CALC DIM (Accounts, Product, Market) ENDFIX
@children(Jan)が空であるため、FIXは無視され、計算によって警告が発行され、データベース全体が操作されます。
同様に、パーティションまたはセキュリティ・フィルタを定義するリージョンが空のセットと評価された場合、Essbaseは警告を発行し、リージョン定義またはセキュリティ・フィルタが存在しないかのように動作します。
-
@RANGE関数およびディメンション間演算子(->)は、FIX fixMbrsパラメータ内では使用できません。
-
EXCLUDE…ENDEXCLUDEブロックを使用して計算しないメンバーを指定する方が、FIX…ENDFIXブロックでメンバー名の複雑な組合せを指定するよりも簡単な場合があります。
-
VAR計算コマンドで定義される変数(
varName
)は、FIXメンバー文内では使用できません。 FIXメンバーは計算の実行前に評価され、変数はFIX文設定後の実行時に評価されます。 変数は計算実行時に変更される可能性があるため、変数はFIX文の一部として使用できません。 次の例は、FIXメンバー文における変数の間違った使用方法を示しています。VAR varName=1; FIX (@relative(@memberat(@List("Product1","Product2"),varName),0)) COMMANDS; ENDFIX
例
FIX (Budget)
CALC DIM (Year, Measures, Product, Market);
ENDFIX
FIX (Budget, Jan, Feb, Mar, @DESCENDANTS(Profit))
CALC DIM (Product, Market);
ENDFIX
次の例では、Eastの子およびUDA New Mktを持つMarketディメンション・メンバーを修正します。
FIX (@CHILDREN(East) OR @UDA(Market, "New Mkt"))
次の例では、UDA "New Mkt"のEastの子とUDA "Big Mkt"のMarketディメンション・メンバーを修正します。
FIX((@CHILDREN(East) AND @UDA(Market, "New Mkt")) OR @UDA(Market,"Big Mkt"))