Ottimizzazione formula Essbase
Per ottimizzare l'elaborazione delle formule di memorizzazione a blocchi di Essbase per il calcolo e la query, è possibile evitare le formule utilizzando il consolidamento anziché il calcolo, utilizzare formule più semplici quando possibile, eseguire operazioni per ottimizzare le prestazioni per formule complesse o passare alla modalità ibrida.
È possibile ottenere miglioramenti significativi nelle prestazioni di calcolo utilizzando con attenzione le formule nel profilo cubo. Ad esempio, è possibile ottenere prestazioni di calcolo migliori posizionando formule sui membri nella struttura del database anziché collocare le formule in uno script di calcolo. Vedere Sviluppa formule per cubi di storage a blocchi.
Nelle sezioni successive viene descritto come gestire i problemi relativi alle formule che influiscono sulle prestazioni di calcolo nei cubi di memorizzazione a blocchi non in modalità ibrida.
Per l'ottimizzazione della modalità ibrida, fare riferimento invece alla modalità ibrida per l'elaborazione analitica rapida.
Consolidamento membri Essbase
L'utilizzo del profilo cubo per aggregare i valori dei dati di Essbase è più efficiente dell'utilizzo di una formula per calcolarli.
Ad esempio, il consolidamento dei membri 100-10, 100-20 e 100-30 nel membro 100, come illustrato di seguito, è più efficiente dell'applicazione della seguente formula al membro 100:
100-10 + 100-20 + 100-30Figura 34-1 Esempio di consolidamento

