Ottimizzazione dei cubi BSO

L'ottimizzazione dei cubi BSO consente di ridurre le dimensioni del database e prevede i seguenti processi:

  • Sostituzione dei blocchi zero con blocchi #missing
  • Rimozione dei blocchi #missing per ridurre le dimensioni dei database
  • Utilizzo dell'operatore di consolidamento Never per i membri con tipo di dati smartlist, data, testo e percentuale

Rimozione dei blocchi contenenti zero in un cubo BSO

Iniziare con la rimozione dei blocchi zero nelle dimensioni sparse del cubo sostituendoli con blocchi #missing.

Per sostituire i blocchi zero con blocchi #missing, procedere come segue.

  1. Creare una regola business per sostituire i blocchi zero con blocchi #missing.

    Impostare l'ambiente della regola business per l'ottimizzazione della seguente regola business:

    SET UPDATECALC OFF;
    SET CREATENONMISSINGBLK OFF;
    SET CREATEBLOCKONEQ OFF;
    FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
    FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
    

    Note:

    • Anche se UPDATECALC, CREATENONMISSINGBLK e CREATEBLOCKONEQ sono disabilitati per impostazione predefinita, è consigliabile disattivarli in modo esplicito nella regola business.
    • Assicurarsi di sostituire "SparseDim" con i nomi delle dimensioni sparse in cui è necessario sostituire i blocchi zero.
    • Utilizzare FIXPARALLEL per migliorare le performance, ad esempio FIXPARALLEL(4, @RELATIVE("Scenario",0)).
    • Assicurarsi di specificare ENDFIXPARALLEL.
  2. Utilizzare uno dei seguenti pattern di calcolo ottimizzati per modificare i blocchi zero in blocchi #missing. Selezionare il pattern di calcolo con performance migliori a seconda della struttura della dimensione, del modello di dati e dei processi.

    Pattern di calcolo 1 (per il calcolo di dimensioni dense o sparse)

    Questo calcolo restituisce il valore originale e modifica i valori zero in #missing.

    "DenseMbr" = "DenseMbr" * "DenseMbr" / "DenseMbr";
    "SparseMbr" = "SparseMbr" * "SparseMbr" / "SparseMbr";

    Pattern di calcolo 2 (per membri densi solo in modalità blocco)

    "DenseBlockHeader" (
        @CALCMODE(BLOCK);
           IF ("DenseMbr" == 0) 
               "DenseMbr" = #Missing;
           ENDIF

    Note:

    sostituire DenseMbr, SparseMbr e DenseBlockHeader con nomi effettivi.

Rimozione dei blocchi #Missing dai cubi

Rimuovere i blocchi #missing per ridurre le dimensioni dei database BSO. Utilizzare uno dei seguenti due metodi per cancellare i blocchi #missing.

Metodo 1

Eseguire una ristrutturazione densa esplicita.

In Planning, questo processo può essere eseguito manualmente oppure mediante un job. Le ristrutturazioni dei database possono essere eseguite anche utilizzando EPM Automate e le API REST.

Per eseguire una ristrutturazione del database mediante Calculation Manager, procedere come segue.

  1. Aprire Calculation Manager. In Navigator, selezionare Regole da Creazione e gestione.
  2. Fare clic su Azioni e quindi selezionare Proprietà database.
  3. In Vista Enterprise espandere il database contenente il cubo che si desidera ristrutturare.
  4. Fare clic con il pulsante destro del mouse sul cubo che si desidera ristrutturare e quindi selezionare Ristruttura database.

Fonti di informazioni:

  • Comando restructureCube nella Guida Working with EPM Automate for Oracle Enterprise Performance Management Cloud (in lingua inglese)
  • Ristrutturazione del cubo nella API REST per Oracle Enterprise Performance Management Cloud

Metodo 2

Cancellare tutti i dati. Ricaricare tutti i dati dai file precedentemente caricati nell'ambiente.

Utilizzo dell'operatore di consolidamento Never per i membri con tipo di dati SmartList, Date, Text e Percentage

I membri delle dimensioni il cui tipo di dati è smartlist, data, testo e percentuale devono utilizzare l'operatore di consolidamento Never. L'utilizzo dell'operatore di consolidamento Addition comporta l'incremento delle dimensioni dei cubi senza l'aggiunta di alcun valore. L'utilizzo dell'operatore di consolidamento Ignore eviterà solo l'aggiunta all'interno della dimensione del membro, ma non eviterà il rollup dei valori di altre dimensioni. Questo scenario può potenzialmente creare blocchi non necessari.