Abilita calcoli su blocchi potenziali
Quando si utilizza una formula su un membro denso in una dimensione densa, se i valori risultanti provengono da una dimensione densa e l'operando o gli operandi provengono da una dimensione sparsa, Essbase non crea automaticamente i blocchi richiesti.
Nell'esempio riportato di seguito, si supponga di voler creare dati relativi alle vendite e alle spese di budget da dati effettivi esistenti. Vendite e spese sono membri della dimensione Misure dense. Budget ed effettivi sono membri della dimensione Scenario sparso.
FIX(Budget)
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95;)
ENDFIXVendite e spese, i risultati delle equazioni, sono membri dimensione densa; l'operando, Effettivo, si trova in una dimensione sparsa. Poiché Essbase esegue formule membro dense solo su blocchi di dati esistenti, lo script di calcolo non crea i blocchi di dati richiesti e i valori dei dati budget non vengono calcolati per i blocchi che non esistono già.
È possibile risolvere il problema utilizzando le seguenti tecniche:
Copia blocchi esistenti con DATACOPY
È possibile utilizzare il comando DATACOPY negli script di calcolo di memorizzazione a blocchi Essbase per creare un blocco per ogni blocco esistente, quindi eseguire calcoli sui nuovi blocchi.
Ad esempio:
DATACOPY Sales -> Actual TO Sales -> Budget;
DATACOPY Expenses -> Actual TO Expenses -> Budget;
FIX(Budget)
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95;)
ENDFIXEssbase crea blocchi contenenti i valori del budget per ogni blocco effettivo corrispondente esistente. Al termine dei comandi DATACOPY, la parte rimanente dello script cambia i valori.
L'utilizzo di DATACOPY funziona bene in queste situazioni:
-
Esiste una relazione matematica tra i valori nei blocchi esistenti e le loro controparti create dalla DATACOPY.
Ad esempio, nell'esempio precedente, i valori del budget possono essere calcolati in base ai valori effettivi esistenti.
Attenzione
DATACOPY crea i nuovi blocchi con valori identici in tutte le celle dai blocchi di origine. Se la formula viene eseguita solo su una parte del blocco, queste celle copiate rimangono alla fine del calcolo, con conseguente potenziale perdita di valori indesiderati.
-
Nessuno dei blocchi copiati contiene solo valori #MISSING.
Se esistono valori #MISSING, vengono scritti blocchi che contengono solo valori #MISSING. I blocchi #MISSING non necessari richiedono la risorsa Essbase e il tempo di elaborazione.
Vedere anche:
Calcola tutti i blocchi potenziali con SET CREATENONMISSINGBLK
Utilizzare il comando SET CREATENONMISSINGBLK negli script di calcolo della memorizzazione a blocchi di Essbase per limitare i valori indesiderati durante il calcolo delle dimensioni dense o sparse.
Se si è preoccupati per i valori indesiderati, invece di utilizzare DATACOPY, è possibile utilizzare il comando di calcolo SET CREATENONMISSINGBLK ON, che calcola tutti i blocchi potenziali in memoria e quindi memorizza solo i blocchi calcolati che contengono i valori dei dati. Il comando di calcolo SET CREATENONMISSINGBLK può essere utile per il calcolo dei valori nelle dimensioni dense o sparse.
Nell'esempio seguente vengono creati i dati relativi alle vendite e alle spese di budget dai dati effettivi esistenti. Vendite e spese sono membri della dimensione Misure dense. Budget ed effettivi sono membri della dimensione Scenario sparso.
FIX(Budget)
SET CREATENONMISSINGBLK ON
(Sales = Sales -> Actual * 1.1;
Expenses = Expenses -> Actual * .95;)
ENDFIXNota
Se SET CREATEBLOCKONEQ ON è impostato per le dimensioni sparse, SET CREATENONMISSINGBLK ON sostituisce temporaneamente SET CREATEBLOCKONEQ ON fino a quando non viene rilevato un comando SET CREATENONMISSINGBLK OFF o lo script di calcolo viene completato.
Il vantaggio di utilizzare il comando SET CREATENONMISSINGBLK è che, se applicato su membri densi, vengono salvate solo le celle dati interessate dalla formula membro. Lo svantaggio è che troppi blocchi potenziali possono essere materializzati in memoria, probabilmente influenzando le prestazioni di calcolo. Quando si utilizza questo comando, è meglio limitare il numero di blocchi potenziali utilizzando FIX per limitare l'ambito dei blocchi da calcolare.