Calcoli personalizzati su cubi di memorizzazione di aggregazione

I calcoli personalizzati estendono le funzionalità analitiche di Essbase abilitando l'esecuzione di calcoli ricorrenti sui cubi di memorizzazione di aggregazione (ASO). È possibile indirizzare determinate aree del cubo per calcolare, fornire informazioni su debito, credito e offset per la contabilità.

È possibile scrivere calcoli personalizzati per cubi di memorizzazione di aggregazione che aggiornano le celle di livello target 0. Gli script di calcolo personalizzati sono espressi in MDX.

Utilizzando calcoli personalizzati, è possibile eseguire calcoli matematici di base sui saldi dei conti in un libro giornale e scrivere i risultati nei membri di livello 0 target di un cubo di memorizzazione di aggregazione Essbase. È possibile eseguire calcoli sui saldi contabili o sugli importi fissi e schedulare la ripetizione di ogni periodo contabile.

I calcoli personalizzati possono essere utili quando il cubo viene utilizzato per la generazione di report di General Ledger, in cui è attiva la contabilità a doppia voce. Le voci di debito, ad esempio cespiti e spese, devono essere bilanciate con voci di credito, ad esempio capitale netto e ricavi.

Utilizzare il workflow riportato di seguito per creare ed eseguire calcoli personalizzati.

  • Creare uno script di calcolo espresso in MDX.

  • Selezionare un'area del cubo in cui verrà eseguito il calcolo. Fornire l'area al momento dell'esecuzione utilizzando i parametri target e POV (punto di vista).

  • Se si utilizza l'elaborazione di debiti e crediti, selezionare i membri dare e avere nella struttura per scrivere i valori positivi e negativi. Questi parametri vengono forniti al momento dell'esecuzione.

  • Se si utilizzano voci di offset, selezionare l'area in cui devono essere effettuate le voci di offset. Fornire questo parametro al momento dell'esecuzione utilizzando una tupla MDX. Se un offset non è specificato o è vuoto, il calcolo dell'offset non viene eseguito.

    Nota

    Nella contabilità generale, una voce di compensazione è una misura di controbilanciamento sul lato opposto del libro contabile; ad esempio, un credito di $ 100 a gennaio potrebbe avere un offset di $ 100 aggiunto al lato dare del libro contabile, quindi il libro contabile può essere bilanciato in preparazione di una spesa imminente di tale importo.

  • Eseguire lo script di calcolo personalizzato.

Elenco di criteri di calcolo personalizzati

Quando si progettano calcoli personalizzati per cubi di memorizzazione di aggregazione (ASO) di Essbase, i criteri da considerare includono: POV (area di contesto), script di calcolo MDX, target (dove vengono scritti i risultati), area di origine (riferito da formule), valore di offset facoltativo e membri facoltativi di credito e debito.

La funzionalità di calcolo personalizzato dipende da una serie di criteri specificati. Rivedere questi termini prima di continuare.

Tabella 38-1 Descrizione dei criteri di calcolo personalizzati

Criteri Descrizione

POV

Area simmetrica del database che descrive il contesto in cui vengono eseguiti i calcoli personalizzati.

Impossibile utilizzare i membri attributo per questo argomento.

Script di calcolo

Script di calcolo espresso in MDX.

I membri attributo non possono essere utilizzati nel lato sinistro dell'equazione.

Obiettivo

Argomento tupla espresso in MDX che definisce l'area nel cubo in cui vengono scritti i risultati del calcolo. Questo argomento viene combinato con il lato sinistro di ogni formula e l'offset per determinare dove vengono scritti i risultati e i valori di offset.

Impossibile utilizzare i membri attributo per questo argomento.

(Facoltativo) Offset

Posizione nel database in cui viene scritto un valore di offset per ogni importo di origine.

Impossibile utilizzare i membri attributo per questo argomento.

(Facoltativo) Membri di credito e debito

Nella contabilità a doppia voce, quadratura delle scritture contabili per una transazione. Entrambe sono espressioni membro MDX. Il membro dare indica un membro al quale vengono scritti i valori positivi dei risultati e il membro avere indica un membro al quale vengono scritti i valori negativi dei risultati.

Impossibile utilizzare i membri attributo per questo argomento.

Area origine

Espressione set MDX che specifica l'area del cubo a cui fanno riferimento le formule nello script.

Scrivi ed esegui calcoli personalizzati ASO

Scrivere ed eseguire calcoli personalizzati per cubi di memorizzazione di aggregazione Essbase per apportare aggiornamenti alle celle di livello 0 target. Gli script di calcolo personalizzati sono espressi in MDX. Per eseguire gli script, utilizzare MaxL esegui calcolo.

Scrittura di calcoli personalizzati

