MDX-Datenbearbeitung – UPDATE CUBE

Mithilfe der UPDATE CUBE-Anweisung werden Daten in eine beliebige Zelle in einem Cube zurückgeschrieben, der mit der SUM-Aggregation in den übergeordneten Cube aggregiert wird. Weitere Erläuterungen und ein Beispiel finden Sie unter "Grundlegendes zu Zuordnungen" in diesem Blogbeitrag: Erstellen einer Rückschreibanwendung mit 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]  
      ]  

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.

Bemerkungen

Sie können den Wert einer angegebenen Blatt- oder Nichtblattzelle in einem Cube aktualisieren. Dabei wird den abhängigen Blattzellen optional der Wert für eine angegebene Nichtblattzelle zugeordnet. 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 werden und darf keinen berechneten Member im Tupel enthalten, der zur Identifizierung der Zelle verwendet wird.

Es kann hilfreich sein, sich die UPDATE CUBE-Anweisung als Eine Unterroutine zu vorstellen, die automatisch eine Reihe einzelner Zellrückschreibungsvorgänge für Blatt- und Nichtblattzellen generiert, die zu einer angegebenen Summe zusammengerollt werden.

Im Folgenden werden die Zuordnungsmethoden beschrieben.

USE_EQUAL_ALLOCATION: Jeder Blattzelle, die zur aktualisierten Zelle beiträgt, wird basierend auf dem folgenden Ausdruck ein gleicher Wert zugewiesen.

<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 ein gleicher 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  

Wenn kein Gewichtungsausdruck angegeben wird, 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.

Achtung

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 für transaktionale Zwecke 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 eine Momentaufnahme der Daten erstellt, um sicherzustellen, dass die sich ergebenden Berechnungen richtig sind.

Achtung

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.

Wichtig

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.

Weitere Informationen

ConnectionString
MDX-Datenbearbeitungsanweisungen (MDX)