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:
|
USE_EQUAL_INCREMENT |
Ogni cella foglia che contribuisce alla cella aggiornata viene modificata in base all'espressione seguente:
|
USE_WEIGHTED_ALLOCATION |
Ad ogni cella foglia che contribuisce alla cella aggiornata viene assegnato lo stesso valore in base all'espressione seguente:
|
USE_WEIGHTED_INCREMENT |
Ogni cella foglia che contribuisce alla cella aggiornata viene modificata in base all'espressione seguente:
|
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.
Attenzione |
---|
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.
Attenzione |
---|
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. |
Importante |
---|
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