Condividi tramite


UPDATE CUBE (MDX)

Aggiorna il valore della cella foglia o non foglia specificata di un cubo. Facoltativamente il valore della cella non foglia specificata viene allocato alle celle foglia dipendenti.

Sintassi

UPDATE [ CUBE ] Cube_Name SET 
      <update clause> 
         [, <update clause> ...n ]
 
<update clause> ::= 
      Tuple_Expression[.VALUE]= New_Value
      [ 
        NO_ALLOCATION
      | USE_EQUAL_ALLOCATION 
      | USE_EQUAL_INCREMENT 
      | USE_WEIGHTED_ALLOCATION [ BY Weight_Expression] 
      | USE_WEIGHTED_INCREMENT [ BY Weight_Expression]
      ]

Argomenti

  • Cube_Name
    Stringa valida che specifica il nome di un cubo.

  • Tuple_Expression
    Espressione MDX (Multidimensional Expression) valida che restituisce una tupla.

  • New_Value
    Espressione numerica valida.

  • Weight_Expression
    Espressione numerica MDX (Multidimensional Expression) valida che restituisce un valore decimale compreso tra 0 e 1.

Osservazioni

La cella specificata dall'espressione di tupla può essere una cella valida qualsiasi dello spazio multidimensionale, ovvero la cella non deve essere necessariamente una cella foglia. È tuttavia necessario aggregare la cella tramite la funzione di aggregazione Sum. Inoltre la cella non deve includere un membro calcolato nella tupla utilizzata per identificare la cella.

L'istruzione UPDATE CUBE può essere paragonata a una subroutine che genera automaticamente una serie di singole operazioni di writeback delle celle foglia e non foglia per ottenere la somma specificata.

Nella tabella seguente vengono descritti i metodi di allocazione.

Metodo di allocazione

Descrizione

USE_EQUAL_ALLOCATION

Ad ogni cella foglia che contribuisce alla cella aggiornata viene assegnato lo stesso valore in base all'espressione seguente:

<leaf cell value> = 
<New Value> / Count(leaf cells that are contained in <tuple>)

USE_EQUAL_INCREMENT

Ogni cella foglia che contribuisce alla cella aggiornata viene modificata in base all'espressione seguente:

<leaf cell value> = <leaf cell value> + 
(<New Value > - <existing value>) /
Count(leaf cells contained in <tuple>)

USE_WEIGHTED_ALLOCATION

Ad ogni cella foglia che contribuisce alla cella aggiornata viene assegnato lo stesso valore in base all'espressione seguente:

<leaf cell value> = < New Value> * Weight_Expression

USE_WEIGHTED_INCREMENT

Ogni cella foglia che contribuisce alla cella aggiornata viene modificata in base all'espressione seguente:

<leaf cell value> = <leaf cell value> + 
(<New Value> - <existing value>)  * Weight_Expression

Se non viene specificata un'espressione di ponderazione, l'istruzione UPDATE CUBE utilizza implicitamente l'espressione seguente:

Weight_Expression = <leaf cell value> / <existing value>

Un'espressione di ponderazione deve essere espressa come valore decimale compreso tra zero (0) e 1. Questo valore specifica il rapporto del valore allocato che si desidera assegnare alle celle foglia interessate dall'allocazione. È responsabilità dello sviluppatore dell'applicazione client creare espressioni con valori aggregati di rollup uguali ai valori allocati dalle espressioni.

Nota di attenzioneAttenzione

L'applicazione client deve prendere in considerazione l'allocazione di tutte le dimensioni simultaneamente in modo da evitare risultati imprevisti, tra cui valori di rollup non corretti o dati inconsistenti.

Ogni allocazione di UPDATE CUBE deve essere considerata atomica ai fini delle transazioni. Ciò significa che, se una delle operazioni di allocazione ha esito negativo, ad esempio nel caso di errore in una formula o di una violazione di protezione, l'intera operazione UPDATE CUBE avrà esito negativo. Prima dell'elaborazione dei calcoli delle singole operazioni di allocazione viene eseguito uno snapshot dei dati per assicurare che i calcoli risultanti siano corretti.

Nota di attenzioneAttenzione

Quando si utilizza una misura contenente numeri interi, il metodo USE_WEIGHTED_ALLOCATION potrebbe restituire risultati non precisi in seguito a modifiche di arrotondamento incrementali.

Nota importanteImportante

Quando celle aggiornate non si sovrappongono, la proprietà della stringa di connessione Update Isolation Level può essere utilizzata per migliorare le prestazioni di UPDATE CUBE.

Vedere anche

Riferimento

Altre risorse