Utilisation des attributs d’un cube dans SSRS

L’utilisation des attributs de membres d’un cube SSAS dans un rapport SSRS ne se fait pas de manière transparente.

En effet, alors que les attributs sont visibles dans l’éditeur graphique de source de données SSAS de Reporting Services, ils ne sont pas sélectionnables.

Pour y avoir accès dans un rapport, il est nécessaire de basculer en mode Requête MDX, et de modifier sa requête de la manière suivante:

SELECT

 NON EMPTY { [Measures].[...]} ON COLUMNS,
 NON EMPTY { ([Dimension].[Hierarchy].[Level].ALLMEMBERS * [Dimension].[Hierarhcy].[Level].ALLMEMBERS * ... ) }
 DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, [Dimension].[Hierarchy].[Level].[Attribute]
 ON ROWS

FROM    [Cube]
WHERE  ...

Les mots clefs DIMENSION PROPERTIES permettent de passer les valeurs des attributs directement dans le résultat de la requête MDX, les rendant accessibles dans l’onglet mise en page de SSRS.

Ainsi, dans le rapport, la syntaxe à utiliser sera :

Fields!######("Nom de l'attribut")

Sources: Braulio Malaga (Avanade) / MSDN

Pour ceux coincés en 2005

Pour ceux coincés en SSRS 2005, je rappelle qu’on peut vivre avec une Matrix, sans trop perdre sa santé d’esprit, en utilisant la fonction InScope().

Deux articles expliquent très bien comment faire, le premier par Jorg Klein, le second par Luke Hayler. Voici d’ailleurs son super schéma directement ici:

SSRS InScope par Luke Hayler

On peut se servir de cette fonction pour changer la méthode d’agrégation ou forcer des valeurs aux niveaux des totaux, ou encore pour changer la mise en forme et paramétrer la navigation en fonction du niveau de granularité.

Pour ceux qui profitent de 2008 et des Tablix… merci de ne pas trop se moquer. C’est cool. On apprécie.

Reporting Services, des fois je te hais. Vraiment.

Et une journée de perdue, une!

En même temps c’est de ma faute, je n’ai pas vérifié les versions de Visual Studio installées sur les postes des développeurs en arrivant, et ça n’a pas raté, merci les versions d’outre-tombe!

J’ai eu droit au bug catastrophe dans SSRS : les requêtes MDX qui disparaissent dans les datasets des rapports.

Pour faire court, BIDS se mélange parfois les pinceaux dans les RDL. Ce faisant il oublie de fermer les tags qui marquent le fait qu’un dataset SSAS utilise une requête MDX spécifique et pas le designer de base… Ce qui spécifiquement déclenche le bug, je ne saurais pas le dire…

Quand ça arrive, il n’arrive évidemment pas à ouvrir la requête peaufinée aux petits oignons dans son designer tout étriqué, et donc il plante. Et quand il plante, il efface la requête…

Hum, hum…

Et malheureusement, quand ça arrive, ça ne se manifeste que lorsqu’on ouvre un dataset. Si on ne touche pas aux datasets et qu’on ne fait que du design/aperçu,  le bug n’apparaît pas!

Hum, hum…

Donc au programme de la journée nous avons:

  • Installation du SP1 de Visual Studio sur tous les postes
  • Extraction dans NotePad++ des requêtes MDX depuis les RDL ressortis du SVN
  • Insertion des requêtes dans tous les rapports, remappage de tous les paramètres (oh joie)
  • Allumage d’un cierge en espérant que l’installation du SP1 suffira à régler le problème…

Chouette! ><

Update 05/09/2010 : Le cierge a fait son effet, on a pu se remettre au boulot!

Au final c’était un seul des postes qui était responsable, et pour lui on a été obligé de faire une réinstall complète. Et lors de l’installation du SP3 de SQL Server, un des KB (le KB955706) ne passait pas. On a dû la réinstaller à la main. Passé ça, tout est rentré dans l’ordre.

Accéder aux attributs d’un cube dans SSRS

L’utilisation des attributs de membres d’un cube SSAS dans un rapport SSRS ne se fait pas de manière transparente.

En effet, alors que les attributs sont visibles dans l’éditeur graphique de source de données SSAS de Reporting Services, ils ne sont pas sélectionnables.

Pour y avoir accès dans un rapport, il est nécessaire de basculer en mode Requête MDX, et de modifier sa requête de la manière suivante:

SELECT

 NON EMPTY { [Measures].[...]} ON COLUMNS,
 NON EMPTY { ([Dimension].[Hierarchy].[Level].ALLMEMBERS * [Dimension].[Hierarhcy].[Level].ALLMEMBERS * ... ) }
 DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, [Dimension].[Hierarchy].[Level].[Attribute]
 ON ROWS

FROM    [Cube]
WHERE  ...

Les mots clefs DIMENSION PROPERTIES permettent de passer les valeurs des attributs directement dans le résultat de la requête MDX, les rendant accessibles dans l’onglet mise en page de SSRS.

Ainsi, dans le rapport, la syntaxe à utiliser sera : Fields!######(« Nom de l’attribut »)

Sources:
Blog de Braulio Malaga (Avanade)
MSDN