Considerazioni sulla sintassi

  • Utilizzare sempre @LEVMBRS anziché @RELATIVE se in uso nell'intera dimensione.
  • Utilizzare @CHILDREN anziché @RELATIVE, se applicabile.
  • Utilizzare @REMOVE e @LEVMBRS se si desidera solo escludere alcuni membri da un'istruzione FIX.

Esecuzione di calcoli utilizzando date memorizzate in Planning

Planning consente di immettere valori di data. Ad esempio, utilizzando il formato MM/GG/AAAA, una data inizio può essere immessa come 11/01/2019 e una data fine come 06/01/2020. Oracle Essbase memorizza come valori numerici i valori formattati come date. Ad esempio, la data inizio precedente viene memorizzata come 20191101 e la data fine come 201200601. È possibile utilizzare le funzioni di Essbase, ad esempio la funzione @ROUND, @INT o @TRUNCATE, per calcolare il numero di mesi tra qualsiasi data inizio e qualsiasi data fine. Nel seguente esempio viene illustrato come calcolare il numero di mesi tra una data inizio e una data fine utilizzando la funzione @ROUND:

  1. Calcolare il numero di mesi tra l'anno data fine e l'anno data inizio come segue:
    (@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12
    Il risultato di questo calcolo (20200000 – 20190000)/10000 *12 è 12.
  2. Calcolare il numero di mesi tra l'inizio dell'anno data fine e la data fine e aggiungerlo.
    (@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100
    Il risultato del calcolo (20200600 – 20200000)/100 è 6.
  3. Calcolare il numero di mesi tra l'inizio dell'anno data fine e la data inizio e sottrarlo.
    (@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100
    Il risultato del calcolo (20191100 – 20190000)/100 è 11.
  4. Combinare i passi precedenti in un'unica formula (12+6-11) per calcolare il numero di mesi (7) tra la data inizio e la data fine.
    (((@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12) + 
    ((@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100)-
    ((@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100))

Utilizzo della funzione @CURRMBR

La funzione @CURRMBR, che restituisce il nome del membro dimensione attualmente in fase di calcolo, è particolarmente utile per la definizione dell'ambito e la gestione dei calcoli complessi. È tuttavia necessario considerarne l'impatto sulle performance.

Le performance restano invariate se si utilizza la funzione @CURRMBR per una dimensione sparsa perché il blocco corrisponde a un solo membro dimensione sparsa. Si verifica però un rallentamento delle performance di questa funzione se viene utilizzata per una dimensione densa perché esegue i calcoli a livello di blocco e non a livello di cella. Questa funzione, pertanto, calcola tutti i membri dimensione densa, anche se un determinato membro non è presente nella query. Utilizzare quindi la funzione con moderazione in caso di dimensioni dense.

Inoltre, quando viene utilizzata per le dimensioni dense, la funzione @CURRMBR può generare errori o risultati imprevisti se è specificata insieme ad altre funzioni, ad esempio @CONCATENATE. Ad esempio, se un membro calcolato in modo dinamico in una query contiene la formula "Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total")) e la dimensione Account è sparsa, la query verrà eseguita senza errori, purché il conto nella query generi un membro profilo valido. Tuttavia, se la dimensione Account è densa, la query genera l'errore riportato di seguito anche se il conto nella query genera un membro profilo valido.

Error executing formula for [member name] (line 0): attempt to cross a null @ member in function [@X]

Questo errore viene generato perché la funzione @CURRMBR esegue il calcolo a livello di blocco e pertanto calcola tutti i conti nel blocco denso. Non tutti i conti all'interno del blocco generano un membro profilo valido, pertanto visualizzano il messaggio di errore precedente. Per ulteriori informazioni sulla funzione @CURRMBR, fare riferimento alla sezione @CURRMBR nel manuale Oracle Essbase Technical Reference (in lingua inglese).