Salto delle tuple vuote per ottimizzare i calcoli

I set di dati possono essere molto sparsi e il calcolo di set di risultati vuoti può ridurre notevolmente la performance. Per evitare il calcolo di set di risultati vuoti, è possibile utilizzare la clausola della proprietà NONEMPTYTUPLE nelle formule di calcolo. L'uso di NONEMPTYTUPLE limita le posizioni in cui il sistema tenta di eseguire i calcoli. Per impostare questa opzione, si definisce una tupla che verrà calcolata solo se non è vuota. Quindi, si definisce un'operazione numerica semplice da applicare alla tupla.

Sintassi

Di seguito si riporta la sintassi per utilizzare NONEMPTYTUPLE.

tuple := NONEMPTYTUPLE (nonempty_member_list) numeric_value_expression;

Dove:

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

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

  • nonempty_member_list: uno o più nomi membro separati da virgole provenienti da dimensioni diverse. In numeric_value_expression deve essere presente una tupla.

  • 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. È necessario utilizzare solo operatori aritmetici. Viene restituito un errore se si utilizzano operatori non aritmetici come AND, OR o IF.

Ad esempio:

[UnitCost] := NONEMPTYTUPLE ([TotalExpense], [NetBalance]) ([TotalExpense], [NetBalance]) / ([Units], [CostPool]);

Questo esempio significa quanto segue:

  1. Esamina la tupla ([TotalExpense], [NetBalance]).

  2. Se la tupla, o intersezione, non è vuota (ossia contiene un valore reale), esegui la seguente operazione:

    Dividi la tupla ([TotalExpense], [NetBalance]) per la tupla ([Units], [CostPool]) per ottenere UnitCost.

  3. Se la tupla è vuota, saltala e calcola l'istanza successiva.

Regole di utilizzo

Una tupla è una combinazione di membri per alcuni set di dimensioni diverse. Ad esempio:

([product2], [account5], customer3])

([myactivity], [yourdepartment])

Di seguito sono riportati i requisiti per aggiungere NONEMPTYTUPLE alla formula delle regole personalizzate di Enterprise Profitability and Cost Management. A, B e C rappresentano le tuple.

  • È possibile utilizzare NONEMPTYTUPLE solo se una tupla ha un valore. In caso contrario, il risultato potrebbe essere imprevisto. Si supponga quanto segue:

    • A=B+C: non è possibile utilizzare NONEMPTYTUPLE su B o C. Se manca B o C, il risultato sarà Nessuno, il che è errato.

      Note:

      Per calcolare A=B+C con NONEMPTYTUPLE, utilizzare due regole:

      • Regola 1: A=A+B con NONEMPTYTUPLE su B

      • Regola 2: A=A+C (o A=A-C) con NONEMPTYTUPLE su C

      In questo caso, quando il valore di B non è vuoto, verrà aggiunto ad A e quando il valore di C non è vuoto, verrà aggiunto ad A.

    • A=B-C: non è possibile utilizzare NONEMPTYTUPLE su B o C. Se B o C è un valore vuoto, il risultato, ossia Nessuno, non sarà corretto, a meno che non si utilizzino due regole come descritto in precedenza.

  • È possibile utilizzare NONEMPTYTUPLE se il risultato è lo stesso a prescindere dalla mancanza della tupla. Si supponga quanto segue:

    • A=B: è possibile utilizzare NONEMPTYTUPLE su B.

    • A=B*C: è possibile utilizzare NONEMPTYTUPLE su B o C.

    • A=B/C: è possibile utilizzare NONEMPTYTUPLE su B o C.

Ricapitolando, è possibile utilizzare NONEMPTYTUPLE in moltiplicazioni o divisioni. Per addizioni e sottrazioni è necessario valutarne singolarmente l'uso per ciascun caso per evitare risultati imprevisti.

Note:

Per informazioni sulla scrittura di regole personalizzate, vedere Sintassi della formula per le regole customizzate. Per informazioni sull'abilitazione di tuple non vuote, fare riferimento a "Come si abilitano le tuple non vuote in Enterprise Profitability and Cost Management?" in Domande frequenti su Enterprise Profitability and Cost Management.