27 Sviluppo di macro di calcolo definite in modo personalizzato

Le macro personalizzate (CDM) di Essbase consentono di combinare più funzioni di calcolo in un'unica funzione. È possibile utilizzarli negli script di calcolo o nelle formule.

Creare ed eseguire il test delle nuove macro localmente all'interno di un'applicazione di test. Registra i CDM a livello globale solo dopo averli testati in un'applicazione di test e che sono pronti per essere utilizzati in un ambiente di produzione.

Per creare e gestire i CDM, è necessario disporre dell'autorizzazione Database Manager o di un'autorizzazione successiva.

I CDM sono supportati solo per cubi di memorizzazione in blocchi.

Nome macro customizzate

I nomi delle macro personalizzate (CDM) di Essbase devono essere univoci e iniziare con il simbolo @. Le macro locali vengono anteposte al nome dell'applicazione.

Per denominare i CDM, attenersi alle linee guida riportate di seguito.

  • Avviare il nome della macro con il simbolo "@"; ad esempio, @MYMACRO. Il resto di un nome può contenere lettere, numeri e i seguenti simboli: @, #, $ e _. I nomi delle macro non devono contenere spazi.

  • Per le macro che vengono chiamate solo da altre macro, avviare il nome della macro con "@_", per distinguerlo dalle macro e dalle funzioni di uso generale.

  • Assegnare nomi univoci alle macro. Inoltre, un nome di macro deve essere diverso dai nomi delle funzioni definite in modo personalizzato e dai nomi delle funzioni di calcolo esistenti.

    Nota

    Se un'applicazione contiene una macro locale con lo stesso nome di una macro globale, la macro locale ha la precedenza e viene utilizzata per il calcolo.

  • Per le macro locali, è necessario anteporre il nome dell'applicazione al nome della macro, separando il nome dell'applicazione dal nome della macro con un punto:

    AppName.@MacroName

    Ad esempio:

    Sample.@MYMACRO
  • Poiché le macro globali sono disponibili per qualsiasi applicazione in esecuzione sul server Essbase in cui è stata creata la macro, non è necessario assegnare un nome all'applicazione.

Crea macro customizzate

Quando si crea una macro definita personalizzata (CDM), Essbase la registra in un catalogo. La macro può essere globale o locale per un'applicazione. È quindi possibile utilizzarla nelle formule e negli script di calcolo finché la macro non viene rimossa dal catalogo.

È possibile registrare un CDM nei modi seguenti:

  • Come locale, in cui la macro è disponibile solo nell'applicazione Essbase in cui è stata creata

  • Globale, in cui la macro è disponibile per tutte le applicazioni Essbase in esecuzione sul server Essbase in cui è stata creata la macro

Per creare un CDM, procedere come segue.

Utilizzare l'istruzione create macro MaxL.

La seguente istruzione MaxL crea una macro locale denominata @COUNTRANGE da utilizzare nell'applicazione di esempio:

create macro Sample.'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';

L'istruzione MaxL seguente crea una macro globale denominata @COUNTRANGE:

create macro'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';

Implementa macro customizzate

Utilizzare le macro personalizzate (CDM) nello stesso modo in cui si utilizzano i comandi di calcolo nativi di Essbase: chiamandoli in script di calcolo o associandoli a formule di profilo.

Per utilizzare un CDM:

  1. Creare o aprire uno script o una formula di calcolo esistente.
    • Se è stata registrata localmente, è necessario utilizzare uno script di calcolo o una formula all'interno dell'applicazione in cui è stata creata la macro.

    • Se è stato registrato a livello globale, è possibile utilizzare qualsiasi script o formula di calcolo all'interno di qualsiasi applicazione nel server Essbase.

  2. Aggiungere il CDM allo script di calcolo o alla formula.

    Ad esempio, per utilizzare la macro @COUNTRANGE definita in modo personalizzato mostrata in precedenza in questo capitolo, creare il seguente script di calcolo:

    CountMbr = @COUNTRANGE(Sales, Jan:Dec);

    Utilizzare questo script di calcolo con il database Sample.Basic oppure sostituire "Sales, Jan:Dec" con un intervallo di membri in un database di test.

  3. Salvare lo script di calcolo o la formula, quindi eseguirlo come al solito.

