MDX-Datenmanipulation – UPDATE CUBE

Die UPDATE CUBE-Anweisung wird verwendet, um Daten in jede Zelle in einem Cube zurückzuschreiben, die mit der SUM-Aggregation an ihren Elternteil aggregiert wird. Für weitere Erklärungen und ein Beispiel siehe "Understanding Allocations" in diesem Blogbeitrag: Building a Writeback Application with Analysis Services (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
Eine gültige Zeichenkette, die den Namen eines Würfels angibt.

Tuple_Expression
Ein gültiger Multidimensional Expressions (MDX)-Ausdruck, der ein Tupel zurückgibt.

New_Value
Ein gültiger numerischer Ausdruck.

Weight_Expression
Ein gültiger Multidimensional Expressions (MDX) numerischer Ausdruck, der einen Dezimalwert zwischen 0 und 1 zurückgibt.

Bemerkungen

Man kann den Wert einer bestimmten Blatt- oder Nichtblattzelle in einem Würfel aktualisieren und optional den Wert für eine bestimmte Nicht-Blattzelle über abhängige Blattzellen zuweisen. Die durch den Tupel-Ausdruck spezifizierte Zelle kann jede gültige Zelle im multidimensionalen Raum sein (das heißt, die Zelle muss keine Blattzelle sein). Die Zelle muss jedoch mit der Summenaggregatfunktion aggregiert werden und darf kein berechnetes Element im Tupel enthalten, das zur Identifikation der Zelle verwendet wird.

Es kann hilfreich sein, die UPDATE CUBE-Anweisung als Unterprogramm zu betrachten, die automatisch eine Reihe einzelner Zell-Rückschreiboperationen für Blatt- und Nicht-Blatt-Zellen generiert, die sich zu einer bestimmten Summe zusammensummieren.

Im Folgenden finden Sie eine Beschreibung der Allokationsmethoden.

USE_EQUAL_ALLOCATION: Jede Blattzelle, die zur aktualisierten Zelle beiträgt, erhält basierend auf dem folgenden Ausdruck einen gleichwertigen Wert.

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

USE_EQUAL_INCREMENT: Jede Blattzelle, die zur aktualisierten Zelle beiträgt, wird entsprechend der folgenden Expression verändert.

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

USE_WEIGHTED_ALLOCATION: Jede Blattzelle, die zur aktualisierten Zelle beiträgt, erhält einen gleichwertigen Wert, der auf folgendem Ausdruck basiert.

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

USE_WEIGHTED_INCREMENT: Jede Blattzelle, die zur aktualisierten Zelle beiträgt, wird entsprechend der folgenden Expression verändert.

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

Wenn kein Gewichtungsausdruck angegeben ist, verwendet die UPDATE CUBE-Aussage implizit den folgenden Ausdruck.

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

Ein Gewichtungsausdruck sollte als Dezimalwert zwischen null (0) und 1 angegeben werden. Dieser Wert gibt das Verhältnis des zugewiesenen Werts an, den Sie zu den Blattzellen zuweisen möchten, die von der Zuteilung betroffen sind. Der Client-Anwendungsprogrammierer ist dafür verantwortlich, Ausdrücke zu erstellen, deren Rollup-Aggregatwerte dem zugewiesenen Wert des Ausdrucks entsprechen.

Caution

Die Client-Anwendung muss die gleichzeitige Zuweisung aller Dimensionen berücksichtigen, um mögliche unerwartete Ergebnisse wie falsche Rollup-Werte oder inkonsistente Daten zu vermeiden.

Jede UPDATE CUBE-Zuteilung sollte für transaktionale Zwecke als atomar betrachtet werden. Das bedeutet, dass, wenn eine der Allokationsoperationen aus irgendeinem Grund fehlschlägt, wie etwa einem Fehler in einer Formel oder einem Sicherheitsverstoß, die gesamte UPDATE CUBE-Operation fehlschlägt. Bevor die Berechnungen der einzelnen Allokationsoperationen verarbeitet werden, wird ein Snapshot der Daten gemacht, um sicherzustellen, dass die resultierenden Berechnungen korrekt sind.

Caution

Bei Verwendung auf einem Maß mit ganzen Zahlen kann die USE_WEIGHTED_ALLOCATION-Methode ungenaue Ergebnisse liefern, die durch inkrementelle Rundungsänderungen verursacht werden.

Wichtig

Wenn aktualisierte Zellen nicht überlappen, kann die Eigenschaft Update Isolation Level Verbindungszeichenfolge verwendet werden, um die Leistung für UPDATE CUBE zu verbessern.

Siehe auch

ConnectionString
MDX Datenmanipulationsanweisungen (MDX)