Manipulation de données MDX - UPDATE CUBE
L'instruction UPDATE CUBE est utilisée pour l'écriture différée des données dans une cellule d'un cube qui agrège uniquement dans son parent à l'aide de l'agrégation SUM. Pour obtenir plus d’explications et un exemple, consultez « Understanding Allocations » dans ce billet de blog : Génération d’une application d’écriture différée avec Analysis Services (blog) .
Syntaxe
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
Chaîne valide qui fournit le nom d’un cube.
Tuple_Expression
Expression MDX (Multidimensional Expressions) valide qui retourne un tuple.
New_Value
Expression numérique valide.
Weight_Expression
Expression numérique MDX (Multidimensional Expressions) valide qui retourne une valeur décimale comprise entre 0 et 1.
Remarques
Vous pouvez mettre à jour la valeur d'une cellule feuille ou non-feuille d'un cube, et allouer inévitablement la valeur d'une cellule non-feuille spécifiée à toutes les cellules feuilles dépendantes. La cellule spécifiée par l'expression de tuple peut être n'importe quelle cellule valide dans l'espace multidimensionnel (ce qui signifie que la cellule ne dispose d'aucune cellule feuille). Toutefois, la cellule doit être agrégée avec la fonction d’agrégation Sum et ne doit pas inclure un membre calculé dans le tuple utilisé pour identifier la cellule.
Il peut être utile de considérer l’instruction UPDATE CUBE comme une sous-routine qui génère automatiquement une série d’opérations d’écriture différée de cellules individuelles sur les cellules feuille et non feuille qui se cumulent dans une somme spécifiée.
Voici une description des méthodes d’allocation.
USE_EQUAL_ALLOCATION : Chaque cellule feuille qui contribue à la cellule mise à jour se verra attribuer une valeur égale en fonction de l’expression suivante.
<leaf cell value> =
<New Value> / Count(leaf cells that are contained in <tuple>)
USE_EQUAL_INCREMENT : Chaque cellule feuille qui contribue à la cellule mise à jour est modifiée en fonction de l’expression suivante.
<leaf cell value> = <leaf cell value> +
(<New Value > - <existing value>) /
Count(leaf cells contained in <tuple>)
USE_WEIGHTED_ALLOCATION : Chaque cellule feuille qui contribue à la cellule mise à jour se voit attribuer une valeur égale basée sur l’expression suivante.
<leaf cell value> = < New Value> * Weight_Expression
USE_WEIGHTED_INCREMENT : Chaque cellule feuille qui contribue à la cellule mise à jour est modifiée en fonction de l’expression suivante.
<leaf cell value> = <leaf cell value> +
(<New Value> - <existing value>) * Weight_Expression
Si aucune expression de poids n’est spécifiée, l’instruction UPDATE CUBE utilise implicitement l’expression suivante.
Weight_Expression = <leaf cell value> / <existing value>
Une expression de poids doit être exprimée sous forme de valeur décimale comprise entre zéro (0) et 1. Cette valeur spécifie le ratio de la valeur allouée que vous voulez affecter aux cellules feuilles affectées par l'allocation. Il est de la responsabilité du programmeur de l'application cliente de créer des expressions dont les valeurs agrégées de cumul seront égales à la valeur allouée de l'expression.
Attention
L'application cliente doit considérer simultanément l'allocation de toutes les dimensions afin d'éviter l'éventualité de résultats imprévus, notamment des valeurs de cumul incorrectes ou des données incohérentes.
Chaque allocation UPDATE CUBE doit être considérée comme atomique à des fins transactionnelles. Ceci signifie que si l'une des opérations d'allocation échoue pour quelque raison que ce soit, par exemple une erreur de formule ou une violation de sécurité, l'ensemble de l'opération UPDATE CUBE échouera. Avant le calcul des opérations individuelles d'allocation, un instantané des données est réalisé pour garantir la correction des calculs résultants.
Attention
Lorsqu'elle est utilisée sur une mesure contenant des entiers, la méthode USE_WEIGHTED_ALLOCATION peut retourner des résultats imprécis causés par des arrondis successifs.
Important
Quand les cellules mises à jour ne se chevauchent pas, la propriété de chaîne de connexion Update Isolation Level peut être utilisée pour améliorer les performances pour UPDATE CUBE.
Voir aussi
ConnectionString
Instructions MDX de manipulation de données (MDX)