Visualizza macro customizzate

Visualizzare una macro definita personalizzata (CDM) in Essbase per determinare se è stata creata correttamente e se è di ambito locale o globale.

Per visualizzare un CDM, utilizzare l'istruzione MaxL macro di visualizzazione.

Esempi

La seguente istruzione MaxL visualizza solo le macro definite nell'applicazione di esempio:

display macro on application Sample;

La seguente istruzione MaxL visualizza tutte le macro globali e locali, se si dispone dell'autorizzazione per visualizzarle:

display macro;

Aggiorna macro customizzate

Per modificare la sintassi o il funzionamento di una macro (CDM) definita in Essbase, determinare innanzitutto se l'ambito è locale o globale, quindi utilizzare l'istruzione MaxL create or replace macro per aggiornarne la definizione.

Per aggiornare un CDM:

  1. Determinare se la macro è registrata localmente o globalmente.
  2. Per aggiornare la definizione della macro, utilizzare l'istruzione create macro MaxL.

Esempi

La seguente istruzione MaxL modifica la macro locale @COUNTRANGE, utilizzata solo nell'applicazione di esempio:

create or replace macro Sample.'@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';

La seguente istruzione MaxL modifica la macro globale @COUNTRANGE:

create or replace macro '@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';

Copia macro customizzate

È possibile copiare le macro personalizzate (CDM) in qualsiasi server Essbase e applicazione a cui si dispone dell'accesso appropriato. Il livello di autorizzazione dell'applicazione deve essere Database Manager o superiore.

Per copiare un CDM, utilizzare l'istruzione MaxL create or replace macro.

Esempio

La seguente istruzione MaxL crea una copia della macro @COVARIANCE:

create macro Sample.'@COVARIANCE2'(single, single) as '@COVARIANCE'(single, single);

Rimuovi macro customizzate

Per rimuovere una macro definita personalizzata (CDM) da Essbase, determinare innanzitutto se si tratta di una macro locale o globale, quindi utilizzare l'istruzione MaxL drop macro.

Per rimuovere un CDM:

  1. Determinare se la macro è registrata localmente o globalmente.
  2. Verificare che nessun script o formula di calcolo utilizzi il CDM.
  3. Per rimuovere la macro dal catalogo delle macro, utilizzare l'istruzione drop macro MaxL.
  4. Riavviare tutte le applicazioni associate alla macro.

La seguente istruzione MaxL rimuove la macro locale @COUNTRANGE, utilizzata solo nell'applicazione di esempio:

drop macro Sample.'@COUNTRANGE';

La seguente istruzione MaxL rimuove la macro globale @COUNTRANGE:

drop macro '@COUNTRANGE';

Aggiorna il catalogo delle macro definite in modo personalizzato

Aggiornare il catalogo Essbase delle macro personalizzate (CDM) dopo aver aggiunto, aggiornato o rimosso le macro. Utilizzare l'istruzione MaxL Aggiorna definizioni personalizzate se le modifiche sono locali oppure riavviare il server Essbase se le modifiche sono globali.

Per aggiornare il catalogo dei CDM per tutte le applicazioni su un server, riavviare il server. Vedere Avvia, arresta e controlla i server per le distribuzioni indipendenti oppure Usa comandi per avviare, arrestare e visualizzare lo stato dei processi per la distribuzione dello stack su OCI.

Per aggiornare il catalogo dei CDM per un'applicazione, utilizzare l'istruzione Aggiorna definizioni personalizzate MaxL.

Ad esempio, la seguente istruzione MaxL aggiorna il catalogo dei CDM per l'applicazione di esempio:

refresh custom definition on application sample;