Utilisation de l'écriture différée de cubes (MDX)
Pour mettre à jour un cube, vous pouvez utiliser l'instruction UPDATE CUBE. Celle-ci permet de mettre à jour un tuple avec une valeur spécifique. Pour utiliser efficacement l'instruction UPDATE CUBE afin de mettre à jour un cube, vous devez comprendre la syntaxe de l'instruction, les conditions d'erreur susceptibles de se produire, ainsi que les effets potentiels des mises à jour sur un cube.
Syntaxe de l'instruction UPDATE CUBE
La syntaxe suivante décrit l'instruction UPDATE CUBE :
UPDATE [CUBE] <Cube_Name> SET <tuple>.VALUE = <value> [,<tuple>.VALUE = <value>...]
[ USE_EQUAL_ALLOCATION | USE_EQUAL_INCREMENT |
USE_WEIGHTED_ALLOCATION [BY <weight value_expression>] |
USE_WEIGHTED_INCREMENT [BY <weight value_expression>] ]
Si un jeu complet de coordonnées n'est pas spécifié pour le tuple, les coordonnées non spécifiées utilisent le membre par défaut de la hiérarchie. Le tuple identifié doit faire référence à une cellule agrégée avec la fonction Sum, et ne doit pas utiliser de membre calculé comme l'une des coordonnées de la cellule.
Vous pouvez considérer l'instruction UPDATE CUBE comme une sous-routine générant une série d'opérations d'écriture différée isolées sur des cellules atomiques. Toutes ces opérations d'écriture différée sont ensuite cumulées dans la somme spécifiée. Dans l'exemple suivant, l'instruction UPDATE CUBE met à jour la mesure Unit Shipped pour la famille de produits Drink en lui affectant la valeur zéro (0) :
UPDATE CUBE [Warehouse and Sales] SET ([Measures].[Units Shipped], [Product].[Product Family].[Product Family].&[Drink]) = 0 USE_NO_ALLOCATION
Notes
Dans Microsoft SQL Server Analysis Services, vous pouvez mettre à jour n'importe quelle cellule.
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. Pour plus d'informations, consultez ConnectionString.
Conditions d'erreur
Le tableau suivant décrit à la fois les éléments pouvant entraîner l'échec d'écritures différées et le résultat de ces erreurs.
Condition d'erreur |
Résultat |
---|---|
La mise à jour comprend les membres de la même dimension qui n'existent pas l'un avec l'autre. |
La mise à jour échoue. L'espace du cube ne contient pas la cellule référencée. |
La mise à jour comprend une mesure provenant d'une mesure de type non signé. |
La mise à jour échoue. Les incréments exigent que la mesure puisse accepter une valeur négative. |
La mise à jour comprend une mesure d'agrégation de type autre que somme. |
Une erreur est générée. |
Vous avez tenté d'exécuter la mesure sur un sous-cube. |
Une erreur est générée. |
Effets des modifications apportées au cube
Les modifications suivantes n'ont aucun effet sur une écriture différée :
traitement d'un cube, de ses groupes de mesures du cube ou de ses dimensions ;
ajout d'attributs à une dimension quelconque ;
ajoute d'une nouvelle dimension ;
suppression d'une dimension qui ne comprend pas l'écriture différée ;
ajout, modification ou suppression d'une hiérarchie ;
ajout d'une nouvelle mesure.
Les modifications suivantes ne peuvent pas être effectuées sans supprimer les données en écriture différée :
suppression d'un attribut, de sa hiérarchie d'attribut, s'il est compris dans l'écriture différée. Cela inclut la suppression explicite de l'attribut, ou de sa hiérarchie d'attribut, ou encore la suppression de la dimension parente de l'attribut ;
suppression d'une mesure comprise dans l'écriture différée ;
ajout d'un attribut dépourvu de niveau (All) à une dimension comprise dans l'écriture différée ;
modification de la granularité d'une dimension comprise dans l'écriture différée.