Uno script di calcolo personalizzato è un file creato e memorizzato con un'estensione .csc. Creare lo script di calcolo personalizzato con una o una serie di coppie tupla-espressione in MDX, terminate con punto e virgola. La sintassi:

tuple := numeric_value_expression;

Ttupla: una specifica MDX di uno o più membri, in cui due membri non può provenire dalla stessa dimensione. La tupla deve trovarsi sul lato sinistro dell'equazione ed è il fattore principale per determinare dove vengono scritti i risultati del calcolo personalizzato.

Nelle espressioni tupla sono consentiti solo i nomi dei membri. L'uso delle funzioni MDX non è supportato per gli script di calcolo personalizzati.

Nota

Il fattore secondario che determina la destinazione per i risultati è il parametro destinazione e il terzo fattore è il parametro POV. È possibile specificare il secondo e il terzo parametro al momento dell'esecuzione del calcolo, anziché come parte dello script di calcolo.

numeric_value_expression è un'espressione con valori numerici MDX semplice, ad esempio un numero o un'operazione aritmetica. L'espressione deve trovarsi nella parte destra dell'equazione. Sono consentiti solo gli operatori aritmetici. Viene restituito un errore se vengono utilizzati operatori non aritmetici, come le istruzioni AND, OR o IF.

I nomi dei membri possono essere utilizzati nell'espressione valore numerico, ma l'uso delle funzioni membro non è supportato per gli script di calcolo personalizzati.

I membri attributo non possono essere utilizzati sul lato sinistro dell'equazione in uno script di calcolo personalizzato.

È inoltre necessario definire l'area di origine, che funge da suggerimento sulle prestazioni per Essbase. Essbase preleva i dati specificati nell'area di origine e li utilizza per eseguire il calcolo specificato nello script.

Esecuzione di calcoli personalizzati

È possibile eseguire calcoli personalizzati utilizzando l'istruzione MaxL esegui calcolo (storage aggregato).

È inoltre possibile eseguire script di calcolo personalizzati utilizzando l'API, richiamando il metodo API Java IEssPerformCustomCalc.performCustomCalc o la funzione API C EssPerformCustomCalcASO.

È inoltre possibile utilizzare Oracle Hyperion Calculation Manager per progettare un calcolo personalizzato e distribuirlo per l'esecuzione in Enterprise Scheduling Services.

Caso d'uso di esempio per calcoli personalizzati

Questo caso d'uso di esempio per un calcolo personalizzato in un cubo di memorizzazione di aggregazione (ASO) Essbase utilizza un membro di credito, un membro di debito e un offset per eseguire allocazioni di spese di locazione business.

Prendere in considerazione un profilo con le seguenti dimensioni:

  • Società, contenente CompanyA, CompanyB e altri figli.

  • Reparto, contenente reparti numerati come 101, 102 e 103.

  • Conto, in cui il conto 5740 è un conto spese di affitto e SQFT è un conto statistico utilizzato per registrare metraggio quadrato per ogni reparto.

  • Scenario, in cui il membro Effettivo è il punto in cui vengono registrati i dati, e il membro Allocazione è il punto in cui vengono memorizzate le allocazioni e i calcoli personalizzati. Il membro Scenario è un padre che aggrega i membri figlio Effettivo e Allocazione.

  • Anno, dimensione tempo organizzata per mesi e trimestri.

  • Geografia, una dimensione organizzata per stati e città.

  • Tipo di importo, in cui Dare è l'obiettivo e Avere è l'offset.

  • Progetto, una dimensione contenente progetti quali Proj1, Proj2.

Il POV è un'espressione del set MDX che indica dove deve essere eseguito il calcolo personalizzato. Viene specificato come indicato di seguito.

CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
           Descendants( Geography, Geography.Levels(0)) )

DebitMember è un'espressione membro MDX che indica un membro dare a cui devono essere scritti i valori dei risultati positivi. Viene specificato come [BeginningBalance_Debit].

CreditMember è un'espressione membro MDX che indica un membro del credito al quale devono essere scritti i valori dei risultati negativi e di compensazione. Viene specificato come [BeginningBalance_Credit].

Nota

L'offset viene scritto nel membro dare nel caso in cui la somma di tutti i valori dei risultati sia negativa.

L'offset è un'espressione di tupla MDX che indica dove devono essere effettuate le voci di offset. Viene specificato come ([Account_NA], [Project_NA]).

L'espressione di offset viene combinata con Target e POV per determinare la posizione in cui vengono effettuate le voci di offset. Se le dimensioni si sovrappongono, l'ordine di risoluzione della posizione di offset è l'offset, il target e il POV, in tale ordine.

La destinazione è un'espressione di tupla MDX che indica dove scrivere i risultati del calcolo personalizzato. Viene specificato come(Allocation).

