Verwendung von IF-Anweisungen

  • Eine IF-Anweisung kann in einer Elementformel verwendet werden. Für die FIX-Anweisung gilt dies nicht.
  • Die IF-Anweisung sollte in FIX-Anweisungen verwendet werden, um die Anzahl an Blöcken zu reduzieren, auf die zugegriffen wird. Mit der IF-Anweisung werden alle Blöcke innerhalb der FIX-Anweisung gespeichert.
  • Verwenden Sie nach Möglichkeit äußere FIX-Anweisungen für dünn besetzte Dimensionen und innere IF-Anweisungen für dicht besetzte Dimensionen.
  • Verwenden Sie nach Möglichkeit ELSE anstelle einer Kombination aus NOT und ELSEIF, um eine unnötige Analyse von Elementwerten während der Berechnung zu vermeiden. Verwenden Sie eine ELSE-Anweisung nur, wenn sie erforderlich ist.
  • Prüfen Sie den ausgewählten Berechnungselementblock, um festzustellen, ob Sie ein dünn besetztes Element ohne Abhängigkeiten in der dynamischen Berechnung verwenden können.
  • Ordnen Sie IF-Anweisungen nach Möglichkeit so an, dass die höchste Anzahl an Fällen die erste IF-Anweisung im Block erfüllt. Verwenden Sie NOT innerhalb von IF, um dies sicherzustellen, falls möglich.

    Beachten Sie das folgende Skript, bei dem angenommen wird, dass SalesYTD ein untergeordnetes Element von Ratios in Sample.Basic ist (wobei Accounts und Time dicht besetzt sind).

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

    In diesem Beispiel erfüllen 11/12 der Daten die ELSE-Bedingung, wohingegen nur 1/12 der Daten die IF-Bedingung erfüllen. Das Element "SalesYTD" wird außerdem im Zellenmodus berechnet. Dies bedeutet, dass der Monat Januar unabhängig von der IF-Reihenfolge als erstes berechnet wird, da er in der Modellstruktur an erster Stelle steht. Sie können dieses Skript optimieren, indem Sie NOT in der IF-Anweisung wie im folgenden Beispiel verwenden:

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