機械翻訳について

データベースのサブセットの計算

データベースのサブセットを計算するには、次のいずれかのメソッドを使用します:

  • メンバー・セット関数を使用して、メンバーのリストを計算する式を作成します。

  • FIX...ENDFIXコマンドを使用して、含めることで値の範囲を計算します。

  • EXCLUDE...ENDEXCLUDEコマンドを使用して、除外する値の範囲を計算します。

ノート:

インテリジェント計算がオンの場合、新しく計算されたデータ・ブロックは、データベースの部分計算後にクリーンとしてマークされません。 データベースのサブセットを計算する場合、SET CLEARUPDATESTATUS AFTERコマンドを使用して、新しく計算されたブロックにクリーンのマークが付けられていることを確認できます。 このコマンドを使用すると、Essbaseでは、「インテリジェントな計算」を使用して可能なかぎり効率的にデータベースが再計算されます。

メンバーのリストの計算

メンバー・セット関数は、指定したメンバーに基づいてメンバーのリストを生成します。 たとえば、@IDESCENDANTS関数は、指定されたメンバーのすべての子孫のリストを生成します。 式でメンバー・セット関数を使用する場合、Essbaseは式を計算する前にメンバーのリストを生成します。

次の例では、メンバーTotal Expensesに対して@IDESCENDANTSコマンドを使用すると、Total Expenses自体とその子孫(Marketing、PayrollおよびMisc)のリストが生成されます:

@IDESCENDANTS("Total Expenses");

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ブロックを組み合せて計算パフォーマンスを向上させます。

たとえば、次の計算スクリプトでは、FIXコマンドを使用して、Essbaseでデータベースを一度のみ循環させ、Actual値とBudget値の両方を計算します:

FIX(Actual,Budget)
   CALC DIM(Year, Measures);
ENDFIX

対照的に、次の計算スクリプトでは、2回のFIXコマンドを使用することで、Essbaseがデータベースを循環 : Actualデータ値を計算した後、およびBudgetデータ値を計算した後:

FIX(Actual)
   CALC DIM(Year, Measures);
ENDFIX
FIX(Budget)
   CALC DIM(Year, Measures);
ENDFIX

FIXコマンド内で計算するディメンションのサブセットをFIXすることはできません。 たとえば、CALC DIM操作はMarketディメンション全体を計算しますが、前述のFIXは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

Excludeコマンドの使用

EXCLUDE…ENDEXCLUDEコマンドを使用して、計算から除外するメンバーを定義します。 計算に含めないメンバーを指定する方が、含めるメンバーを定義するよりも簡単な場合があります。