SSRS pour monitorer AS
Dans ce post, je vais décrire un exemple d’utilisation des Dynamics Management Views (DMV) d’Analysis Services (AS) dans un rapport Reporting Services (RS). Le but étant de créer un rapport permettant de créer un rapport afin de monitorer ses cubes. Bien qu’il existe de nombreux articles sur ce sujet, j’ai été confronté à la problématique suivante :
Je voulais faire un rapport qui permettait à l’utilisateur de choisir la base de données AS à monitorer (la catalogue). Puis en fonction de la sélection, sortir la liste des cubes relative au catalogue sélectionné.
Pour ce faire, on utilise les DMV suivantes :
Pour plus d’information sur les DMVs : https://technet.microsoft.com/en-us/library/hh230820.aspx
Quand on lit bien la définition de la DMV MDSChema_Cubes, il est écrit : « Returns information about the cubes that are defined in the current database ». C’est le « current database » qu’il faut bien prendre en compte. C’est-à-dire qu’il faut d’abord se connecter au catalogue pour ensuite pouvoir récupérer la liste des cubes.
Merci à Laurent Banon, Architecte BI dans mon équipe, qui m’a donné l’astuce de l’OLE DB pour récupérer les informations des DMVs via RS
Ci-dessous donc, un exemple possible de rapport
Présentation du rapport final
Un rapport tout simple, destiné à illustrer la connexion en 2 temps. Au catalogue puis ensuite à la liste des cubes.
Sélection du catalogue via une liste déroulante.
Puis présentation des cubes correspondant au catalogue sélectionné
Création du rapport
Création de la source de données
Ce rapport a été créé avec Business Intelligence Développement Studio (BIDS).
Dans la partie droite, création d’une « Shared Data Sources »
L’astuce ici, est de créer une connexion OLE DB
Puis de cliquer sur le bouton « Edit » pour définir comme provider : « Microsoft OLE DB Provider for Analysis Services 10.0 »
Après avoir renseigné les autres paramètres de connexion, voici un exemple du résultat :
Création des sources du rapport
Obtenir la liste des catalogues sur la DMV
Dans la partie gauche de BIDS, rajoutez une source de données dans le rapport
Dans un premier temps, nous allons rajouter la source de données précédemment créée :
Clic droit sur « Data Sources » puis cliquez sur « Add new Data Source ». Sélectionnez « Use Shared data source reference » et sélectionnez la source de donnée précédemment créée.
Création du dataset pour récupérer la liste des catalogues
Faites un clic droit sur « Datasets » puis cliquez sur « Add Dataset »
Renseignez le dataset comme si dessous :
Voici la requête à utiliser
SELECT [Catalog_Name] FROM [$System].DBSchema_Catalogs
Création du paramètre
Maintenant que nous avons la liste des catalogues, nous allons la rajouter en tant que paramètre du rapport.
Faîtes un clic droit sur « Paramaters » puis cliquez sur « Add Parameter »
Renseignez le paramètre comme dans les copies d’écrans ci-dessous :
Dans « Available Values », sélectionnez le dataset correspondant
Dans « Default Values », vous avez la possibilité de définir une valeur par défaut quand le rapport va s’exécuter.
Ci-dessous le paramètre
Création d’une source de données pour récupérer la liste des cubes
Créer une deuxième source de données pour récupérer la liste des cubes. Sauf que là, cette chaîne de connexion doit comporter le paramètre relatif au catalogue sélectionné.
Ci-dessous la fenêtre de création du cube. Sélectionnez « Embedded connection » puis cliquez sur le bouton « fx »
Dans la fenêtre « Expression » : entrer l’expression suivante
="Provider=MSOLAP.4;Data Source=.\SQL2008R2;Initial Catalog=" & Parameters!Catalogue.Value
Ci-dessous, nos 2 « Data sources »
Création du DataSet pour récupérer la liste des cubes.
Dans le champ « Data source », sélectionnez la source précédemment créée.
Cliquez sur le bouton « fx » puis saisissez l’expression suivante :
= "Select Cube_Name, Last_Schema_Update, Last_Data_Update from $System.MDSChema_Cubes where Cube_Source = 1"
Ci dessous, un aperçu de l’ensemble du rapport en mode création