Reporting Services n’est pas compatible avec les actions SSAS de DRILLTHROUGH définis au niveau d’un cube. Il est cependant possible de reproduire en partie cette fonctionnalité dans un rapport via les actions SSRS de type “Go to report”.
Voici un tutorial basique permettant de l’illustrer :
Première étape : création du rapport de détail
Tout d’abord, pour effectuer une requête de type DRILLTHROUGH avec SSRS, il faut utiliser le provider OLEDB for AS (le provider MS Analysis Services ne supporte pas ce type d’instruction).
Update : Comme le souligne François dans son article, il existe une astuce pour effectuer des requêtes de drillthrough avec le provider MS AS en passant en mode DMX dans le query designer.
- Création de la source de données :
- Création d’un rapport tabulaire avec l’instruction de DRILLTHROUGH; par exemple, un rapport affichant la liste des commandes Internet.
Drillthrough maxrows 200 |
Aperçu du rapport :
Seconde étape : création du rapport d’analyse
Le rapport permet ici d’analyser les ventes Internet des produits par sous-catégories.
Requête MDX utilisée :
With member [Measures].SubCatUniqueName as [Product].[Product Categories].currentmember.uniquename |
Un membre calculé est ajouté dans le but de récupérer dans un champ du dataset le UniqueName des membres de la hiérarchie [Product Categories]. Ce champ sera utilisé ultérieurement pour transmettre la sous-catégorie sélectionnée au rapport de détail.
Exemple de rapport d’analyse construit à partir du dataset résultant :
Troisième étape : création du lien entre les 2 rapports
L’objectif est d’obtenir à partir du rapport d’analyse des ventes le détail des commandes en cliquant sur une cellule.
Il faut donc ajouter un paramètre “Sous catégorie” au niveau du rapport de détail. Ce dernier permettra de stocker le UniqueName de la sous-catégorie sélectionnée dans le rapport d’analyse.
- Création du paramètre SubCategorie :
Ensuite ce paramètre est ajouté dans la requête de DRILLTRHOUGH en clause WHERE afin de filtrer sur la sous-catégorie sélectionnée. Le problème est que le provider OLEDB for AS ne supporte pas les paramètres. Il faut donc évaluer la requête en tant que chaine de caractères.
- Remplacement de la requête de l’étape 1 par l’expression suivante au niveau de la Query du dataset :
="Drillthrough maxrows 200 |
Enfin il reste à définir l’action SSRS de type “Go to report” dans le rapport d’analyse au niveau de la cellule contenant le libellé des sous-catégories :
Il suffit alors de sélectionner le rapport de détail et d’effectuer le mapping paramètre [@Subcategorie] avec le valeur courante du champ [SubCatUniqueName] du rapport d’analyse.
- Modification du design des cellules afin de mettre en évidence le lien. Et voici le résultat :
Si besoin les sources de l’exemple sont téléchargeables ici.
3 commentaires:
Salut Gurv! Pour utiliser le provider SSAS (non OLE DB) j'avais utilisé l'astuce crado de flagger la requête comme du DMX et pas du MDX, ce qui avait l'air de marcher pour le coup... Tu déconseilles? Il vaut mieux utiliser OLE DB?
Hello François, et bien je ne connaissais pas cette astuce pour effectuer une requête de Drillthrough avec le Mode DMX du provider MS AS!
L’avantage est qu’avec cette méthode les paramètres sont gérés par le provider à condition d’utiliser ensuite dans la requête MDX les fonctions strtomember, strtotuple ou strtoset qui vont bien.
Merci pour l’info François ;)
De rien! J'ai fait quelques captures d'écran et deux-trois commentaires pour ceux qui n'ont jamais utilisé ce mode barbare qu'est DMX, c'est ici! @+ ;)
Enregistrer un commentaire