使用 IF 陳述式

  • IF 陳述式可以用於成員公式;FIX 則否。
  • IF 陳述式應該用於 FIX 陳述式內,以減少要存取的區塊數目。IF 陳述式會將 FIX 內的所有區塊都帶入記憶體。
  • 可能的話,請在稀疏維度上使用外部 FIX 陳述式,並在密集維度上使用內部 IF 陳述式。
  • 可能的話,請使用 ELSE,而非 NOT 與 ELSEIF 的組合,以避免在計算期間對成員值進行不必要的分析。如果 ELSE 不是必要陳述式,則請不要使用該陳述式。
  • 複查 Calc Member Block 選項,以判斷您是否可以使用沒有動態計算相依關係的稀疏成員。
  • 排序 IF 陳述式 (可能的話),而大多數的案例都符合區塊中的第一個 IF。請在 IF 內使用 NOT,來確保此狀況 (可能的話)。

    請考慮使用下列指令碼,其假設 SalesYTDSample.BasicRatios 的子項 (其中科目時間為密集)。

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

    在此範例中,雖然資料的第 11/12 項符合 ELSE 條件,但只有資料的第 1/12 項才符合 IF 條件。此外,SalesYTD 成員是以「儲存格」模式進行計算,表示會先計算一月 (因為它出現在大綱中的第一個),而不管 IF 順序為何。您可以在 IF 陳述式中使用 NOT,以最佳化此指令碼,如下列範例所示:

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