Freigeben über


UPDATE CUBE (MDX)

Aktualisiert den Wert einer angegebenen Blatt- oder Nichtblattzelle in einem Cube. Dabei wird optional der Wert für eine angegebene Nichtblattzelle den abhängigen Blattzellen zugeordnet.

Syntax

UPDATE [ CUBE ] Cube_Name SET 
      <update clause> 
         [, <update clause> ...n ]
 
<update clause> ::= 
      Tuple_Expression[.VALUE]= New_Value
      [ 
        NO_ALLOCATION
      | USE_EQUAL_ALLOCATION 
      | USE_EQUAL_INCREMENT 
      | USE_WEIGHTED_ALLOCATION [ BY Weight_Expression] 
      | USE_WEIGHTED_INCREMENT [ BY Weight_Expression]
      ]

Argumente

  • Cube_Name
    Eine gültige Zeichenfolge, die den Namen eines Cubes bereitstellt.

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

  • New_Value
    Ein gültiger numerischer Ausdruck.

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

Hinweise

Bei der durch den Tupelausdruck angegebenen Zelle kann es sich um eine beliebige gültige Zelle im mehrdimensionalen Raum handeln (d. h., die Zelle muss keine Blattzelle sein). Die Zelle muss jedoch mit der Sum-Aggregatfunktion aggregiert sein und darf kein berechnetes Element in dem Tupel enthalten, durch das die Zelle identifiziert wird.

Sie können sich die UPDATE CUBE-Anweisung als Unterroutine vorstellen, die automatisch eine Reihe von einzelnen Vorgängen zum Zellenrückschreiben für Blatt- und Nichtblattzellen generiert, deren Rollup eine angegebene Summe ergibt.

In der folgenden Tabelle sind die Zuordnungsmethoden beschrieben.

Zuordnungsmethode

Beschreibung

USE_EQUAL_ALLOCATION

Jeder Blattzelle, die zur aktualisierten Zelle beiträgt, wird derselbe Wert zugewiesen, der auf dem folgenden Ausdruck basiert:

<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 dem folgenden Ausdruck geändert:

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

USE_WEIGHTED_ALLOCATION

Jeder Blattzelle, die zur aktualisierten Zelle beiträgt, wird derselbe Wert zugewiesen, der auf dem folgenden Ausdruck basiert:

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

USE_WEIGHTED_INCREMENT

Jede Blattzelle, die zur aktualisierten Zelle beiträgt, wird entsprechend dem folgenden Ausdruck geändert:

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

Wird kein Gewichtungsausdruck angegeben, verwendet die UPDATE CUBE-Anweisung implizit den folgenden Ausdruck:

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

Ein Gewichtungsausdruck sollte als Dezimalwert zwischen 0 (null) und 1 ausgedrückt werden. Dieser Wert gibt das Verhältnis zum zugeordneten Wert an, den Sie den Blattzellen zuweisen möchten, die von der Zuordnung betroffen sind. Der Programmierer der Clientanwendung ist dafür verantwortlich, Ausdrücke zu erstellen, deren Rollupaggregatwerte gleich dem zugeordneten Wert des Ausdrucks sind.

VorsichtshinweisVorsicht

Die Clientanwendung muss die gleichzeitige Zuordnung aller Dimensionen berücksichtigen, um unerwartete Ergebnisse, einschließlich falscher Rollupwerte oder inkonsistenter Daten, zu vermeiden.

Jede UPDATE CUBE-Zuordnung sollte zu Transaktionszwecken als atomar betrachtet werden. Das bedeutet, dass beim Fehlschlagen eines einzelnen Zuordnungsvorgangs, z. B. wegen eines Fehlers in einer Formel oder einer Sicherheitsverletzung, der gesamte UPDATE CUBE-Vorgang fehlschlägt. Bevor die Berechnungen der einzelnen Zuordnungsvorgänge verarbeitet werden, wird ein Snapshot der Daten erstellt, um sicherzustellen, dass die sich ergebenden Berechnungen richtig sind.

VorsichtshinweisVorsicht

Wenn die USE_WEIGHTED_ALLOCATION-Methode für ein Measure verwendet wird, das ganze Zahlen enthält, gibt die Methode möglicherweise aufgrund von inkrementellen Rundungsänderungen ungenaue Ergebnisse zurück.

Wichtiger HinweisWichtig

Wenn sich die aktualisierten Zellen nicht überlagern, kann mithilfe der Update Isolation Level-Eigenschaft der Verbindungszeichenfolge das Leistungsverhalten in Bezug auf UPDATE CUBE verbessert werden.

Siehe auch

Verweis

Andere Ressourcen