構文に関する考慮事項

  • ディメンション全体で使用する場合は、常に、@RELATIVEではなく@LEVMBRSを使用します。
  • 該当する場合、@RELATIVEではなく@CHILDRENを使用します。
  • FIX文から一部のメンバーのみを除外する場合は、@REMOVEおよび@LEVMBRSを使用します。

Planningで格納された日付を使用した計算の実行

Planningでは、日付値を入力できます。たとえば、MM/DD/YYYYフォーマットを使用すると、開始日を11/01/2019として入力し、終了日を06/01/2020として入力できます。Oracle Essbaseでは、日付フォーマットが設定された値は数値として格納されます。たとえば、前述の開始日は20191101として格納され、終了日は20200601として格納されます。@ROUND関数、@INT関数、@TRUNCATE関数などのEssbase関数を使用して、開始日と終了日の間の月数を計算できます。次の例では、@ROUND関数を使用して、開始日と終了日の間の月数を計算する方法を示します:

  1. 終了日の年と開始日の年の間の月数を次のように計算します:
    (@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12
    この計算(20200000 – 20190000)/10000 *12の結果は12です。
  2. 終了日の年の開始と終了日の間の月数を計算し、加算します。
    (@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100
    計算(20200600 – 20200000)/100の結果は6です。
  3. 開始日の年の開始と開始日の間の月数を計算し、減算します。
    (@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100
    計算(20191100 – 20190000)/100の結果は11です。
  4. 前述の手順を1つの式(12+6-11)にまとめて、開始日と終了日の間の月数(7)を計算します。
    (((@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12) + 
    ((@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100)-
    ((@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100))

@CURRMBR関数の使用

現在計算中のディメンション・メンバーの名前を返す@CURRMBR関数は、複雑な計算の範囲指定や管理に特に役立ちます。ただし、パフォーマンスに及ぼす影響を考慮する必要があります。

疎ディメンションで@CURRMBR関数を使用する場合、ブロックは1つの疎ディメンション・メンバーのみに対応するため、パフォーマンスには影響しません。ただし、密ディメンションで使用すると、この関数のパフォーマンスは低下します。これは、セル・レベルではなく、ブロック・レベルで計算が実行されるためです。その結果、特定の密ディメンション・メンバーが問合せに存在しない場合でも、この関数ではすべての密ディメンション・メンバーが計算されます。したがって、この関数は密ディメンションではやむを得ない場合にのみ使用してください。

さらに、@CURRMBR関数を密ディメンションで使用すると、@CONCATENATEなどの他の関数とともに使用した場合に、予期しない結果やエラーが発生することがあります。たとえば、問合せ内の動的計算メンバーに式"Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total"))が含まれ、かつ、「勘定科目」ディメンションが疎である場合、問合せ内の勘定科目によって有効なアウトライン・メンバーが生成されるかぎり、問合せはエラーなしで実行されます。ただし、「勘定科目」ディメンションが密である場合は、問合せ内の勘定科目によって有効なアウトライン・メンバーが生成されるとしても、問合せで次のエラーが発生します。

Error executing formula for [member name] (line 0): attempt to cross a null @ member in function [@X]

@CURRMBR関数ではブロック・レベルで計算が実行されるため、密ブロック内のすべての勘定科目が計算されることによって、このエラーが発生します。ブロック内のすべての勘定科目によって有効なアウトライン・メンバーが生成されるわけではないため、前述のエラー・メッセージが表示されます。@CURRMBR関数の詳細は、Oracle Essbaseテクニカル・リファレンス@CURRMBRを参照してください。