キューブ内のデータのサブセットの計算
必要以上の計算を回避するには、Essbaseデータベース内のデータのサブセットを計算します。メンバー・セット関数の任意の組合せ、包含を指定するFIX文および除外を指定するEXCLUDE文を使用してサブセットを指定できます。
キューブ内のデータのサブセットを計算するには、次のいずれかの方法を使用します:
-
メンバーのリストを計算するメンバー・セット関数を使用して式を作成する。
-
FIX...ENDFIXコマンドを使用して、包含によって値の範囲を計算する。
-
EXCLUDE...ENDEXCLUDEコマンドを使用して、除外によって値の範囲を計算する。
ノート:
高機能計算が有効になっている場合、新しい計算済データ・ブロックは、データベースの部分計算後にクリーンとしてマークされません。データベースのサブセットを計算するときには、SET CLEARUPDATESTATUS AFTERコマンドを使用して、新しく計算されたブロックが必ずクリーンとしてマークされるようにすることができます。このコマンドを使用すると、Essbaseでは高機能計算を使用してできるだけ効率的にデータベースが再計算されます。
メンバーのリストの計算
Essbaseメンバー・セット計算関数は、指定したメンバーに基づいたメンバーのリストを生成します。
たとえば、@IDESCENDANTS関数を使用すると、指定したメンバーのすべての子孫のリストが生成されます。式でメンバー・セット関数を使用すると、式を計算する前にEssbaseによってメンバーのリストが生成されます。
次の例では、メンバーTotal Expensesで@IDESCENDANTSコマンドを使用して、Total Expensesそれ自体と、その子孫であるメンバーMarketing、PayrollおよびMiscのリストを生成します。
@IDESCENDANTS("Total Expenses");
関連項目
FIXコマンドの使用
Essbaseブロック・ストレージ計算スクリプトのFIXコマンドを使用して、計算に含めるメンバーを定義します。FIXブロックを使用すると、過剰な計算を回避することでパフォーマンスを最適化できます。FIXでは、様々な式を使用してキューブの個別の部分を計算することもできます。
計算スクリプトのFIXブロックを使用すると、計算に含めるデータのスライスを定義できます。
たとえば、次のFIXブロックでは、Eastの子孫(New York、Massachusetts、Florida、ConnecticutおよびNew Hampshire)のBudget値のみを計算します:
FIX(Budget,@DESCENDANTS(East))
CALC DIM(Year, Measures, Product);
ENDFIX
次の例では、New MktというUDAが設定されたEastの子に対するメンバーの組合せを確定します。
FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
Marketing = Marketing * 1.1;
ENDFIX
次の例では、ワイルドカード一致(???)を使用して、末尾に-10という文字が付くメンバー名、つまりメンバー100-10、200-10、300-10および400-10を確定します。
FIX(@MATCH(Product, "???-10"))
Price = Price * 1.1;
ENDFIX
密ディメンションのみでFIXコマンドを使用すると、Essbaseによって、必要な値または指定したメンバーの値を含むブロック全体が取得されます。I/Oは影響を受けないため、計算パフォーマンス時間が向上します。
疎ディメンションでFIXコマンドを使用すると、Essbaseによって、指定した疎ディメンション・メンバーのブロックが取得されます。I/Oが大幅に低下する可能性があります。
Essbaseは密ディメンション・メンバーで使用するFIXコマンドごとにデータベースを一巡します。可能な場合は、FIXブロックを組み合せると計算パフォーマンスが向上します。
たとえば、1つのFIXコマンドを使用すると、次の計算スクリプトでは、Essbaseがデータベースを一巡のみして実績値と予算値の両方を計算します。
FIX(Actual,Budget)
CALC DIM(Year, Measures);
ENDFIX
一方、2つのFIXコマンドを使用すると、次の計算スクリプトでは、Essbaseがデータベースを一巡して実績データ値を計算し、さらにもう一巡して予算データ値を計算します。
FIX(Actual)
CALC DIM(Year, Measures);
ENDFIX
FIX(Budget)
CALC DIM(Year, Measures);
ENDFIX
計算するディメンションのサブセットをFIXコマンド内で確定することはできません。たとえば、次の計算スクリプトでは、CALC DIMより前のFIXでMarketディメンションの特定メンバーが確定されますが、CALC DIMの演算でMarketディメンション全体が計算されるため、エラー・メッセージが戻されます。
FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
CALC DIM(Year, Measures, Product, Market);
ENDFIX
FIXコマンドは、他のFIXコマンド・ブロック内でネストできます。ただし、ネストされたFIXコマンドが誤って使用されると、正しくない結果が生じる場合があります。たとえば、次の計算スクリプトの目的は、Eastのすべての子に1を割り当ててからNew Yorkに2を割り当てることです。
FIX (@CHILDREN(EAST))
"100-10"=1;
FIX ("New York")
"100-10"=2;
ENDFIX
ENDFIX
しかし、ネストされたFIXコマンドは、そのコマンドより上のFIXコマンドで指定されたディメンションのサブセットを確定します(これは許可されていません)。したがって、スクリプトによってEastのすべての子に2が割り当てられます。これは、次に記述されているようにスクリプトが実行されるためです。
FIX (@CHILDREN(EAST),''New York'')
"100-10"=1;
"100-10"=2;
ENDFIX
ネストされたFIXコマンドを使用するのではなく、2つの個別のFIXコマンド・ブロックを使用してください。例:
FIX (@CHILDREN(EAST))
"100-10"=1;
ENDFIX
FIX ("New York")
"100-10"=2;
ENDFIX
VAR計算コマンドにより定義された変数(varName)は、FIXメンバー文内に使用できません。FIXメンバーは計算の実行前に評価され、変数はFIX文設定後の実行時に評価されます。変数は計算実行時に変更される可能性があるため、変数はFIX文の一部として使用できません。次の例は、FIXメンバー文における変数の間違った使用方法を示しています。
VAR varName=1;
FIX (@relative(@memberat(@List("Product1","Product2"),varName),0))
COMMANDS;
ENDFIX
関連項目
除外コマンドの使用
Essbaseブロック・ストレージ計算スクリプトのEXCLUDE..ENDEXCLUDEコマンド・ブロックを使用して、計算から除外するメンバーを定義します。
計算に含めるメンバーを定義するよりも、含めないメンバーを定義する方が簡単な場合があります。
EXCLUDE…ENDEXCLUDEコマンドで計算しないメンバーを指定するほうが、FIX…ENDFIXコマンドでメンバー名の複雑な組合せを指定するよりも簡単です。
関連項目