[SSAS] IgnoreUnrelatedDimension et Drillthrough

Je suis tombé sur ce que je pense être un petit bug dont je n’avais jamais entendu parler… et qui m’a bloqué une bonne demi journée! Peut être que vous le connaissez et que ça vous paraîtra trivial mais dans mon cas j’étais assez étonné.

Mettez vous dans le cas d’un cube disposant de deux MeasureGroups, un pour le reporting financier sur des indicateurs, l’autre sur l’analyse d’activité plus globale.
Deux particularités:
1) Une des dimensions de l’analyse d’activité dispose d’un DefaultMember qui n’est pas (All) pour complaire aux demandes fonctionnelles.
2) Le groupe de mesure finance étant lié à peu de dimensions a été paramétré en IgnoreUnrelatedDimension=false pour donner un affichage plus user friendly. Il dispose d’une action de Drillthrough.
Lorsque je tente un Drillthrough sur les cellules de certaines requêtes sur le MG financier rien ne s’affiche (voir plus bas).

Qu’est ce qu’IgnoreUnrelatedDimension?

En MDX lorsque l’on effectue analyse une mesure par les membres d’une dimension n’ayant aucun lien avec le groupe de la mesure (pas de relation dans le Dimension Usage) c’est généralement le niveau (All) – ou le membre par défaut si différent – de la dimension qui est affiché, répété sur tous les membres.

Pourquoi? Parce que par défaut les groupes de mesure appliquent le comportement de la fonction MDX ValidMeasure – qui positionne la cellule en cours sur le niveau (All) des dimensions non reliées au MG -, c’est le sens du setting IgnoreUnrelatedDimension, par défaut à True sur un MG.

Parfois on peut souhaiter éviter cette répétition, et que les hiérarchies non reliées n’affichent tout bonnement rien. On affecte donc IgnoreUnrelatedDimension à False.

Pour reproduire cette bizarrerie avec AdventureWorks

Pour simuler ce comportement dans AdventureWorks, mettez par exemple la hiérarchie « Product.Category » avec un DefaultMember bidon. Processez la dimension.
Puis mettez faites une requête:
Date.Fiscal.Year en lignes, Measure.Amount en colonne et Product.Category.All en slicer. Faites un Drillthrough sur n’importe qu’elle cellule… c’est vide.


Retournez dans la dimension Product, remettez la catégorie en DefaultMember par défaut et miracle ça marche.

Plus d’infos

Ce bug est signalé sur Connect à l’adresse suivante, et non résolu à ce jour. Je suis tombé dessus par ce post de Raymond-Lee sur MSDN alors que je ne soupçonnais pas du tout mon MeasureGroup d’être responsable de ça…

Plus globalement tout ce qui tourne autour de ValidMeasure mériterait à mon sens un peu plus d’investigation, que ce soit sur les impacts en termes de performance – il semble bon d’après Mosha d’utiliser ValidMeasure dans les cas de membres calculés sollicitant la feature de reconnexion au niveau (All) mais après? – que sur les éventuels problèmes similaires à celui ci – j’imagine qu’il y en a – et difficilement trouvables.

A bientôt.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s