Utilizzo delle istruzioni IF

  • Un'istruzione IF, a differenza di un'istruzione FIX, può essere utilizzata nella formula membro.
  • È opportuno utilizzare un'istruzione IF all'interno delle istruzioni FIX per ridurre il numero dei blocchi a cui è necessario accedere. L'istruzione IF inserisce tutti i blocchi all'interno dell'istruzione FIX in memoria.
  • Ove possibile, utilizzare istruzioni FIX esterne per le dimensioni sparse e istruzioni IF interne per le dimensioni dense.
  • Utilizzare ELSE invece di una combinazione di NOT ed ELSEIF, ove possibile, per evitare un'analisi non necessaria dei valori membro durante il calcolo. Non utilizzare un'istruzione ELSE, se non è necessario.
  • Esaminare la scelta del blocco membro di calcolo per determinare se è possibile utilizzare un membro sparso senza dipendenze da calcolo dinamico.
  • Ordinare le istruzioni IF, se possibile, in cui il maggior numero di casi soddisfa la prima condizione IF nel blocco. Utilizzare NOT all'interno dell'istruzione IF per garantire che ciò avvenga, se applicabile.

    Considerare lo script riportato di seguito, in cui si presuppone che SalesYTD sia un figlio di Ratios in Sample.Basic (dove Conti e Ora sono dimensioni dense).

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

    In questo esempio, mentre undici dodicesimi dei dati soddisfano la condizione ELSE, solo un dodicesimo dei dati soddisfa la condizione IF. Inoltre, il membro SalesYTD viene calcolato in modalità cella. Pertanto, gennaio viene calcolato per primo, indipendentemente dall'ordine delle condizioni IF, perché viene visualizzato per primo nel profilo. È possibile ottimizzare questo script utilizzando NOT nell'istruzione IF, come illustrato nel seguente esempio:

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