キューブ内のデータのサブセットの計算

必要以上の計算を回避するには、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

関連項目

FIX…ENDFIX

除外コマンドの使用

Essbaseブロック・ストレージ計算スクリプトのEXCLUDE..ENDEXCLUDEコマンド・ブロックを使用して、計算から除外するメンバーを定義します。

計算に含めるメンバーを定義するよりも、含めないメンバーを定義する方が簡単な場合があります。

EXCLUDE…ENDEXCLUDEコマンドで計算しないメンバーを指定するほうが、FIX…ENDFIXコマンドでメンバー名の複雑な組合せを指定するよりも簡単です。

関連項目

EXCLUDE…ENDEXCLUDE