Manipolazione dei Dati MDX - UPDATE CUBE

L'istruzione UPDATE CUBE viene utilizzata per scrivere dati a qualsiasi cella di un cubo che aggrega al suo genitore utilizzando l'aggregazione SUM. Per ulteriori spiegazioni e un esempio, vedi "Comprendere le allocazioni" in questo post del blog: Costruire un'applicazione di scrittura con servizi di analisi (blog).

Syntax

  
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]  
      ]  

Arguments

Cube_Name
Una stringa valida che fornisce il nome di un cubo.

Tuple_Expression
Un'espressione valida delle Espressioni Multidimensionali (MDX) che restituisce una tuple.

New_Value
Un'espressione numerica valida.

Weight_Expression
Un'espressione numerica valida delle Espressioni Multidimensionali (MDX) che restituisce un valore decimale tra 0 e 1.

Remarks

Puoi aggiornare il valore di una cella foglia o non foglia specificata in un cubo, assegnando opzionalmente il valore di una cella non foglia specificata tra celle foglia dipendenti. La cella specificata dall'espressione della tupla può essere qualsiasi cella valida nello spazio multidimensionale (cioè, la cella non deve necessariamente essere una cella foglia). Tuttavia, la cella deve essere aggregata con la funzione aggregata Somma e non deve includere un elemento calcolato nella tupla utilizzata per identificare la cella.

Può essere utile pensare all'istruzione UPDATE CUBE come a una sottoroutine che genererà automaticamente una serie di operazioni di writeback singole tra celle foglia e non foglia che si raggrupperanno in una somma specificata.

Di seguito è riportata una descrizione dei metodi di allocazione.

USE_EQUAL_ALLOCATION: Ogni cella foglia che contribuisce alla cella aggiornata riceverà un valore uguale in base alla seguente espressione.

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

USE_EQUAL_INCREMENT: Ogni cellula fogliare che contribuisce alla cella aggiornata verrà modificata secondo la seguente espressione.

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

USE_WEIGHTED_ALLOCATION: Ogni cella foglia che contribuisce alla cella aggiornata riceverà un valore uguale basato sulla seguente espressione.

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

USE_WEIGHTED_INCREMENT: Ogni cellula fogliare che contribuisce alla cella aggiornata verrà modificata secondo la seguente espressione.

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

Se non viene specificata un'espressione di peso, l'istruzione UPDATE CUBE utilizza implicitamente la seguente espressione.

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

Un'espressione di peso dovrebbe essere espressa come un valore decimale compreso tra zero (0) e 1. Questo valore specifica il rapporto tra il valore allocato che si vuole assegnare e le celle fogliare interessate dall'allocazione. Il programmatore dell'applicazione client ha la responsabilità di creare espressioni i cui valori aggregati di rollup saranno uguali al valore allocato dell'espressione.

Caution

L'applicazione client deve considerare contemporaneamente l'allocazione di tutte le dimensioni per evitare possibili risultati inaspettati, inclusi valori di rollup errati o dati incoerenti.

Ogni UPDATE allocazione CUBE dovrebbe essere considerata atomica a fini transazionali. Ciò significa che se una qualsiasi delle operazioni di allocazione fallisce per qualsiasi motivo, come un errore in una formula o una violazione di sicurezza, l'intera UPDATE operazione CUBE fallirà. Prima che i calcoli delle singole operazioni di allocazione vengano elaborati, viene effettuata un'istantanea dei dati per assicurarsi che i calcoli risultanti siano corretti.

Caution

Quando viene utilizzato su una misura che contiene interi, il metodo USE_WEIGHTED_ALLOCATION può restituire risultati imprecisi causati da cambiamenti incrementali di arrotondamento.

Importante

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

Vedere anche

ConnectionString
Istruzioni di manipolazione dei dati MDX (MDX)