Condividi tramite


Manipolazione dei dati MDX - UPDATE CUBE

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. Per altre spiegazioni e un esempio, vedere "Informazioni sulle allocazioni" in questo post di blog: Compilazione di un'applicazione writeback con Analysis Services (blog).

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, la cella deve essere aggregata con la funzione di aggregazione Sum e non deve includere un membro calcolato nella tupla utilizzata per identificare la cella.

Può essere utile considerare l'istruzione UPDATE CUBE come una subroutine che genererà automaticamente una serie di singole operazioni di writeback delle celle in celle foglia e non foglia che verranno rifornite in una somma specificata.

Di seguito è riportata una descrizione dei metodi di allocazione.

USE_EQUAL_ALLOCATION: a ogni cella foglia che contribuisce alla cella aggiornata verrà assegnato un valore uguale 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 verrà 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: a ogni cella foglia che contribuisce alla cella aggiornata verrà assegnato un valore uguale basato sull'espressione seguente.

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

USE_WEIGHTED_INCREMENT: ogni cella foglia che contribuisce alla cella aggiornata verrà modificata in base all'espressione seguente.

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

Se non viene specificata un'espressione weight, l'istruzione UPDATE CUBE usa in modo implicito 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 UPDATE CUBE deve essere considerata atomica a scopo transazionale. 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 le celle aggiornate non si sovrappongono, la proprietà della stringa di connessione Update Isolation Level può essere usata per migliorare le prestazioni di UPDATE CUBE.

Vedi anche

ConnectionString
Istruzioni MDX per la manipolazione dei dati (MDX)