MDX manipulace s daty - UPDATE CUBE

Příkaz UPDATE CUBE se používá k zápisu dat zpět do libovolné buňky v krychle, která se agreguje ke svému rodiči pomocí agregace SUM. Pro více vysvětlení a příklad viz "Porozumění alokacím" v tomto blogovém příspěvku: Vytváření aplikace pro zápis pomocí analytických služeb (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
Platný řetězec, který poskytuje název krychle.

Tuple_Expression
Platný výraz Multidimensional Expressions (MDX), který vrací n-tici.

New_Value
Platný číselný výraz.

Weight_Expression
Platný číselný výraz Multidimensional Expressions (MDX), který vrací desetinnou hodnotu mezi 0 a 1.

Remarks

Hodnotu specifikované listové nebo nelistové buňky můžete aktualizovat v krychle, přičemž volitelně přidělíte hodnotu pro specifickou ne-listovou buňku mezi závislé listové buňky. Buňka specifikovaná výrazem n-tice může být jakákoli platná buňka v multidimenzionálním prostoru (to znamená, že buňka nemusí být listová buňka). Buňka však musí být agregována pomocí agregační funkce Sum a nesmí obsahovat vypočítaného člena v n-tici, která se používá k identifikaci buňky.

Může být užitečné uvažovat UPDATE o příkazu CUBE jako o podprogramu, který automaticky generuje sérii jednotlivých operací zápisu buněk do listových i nelistových buněk, které se shluknou do určitého součtu.

Následuje popis metod alokace.

USE_EQUAL_ALLOCATION: Každá listová buňka, která přispívá k aktualizované buňce, bude přiřazena stejná hodnota na základě následujícího výrazu.

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

USE_EQUAL_INCREMENT: Každá listová buňka, která přispívá k aktualizované buňce, bude změněna podle následujícího výrazu.

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

USE_WEIGHTED_ALLOCATION: Každé listové buňce, která přispívá k aktualizované buňce, bude přiřazena stejná hodnota založená na následujícím výrazu.

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

USE_WEIGHTED_INCREMENT: Každá listová buňka, která přispívá k aktualizované buňce, bude změněna podle následujícího výrazu.

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

Pokud není označení váhy specifikováno, UPDATE příkaz CUBE implicitně používá následující výraz.

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

Váhový výraz by měl být vyjádřen jako desetinná hodnota mezi nulou (0) a 1. Tato hodnota určuje poměr přidělené hodnoty, kterou chcete přiřadit, k listovým buňkám, které jsou alokací ovlivněny. Programátor klientské aplikace má odpovědnost vytvářet výrazy, jejichž agregované hodnoty se rovnají alokované hodnotě výrazu.

Caution

Klientská aplikace musí současně zvážit alokaci všech dimenzí, aby se předešlo možným neočekávaným výsledkům, včetně nesprávných hodnot pro rollup nebo nekonzistentních dat.

Každé UPDATE přidělení CUBE by mělo být pro transakční účely považováno za atomické. To znamená, že pokud některá z alokačních operací selže z jakéhokoliv důvodu, například kvůli chybě ve vzorci nebo bezpečnostnímu narušení, celá UPDATE operace CUBE selže. Před zpracováním výpočtů jednotlivých alokačních operací se pořídí snímek dat, aby se zajistila správnost výsledných výpočtů.

Caution

Při použití na měření obsahujícím celá čísla může metoda USE_WEIGHTED_ALLOCATION vrátit nepřesné výsledky způsobené inkrementálními změnami zaokrouhlování.

Important

Pokud se aktualizované buňky nepřekrývají, lze vlastnost Update Isolation Level připojovací řetězec použít ke zvýšení výkonu UPDATE pro CUBE.

Viz také

ConnectionString
Příkazy pro manipulaci s daty MDX (MDX)