Instruction UPDATE CUBE (MDX)
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 plus d'explications et pour obtenir un exemple, consultez « Fonctionnement des allocations » dans la publication de blog : Création 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 précise 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.
Notes
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 aucun membre calculé ne doit se trouver 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érera automatiquement une série d'opérations d'écriture différée de cellules individuelles sur des cellules feuilles et non-feuilles qui se cumuleront dans un total spécifié.
Le tableau ci-dessous décrit les méthodes d'allocation.
Méthode d'allocation |
Description |
---|---|
USE_EQUAL_ALLOCATION |
Chaque cellule feuille qui contribue à la cellule mise à jour se verra attribuer une valeur égale basée sur l'expression suivante :
|
USE_EQUAL_INCREMENT |
Chaque cellule feuille qui contribue à la cellule mise à jour sera modifiée en fonction de l'expression suivante :
|
USE_WEIGHTED_ALLOCATION |
Chaque cellule feuille qui contribue à la cellule mise à jour se verra attribuer une valeur égale basée sur l'expression suivante :
|
USE_WEIGHTED_INCREMENT |
Chaque cellule feuille qui contribue à la cellule mise à jour sera modifiée en fonction de l'expression suivante :
|
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.
Avertissement
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 envisagée comme atomique pour les besoins des transactions. 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.
Avertissement
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
Lorsque 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.