IF文の使用

  • メンバー式でIF文を使用できます。FIXを使用することはできません。
  • アクセスするブロックの数を減らすには、IF文をFIX文内で使用する必要があります。IF文によって、FIX内のすべてのブロックがメモリーに取り込まれます。
  • 可能な場合は、疎ディメンションでは外部FIX文を使用し、密ディメンションでは内部IF文を使用してください。
  • 計算中にメンバー値の不要な分析が行われないようにするために、可能な場合は、NOTとELSEIFの組合せではなく、ELSEを使用してください。不要な場合は、ELSE文を使用しないでください。
  • 計算メンバー・ブロックの選択を確認して、動的計算の依存関係がない疎メンバーを使用できるかどうかを調べます。
  • 可能な場合は、最も多くのケースがブロック内の最初のIFにヒットするようにIF文を並べます。該当する場合、このようにするためにIF内でNOTを使用します。

    次のスクリプトを考えてみましょう。SalesYTDは、Sample.Basic内のRatiosの子であるとします(「勘定科目」「時間」は密です)。

    SET UPDATECALC OFF;
    "SalesYTD"(
    IF(@ismbr("Jan"))
        "SalesYTD" = "Sales";
    Else
        "SalesYTD"="Sales" + @prior("SalesYTD");
    Endif)

    この例では、データの12分の11がELSE条件を満たす一方で、IF条件を満たすのはデータの12分の1のみです。さらに、SalesYTDメンバーはセル・モードで計算されるため、アウトラインで最初に出現する1月は、IFの順序に関係なく、最初に計算されます。次の例に示すように、IF文でNOTを使用することによって、このスクリプトを最適化できます:

    SET UPDATECALC OFF;
    "SalesYTD"(
    IF(NOT(@ismbr("Jan")))
        "SalesYTD" = "Sales" + @prior("SalesYTD");
    Else
        "SalesYTD"="Sales";
    Endif)