Istruzione UPDATE CUBE (MDX)
L'istruzione UPDATE CUBE viene utilizzata per eseguire il writeback dei dati in qualsiasi cella di un cubo aggregato al relativo elemento padre mediante l'aggregazione SUM.
Sintassi
UPDATE [ CUBE ] Cube_Name
SET
<update clause>
[, <update clause> ...n ]
<update clause> ::=
Tuple_Expression[.VALUE]= New_Value
[
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
È possibile aggiornare il valore di una cella foglia o non foglia specificata di un cubo, allocando facoltativamente il valore di una cella non foglia specificata a celle foglia dipendenti. 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 sicurezza, 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 dati integer, 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. |