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 :

· DBSchema_Catalogs

· MDSChema_Cubes

Pour plus d’information sur les DMVs : http://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.

clip_image002

Puis présentation des cubes correspondant au catalogue sélectionné

clip_image004

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 »

clip_image006

L’astuce ici, est de créer une connexion OLE DB

clip_image008

Puis de cliquer sur le bouton « Edit » pour définir comme provider : « Microsoft OLE DB Provider for Analysis Services 10.0 »

clip_image010

Après avoir renseigné les autres paramètres de connexion, voici un exemple du résultat :

clip_image012

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

clip_image013

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.

clip_image015

Création du dataset pour récupérer la liste des catalogues

Faites un clic droit sur « Datasets » puis cliquez sur « Add Dataset »

clip_image016

Renseignez le dataset comme si dessous :

clip_image017

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 »

clip_image018

Renseignez le paramètre comme dans les copies d’écrans ci-dessous :

clip_image019

Dans « Available Values », sélectionnez le dataset correspondant

clip_image021

Dans « Default Values », vous avez la possibilité de définir une valeur par défaut quand le rapport va s’exécuter.

clip_image023

Ci-dessous le paramètre

clip_image024

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 »

clip_image026

Dans la fenêtre « Expression » : entrer l’expression suivante

clip_image028

="Provider=MSOLAP.4;Data Source=.\SQL2008R2;Initial Catalog=" & Parameters!Catalogue.Value

Ci-dessous, nos 2 « Data sources »

clip_image029

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.

clip_image031

Cliquez sur le bouton « fx » puis saisissez l’expression suivante :

clip_image033

= "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

clip_image035