L'espressione target viene combinata con POV e il lato sinistro di ogni riga nello script di calcolo personalizzato per determinare la posizione in cui vengono scritti i risultati. Se le dimensioni si sovrappongono, l'ordine di risoluzione della posizione di destinazione è il lato sinistro delle equazioni, il target e il POV, in tale ordine. In questo esempio, i risultati vengono scritti nel membro Allocazione, poiché il target sostituisce il membro Scenario specificato nel POV.

Di seguito è riportato un esempio di script di calcolo personalizzato.

(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) := 
	((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) := 
	((AccountD,Proj1) + 
	  (AccountB,Proj2)) / 2;

Per ogni combinazione nel POV,

  • Lo script di calcolo viene eseguito nel contesto della combinazione POV corrente.

  • Un valore di offset viene scritto nella posizione di destinazione.

Nota

Ogni formula (linea nello script di calcolo) viene eseguita contemporaneamente, anziché in sequenza. Pertanto, non è possibile utilizzare il risultato di una formula in una formula successiva.

Per definire l'area di origine, esaminare lo script di calcolo personalizzato e determinare i membri a cui viene fatto riferimento ai lati destro delle equazioni. L'area di origine deve includere almeno tutti i membri dei lati destro delle istruzioni di assegnazione nello script di calcolo personalizzato.

Definire l'area di origine come un unico set MDX. Se i membri sui lati destro delle equazioni provengono da più di una dimensione, è possibile utilizzare CrossJoin per creare il set da due set. CrossJoin accetta solo due set, pertanto potrebbe essere necessario utilizzare CrossJoin nidificati.

L'area di origine per lo script di calcolo personalizzato sopra riportato è:


Crossjoin(
 {[AccountB], [AccountD]}, 
   Crossjoin(
    {[Proj1], [Proj2]}, {[2007]}
   )
)

Non è necessario includere membri nell'area di origine non assegnati nello script. Ad esempio, se si aggiunge all'area di origine un [AccountC], che non viene utilizzato nello script, tale valore verrà ignorato e potrebbe causare un leggero pregiudizio alle prestazioni.

Non è necessario contabilizzare i numeri nell'area di origine. Ad esempio, l'assegnazione seguente in uno script di calcolo personalizzato non richiede l'aggiunta di alcun elemento all'area di origine: ([Bud Var]):=10.

Ottimizza i calcoli personalizzati con NONEMPTYTUPLE

Utilizzando la proprietà NONEMPTYTUPLE, è possibile ottimizzare uno script di calcolo personalizzato di memorizzazione di aggregazione (ASO) di Essbase per conservare le risorse di memoria saltando le tuple vuote durante il calcolo su data set sparsi di grandi dimensioni.

Poiché i data set di grandi dimensioni possono essere molto sparsi, l'utilizzo della proprietà NONEMPTYTUPLE negli script di calcolo personalizzati consente di ottimizzare lo script per conservare le risorse di memoria.

È possibile creare uno script di calcolo personalizzato con una o una serie di coppie tupla-espressione in MDX, terminate con punto e virgola. Facoltativamente, è possibile filtrare i set di risultati vuoti da calcolare includendo la clausola della proprietà NONEMPTYTUPLE nello script di calcolo personalizzato.

L'utilizzo della clausola di proprietà NONEMPTYTUPLE in uno script di calcolo personalizzato indica a Essbase che il valore della cella calcolato per una tupla è vuoto ogni volta che il valore nonempty_member_list specificato è vuoto.

Sintassi

use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;

Where

  • use_optimized_way: parola chiave letterale necessaria per abilitare l'uso della proprietà NONEMPTYTUPLE nello script di calcolo. Se omesso, le direttive NONEMPTYTUPLE vengono ignorate.

  • tuple: una specifica MDX di uno o più membri in cui due membri non può provenire dalla stessa dimensione.

  • NONEMPTYTUPLE: una proprietà facoltativa da utilizzare per ottimizzare le prestazioni del calcolo. Se si utilizza questa proprietà, deve essere seguita da questa proprietà letterale con nonempty_member_list.

  • nonempty_member_list: uno o più nomi di membri separati da virgole provenienti da dimensioni diverse.

  • numeric_value_expression: un'espressione con valori numerici MDX, ad esempio un numero o un'operazione aritmetica. L'espressione deve trovarsi nella parte destra dell'equazione. Sono consentiti solo gli operatori aritmetici. Viene restituito un errore se vengono utilizzati operatori non aritmetici, come le istruzioni AND, OR o IF.

Esempi

Gli esempi di script di calcolo personalizzato riportati di seguito includono una clausola di proprietà NONEMPTYTUPLE per filtrare le tuple vuote da includere nel passaggio del calcolo.

use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));
([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);

Ulteriori informazioni

Proprietà ottimizzazione MDX