Fare riferimento a Esempi di consolidamento membri.
Formule membro Essbase semplici
Se una formula Essbase è semplice, influisce sulle prestazioni del calcolo della memorizzazione a blocchi meno che non su formule complesse. La dimensione del blocco è anche un fattore di prestazioni. Le formule più semplici sono quelle che non utilizzano riferimenti dimensionali incrociati, funzioni intervallo, funzioni finanziarie o funzioni relazione.
Se si utilizza una formula semplice e la dimensione del blocco non è insolitamente grande, è possibile posizionare la formula su un membro di una dimensione sparsa o densa senza influire in modo significativo sulle prestazioni di calcolo. Maggiore è la dimensione del blocco, maggiore sarà l'impatto delle formule semplici sulle prestazioni di calcolo.
Una formula semplice è, ad esempio, un rapporto o una percentuale e soddisfa i seguenti requisiti:
-
Non fa riferimento a valori di una dimensione diversa (sparsa o densa). Ad esempio, una formula semplice non può fare riferimento a Prodotto -> Gen.
-
Non utilizza funzioni di intervallo. Ad esempio, una formula semplice non può utilizzare @AVGRANGE, @MAXRANGE, @MINRANGE o @SUMRANGE.
-
Non utilizza funzioni di relazione o finanziarie. Ad esempio, una formula semplice non può utilizzare @ANCESTVAL, @NEXT, @PARENTVAL, @SHIFT, @ACCUM o @GROWTH.
Riferimenti
Per informazioni sulla relazione tra dimensione blocco e prestazioni di calcolo, vedere Dimensione blocco e densità blocco.
Per informazioni sull'impatto delle formule sulle prestazioni del calcolo, fare riferimento a Calcolo bottom-up e top-down.
Funzioni intervallo e finanziariaFormule membro Essbase complesse
Se una formula Essbase è complessa, influisce sulle prestazioni del calcolo della memorizzazione a blocchi più delle formule più semplici. Per ottimizzare formule complesse, applicarle in dimensioni dense, aumentare la densità e utilizzare FIX per restringere l'ambito.
Se si utilizza una formula complessa, è possibile migliorare le prestazioni applicando le linee guida riportate di seguito.
-
Se possibile, applicare la formula a un membro in una dimensione densa. Se non è possibile, determinare se è possibile modificare i calcoli dall'alto verso il basso in bottom-up (fare riferimento a Formule sulle dimensioni sparse nei profili di grandi dimensioni).
-
Utilizzare il comando FIX in uno script di calcolo per calcolare solo i blocchi di dati richiesti.
-
Aumentare la densità del database (rapporto tra blocchi di dati esistenti e blocchi di dati possibili).
Una formula complessa è quella che soddisfa uno dei seguenti requisiti:
-
Fa riferimento a uno o più membri in una dimensione diversa (sparsa o densa), ad esempio Prodotto -> Jan.
-
Utilizza una o più funzioni di intervallo, ad esempio @AVGRANGE, @MAXRANGE, @MINRANGE o @SUMRANGE.
-
Utilizza funzioni finanziarie o relazionali, ad esempio @ANCESTVAL, @NEXT, @PARENTVAL, @SHIFT, @ACCUM o @GROWTH.
Se applicate a membri di dimensioni sparse, le formule complesse creano più costi indiretti di calcolo e quindi prestazioni lente. Questo problema si verifica perché la presenza di formule complesse richiede che Essbase esegua calcoli su tutti i possibili e su tutti i blocchi di dati esistenti correlati al membro con la formula complessa. La presenza di una relazione o di una funzione finanziaria su un membro della dimensione sparsa fa sì che Essbase esegua calcoli su tutti i blocchi, sia possibili che esistenti, aumentando ulteriormente il costo indiretto.
Pertanto, una formula complessa che include una relazione o una funzione finanziaria crea un aumento dei costi indiretti maggiore di una formula complessa che non include una relazione o una funzione finanziaria.
Due esempi illustrano il sovraccarico di formule complesse:
-
Se il cubo dispone di 90 blocchi di dati esistenti e 100 blocchi di dati potenziali, il costo comune per le formule complesse non è elevato, non è possibile leggere e scrivere valori in più di 10 blocchi aggiuntivi.
-
Se il cubo ha 10 blocchi di dati esistenti e 100 potenziali blocchi di dati, il costo comune è fino a dieci volte quello che sarebbe senza la formula complessa (a seconda della struttura del profilo e di altri fattori), fino a 90 blocchi aggiuntivi da leggere e scrivere.
In tutti i casi, minore è il rapporto tra i blocchi di dati esistenti e i blocchi di dati possibili, maggiore è il sovraccarico delle prestazioni di calcolo e più lente sono le prestazioni.
Riferimenti
Per informazioni sulla relazione tra dimensione blocco e prestazioni di calcolo, vedere Dimensione blocco e densità blocco.
Per informazioni sull'impatto delle formule sulle prestazioni del calcolo, fare riferimento a Calcolo bottom-up e top-down.
Funzioni intervallo e finanziariaFormule su dimensioni sparse in grandi strutture
Per ottimizzare il calcolo di formule complesse su dimensioni sparse nei profili dei cubi di memorizzazione a blocchi di grandi dimensioni di Essbase, è possibile forzare un calcolo bottom-up delle formule.
È possibile utilizzare il comando di calcolo SET FRMLBOTTOMUP per ottimizzare il calcolo delle formule nelle dimensioni sparse nei profili di database di grandi dimensioni. Con questo comando è possibile forzare un calcolo bottom-up sulle formule membro sparse che altrimenti verrebbero calcolate dall'alto verso il basso. Fare riferimento a Calcolo bottom-up e top-down.
La forzatura di un calcolo bottom-up su una formula top-down consente un uso più efficiente dei comandi CALC ALL e CALC DIM. Esaminare le discussioni sul comando di calcolo SET FRMLBOTTOMUP e sull'impostazione di configurazione CALCOPTFRMLBOTTOMUP.
Valori costanti assegnati ai membri in una dimensione sparsa
Se si assegna una costante a un membro in una dimensione sparsa, Essbase crea automaticamente un blocco dati per ogni combinazione di membri della dimensione sparsa che contiene il membro. Per limitare la creazione dei blocchi, è possibile utilizzare FIX.
Ad esempio, si supponga che un membro o una formula script di calcolo contenga la seguente espressione:
California = 120;In questa formula, la California è un membro di una dimensione sparsa e 120 è un valore costante. Essbase crea automaticamente tutti i blocchi di dati possibili per la California e assegna il valore 120 a tutte le celle di dati. È possibile creare migliaia di blocchi di dati. Per migliorare le prestazioni, creare una formula che non crei valori non necessari.
Per assegnare costanti in una dimensione sparsa solo alle intersezioni che richiedono un valore, utilizzare FIX in modo simile al seguente esempio:
FIX(Colas,Misc,Actual)
California = 120;
ENDFIXIn questo esempio, Colas è un membro della dimensione sparsa, Prodotto; Effettivo è un membro della dimensione densa, Scenario; e Misc è un membro della dimensione densa, Misure. Il valore 120 viene assegnato a qualsiasi intersezione tra California (nella dimensione Mercato), Effettivo (nella dimensione Scenario), Varie (nella dimensione Misure), Colas (nella dimensione Prodotto) e qualsiasi membro della dimensione Anno, poiché nello script non è specificato un membro specifico di Anno.
Poiché Sample Basic include solo due dimensioni sparse, questo esempio interessa un solo blocco. Se esistevano più dimensioni sparse, Essbase garantirebbe blocchi di dati per tutte le combinazioni delle dimensioni sparse con California e Colas, creando blocchi se necessario. Nei nuovi blocchi Essbase imposta i valori Misure e Scenario (diversi da quelli a cui è stato assegnato il valore 120) su #MISSING.
Valori non costanti assegnati a membri in una dimensione sparsa
Per impedire temporaneamente la creazione indesiderata di blocchi quando si assegnano valori non costanti ai membri di una dimensione sparsa, è possibile utilizzare il comando SET CREATEBLOCKONEQ OFF in uno script di calcolo Essbase.
Se si assegnano valori non costanti ai membri di una dimensione sparsa, i blocchi vengono creati in base all'impostazione Crea blocchi su equazioni. L'impostazione Crea blocchi su equazioni viene definita a livello di database come proprietà di database. Vedere Valori non costanti.
Negli script di calcolo è possibile sostituire temporaneamente l'impostazione Crea blocchi su equazioni. Considerare gli effetti del seguente calcolo quando West non ha un valore e l'opzione Crea blocchi su equazioni è abilitata:
West = California + 120;I blocchi non necessari possono essere creati per tutte le intersezioni di membri sparsi con West, anche se il valore di blocco corrispondente è #MISSING per tutti i figli di West. Soprattutto in un grande database, la creazione e l'elaborazione di blocchi non necessari richiede tempi di elaborazione aggiuntivi.
Per controllare la creazione di blocchi quando si assegnano valori non costanti ai membri di una dimensione sparsa, utilizzare il comando di calcolo SET CREATEBLOCKONEQ ON | OFF, come mostrato nello script seguente:
FIX (Colas);
SET CREATEBLOCKONEQ OFF
West = California + 120;
SET CREATEBLOCKONEQ ON
East = “New York” + 100;
ENDFIXPoiché l'impostazione Crea blocco su equazione è disabilitata all'inizio dello script, i blocchi Ovest vengono creati solo quando esistono valori per i figli Ovest. In seguito, poiché l'impostazione Crea blocco su equazione è abilitata, vengono creati tutti i blocchi per Est.
Nota
L'utilizzo di SET CREATEBLOCKONEQ influisce solo sulla creazione di blocchi durante l'esecuzione dello script di calcolo che contiene questo comando. Questo comando non modifica l'impostazione complessiva del database per Crea blocchi su equazioni.
Operatori multidimensionali nelle formule membro
Quando si progettano le formule dei membri di memorizzazione a blocchi di Essbase, prestare attenzione quando si utilizza un operatore cross-dimensionale ( -> ) sul lato sinistro di un'equazione o in equazioni su dimensioni dense.
Lato sinistro di un'equazione
Per velocizzare le prestazioni degli script di calcolo, utilizzare FIX nello script di calcolo per qualificare l'uso di una formula anziché di una formula che include un operatore cross-dimensionale a sinistra di un'equazione.
Si supponga ad esempio di voler aumentare del 5% i valori Jan -> Sales in Sample.Basic. Per migliorare le prestazioni calcolando solo le combinazioni di membri pertinenti, utilizzare il comando FIX:
FIX(Jan)
Sales = Sales * .05;
ENDFIXCon il comando FIX, Essbase calcola la formula solo per le combinazioni di membri specificate, in questo esempio per le combinazioni che includono Jan.
Confrontare questa tecnica con l'approccio dell'operatore cross-dimensionale più lento. Nell'esempio precedente, nel profilo del database viene inserita la formula seguente nel membro Sales:
Sales(Sales -> Jan = Sales -> Jan * .05;)Mentre Essbase esegue il ciclo del database, calcola la formula per ogni combinazione di membri che include un membro della dimensione contrassegnata come tempo (gen, feb, mar e così via), anche se è necessario calcolare solo le combinazioni di gennaio.
Vedere Use the FIX Command.
Equazioni in una dimensione densa
Quando si utilizza un operatore cross-dimensionale in un'equazione in una dimensione densa, Essbase non crea automaticamente i blocchi necessari se si applicano entrambe le condizioni riportate di seguito.
-
I valori risultanti provengono da una dimensione densa.
-
L'operando o gli operandi provengono da una dimensione sparsa.
È possibile utilizzare le tecniche riportate di seguito per creare i blocchi ed evitare il problema delle prestazioni.
-
Assicurarsi che i membri dei risultati provengano da una dimensione sparsa, non da una dimensione densa. In questo esempio, il membro dei risultati Budget proviene da una dimensione sparsa:
FIX(Sales) Budget = Actual * 1.1; ENDFIX FIX(Expenses) Budget = Actual * .95; ENDFIX -
Utilizzare il comando di calcolo DATACOPY per creare e quindi calcolare i blocchi richiesti. Vedere Copia di blocchi esistenti con DATACOPY.
-
Utilizzare una formula membro contenente le equazioni membro dense:
FIX(Sales, Expenses) Budget (Sales = Sales -> Actual * 1.1; Expenses = Expenses -> Actual * .95;) ENDFIX
Gestisci livelli esecuzione formula
È possibile evitare cicli eccessivi di formule Essbase ricorsive configurando CALCLIMITFORMULARECURSION.
Le formule in un profilo di memorizzazione a blocchi possono avere dipendenze l'una dall'altra in modo da causare un'esecuzione nidificata di formule all'interno di uno o più blocchi. Tali formule sono chiamate formule ricorsive. A volte le formule ricorsive generano loop di grandi dimensioni o senza fine che comportano una terminazione anomala del server.
Per evitare interruzioni anomale, è possibile utilizzare l'impostazione di configurazione CALCLIMITFORMULARECURSION per arrestare l'esecuzione di una formula che supera il numero predefinito di livelli di esecuzione.