Ottimizzazione delle regole: esempio

Dopo aver identificato i passi di ottimizzazione, modificare la regola business. Assicurarsi che per ciascun passo siano specificate la logica e le condizioni ottimali.

Si consideri la seguente definizione di regola business, che calcola due conti YTD e aggrega quindi i valori nelle dimensioni Prodotto (Product) ed Entità (Entity):

SET UPDATECALC OFF;
/* PASS 1 BEGINS*/  
FIX ("BaseData","Plan","FY17",  "FY17" "FY16")
      "BU Version_1"(
          IF(@ismbr("Jan"))
             "4110_YTD" = "4110"; "4120_YTD" = "4120"; "4130_YTD" = "4130";
             "4140_YTD" = "4140"; "4150_YTD" = "4150";
          Else
             "4110_YTD"="4110" + @prior("4110_YTD"); "4120_YTD"="4120"
                                                                + @prior("4120_YTD");
             "4130_YTD"="4130" + @prior("4130_YTD"); "4140_YTD"="4140"
                                                                + @prior("4140_YTD");
             "4150_YTD"="4150" + @prior("4150_YTD");
          Endif)
  /*  PASS 1 ENDS -- PASS 2 BEGINS*/
      Agg("Entity","Product");
  /*  PASS 2 ENDS */
 ENDFIX

Quando si esegue questa regola in Calculation Manager (fare riferimento alla sezione Identificazione di aree per l'ottimizzazione delle regole) ed è selezionata l'opzione Solo riuscito, la scheda Messaggi di log visualizza un messaggio simile al seguente:
Messaggio di esempio visualizzato durante l'esecuzione di una regola con la selezione dell'opzione Solo riuscito

Un'analisi delle informazioni nel file di log indica che il 99,995% del tempo di esecuzione (79,235 secondi) è utilizzato dal passo 1 e solo lo 0,005% dal passo 2.

Se si deseleziona l'opzione Solo riuscito, vengono visualizzate informazioni sui blocchi e sulle operazioni di lettura e scrittura simili a quelle illustrate nella seguente figura:
Messaggio di esempio visualizzato durante l'esecuzione di una regola senza la selezione dell'opzione Solo riuscito

La definizione di regola precedente presenta i problemi descritti di seguito.

  • Non presenta una correzione per le dimensioni Entità (Entity) e Prodotto (Product) e impone quindi l'esecuzione di tutte le regole a tutti i livelli di queste dimensioni.

  • Il passo 1 calcola senza necessità i livelli superiori. La funzione Agg nel passo 2 esegue questa operazione e sovrascrive ciò che viene eseguito nel passo 1.

È possibile ottimizzare lo script come indicato di seguito.

SET UPDATECALC OFF;
FIX ("BaseData","Plan","FY17")

/* PASS 1 BEGINS*/

        Fix(@LEVMBRS("Entity",0), @LEVMBRS("Product",0))
                "BU Version_1"(
                        IF(@ismbr("Jan"))
                                "4110_YTD" = "4110";
                                "4120_YTD" = "4120";
                        Else
                                "4110_YTD"="4110" + @prior("4110_YTD");
                                "4120_YTD"="4120" + @prior("4120_YTD");
                        Endif)
        ENDFIX
/*  PASS 1 ENDS --  PASS 2 BEGINS*/

    Agg("Entity","Product");

/*  PASS 2 ENDS */

ENDFIX

Quando si esegue la regola aggiornata in Calculation Manager (fare riferimento alla sezione Identificazione di aree per l'ottimizzazione delle regole), la scheda Messaggi di log visualizza un messaggio simile al seguente:


Messaggio di esempio visualizzato durante l'esecuzione di una regola fissa

Un'analisi delle informazioni nel file di log indica che il tempo di esecuzione rilevato per il passo 1 è di 15,901 secondi inferiore rispetto all'esecuzione precedente.

Se si deseleziona l'opzione Solo riuscito, vengono visualizzate informazioni sui blocchi e sulle operazioni di lettura e scrittura simili a quelle illustrate nella seguente figura per il passo 1:
Messaggio di esempio visualizzato durante l'esecuzione di una regola fissa senza l'opzione Solo riuscito

Il confronto delle informazioni relative ai blocchi e alle operazioni di lettura e scrittura con i dati analoghi precedenti l'ottimizzazione indica una riduzione complessiva nelle statistiche di elaborazione della regola business.