Comment créer des rapports Reporting Services de test ou démonstration sans dépendances sur des sources de données

 

Contexte

Reporting Services est une plate-forme de développement de rapports assez complexe. Ceux qui l’utilisent fréquemment en viennent à développer des techniques de construction très intéressantes qui rendent les rapports plus flexibles ou accélèrent le développement de ceux-ci.

Ainsi, il peut être intéressant de rassembler ces techniques en une série de rapports individuels. Que ce soit pour la formation interne ou comme bibliothèque de référence, je pense que les avantages sont clairs.

Un autre cas d’utilisation serait pour les démonstration des capacités de la plate-forme. Des rapports illustrant les graphiques / gauges disponibles me viennent à l’esprit.

Le problème avec les rapports SSRS c’est leur dépendance vers une ou plusieurs sources de données relationnelles, multidimensionnelles ou autre. Les développeurs ont tendances à se créer des rapports de test illustrant une technique sur des sources de données qui existent au moment de la création du rapport. 2 ans plus tard, le rapport perd de son utilisé car la source de données n’est plus disponible, ou la personne qui trouve le rapport n’a pas accès à celle-ci (ou ne sait même pas où elle se trouve).

Solution

Il est possible (et facile) de définir les données à même le rapport SSRS. Ainsi, on se retrouve avec un fichier *.RDL auto suffisant qui peut être partagé facilement entre les différentes équipes de développement ou de vente.

La base de la solution repose sur l’utilisation d’une source de données XML. Il suffit d’en créer une et de laisser la chaîne de connexion vide:

image

Ensuite, il faut créer un ou plusieurs Dataset basés sur cette source de données. Les données et la requêtes sont mélangées dans le même fragment XML:

image

<Query>
	<XmlData>
		<Rows>
			<Row SaleId="Sale01" Category="Category01" SaleProductId="Product01" SaleAmount="1000" Year="2011" Period="Q1-Q2"/>
			<Row SaleId="Sale02" Category="Category02" SaleProductId="Product02" SaleAmount="2000" Year="2011" Period="Q1-Q2"/>
			<Row SaleId="Sale03" Category="Category01" SaleProductId="Product01" SaleAmount="3000" Year="2011" Period="Q1-Q2"/>
			<Row SaleId="Sale04" Category="Category01" SaleProductId="Product01" SaleAmount="1500" Year="2012" Period="Q1-Q2"/>
			<Row SaleId="Sale05" Category="Category02" SaleProductId="Product02" SaleAmount="2500" Year="2012" Period="Q1-Q2"/>
			<Row SaleId="Sale06" Category="Category01" SaleProductId="Product01" SaleAmount="3500" Year="2012" Period="Q1-Q2"/>
			<Row SaleId="Sale07" Category="Category02" SaleProductId="Product03" SaleAmount="4500" Year="2012" Period="Q1-Q2"/>
			<Row SaleId="Sale08" Category="Category01" SaleProductId="Product01" SaleAmount="11000" Year="2011" Period="Q3-Q4"/>
			<Row SaleId="Sale09" Category="Category02" SaleProductId="Product02" SaleAmount="12000" Year="2011" Period="Q3-Q4"/>
			<Row SaleId="Sale10" Category="Category01" SaleProductId="Product01" SaleAmount="13000" Year="2011" Period="Q3-Q4"/>
			<Row SaleId="Sale11" Category="Category01" SaleProductId="Product01" SaleAmount="11500" Year="2012" Period="Q3-Q4"/>
			<Row SaleId="Sale12" Category="Category02" SaleProductId="Product02" SaleAmount="12500" Year="2012" Period="Q3-Q4"/>
			<Row SaleId="Sale13" Category="Category01" SaleProductId="Product01" SaleAmount="13500" Year="2012" Period="Q3-Q4"/>
			<Row SaleId="Sale14" Category="Category02" SaleProductId="Product03" SaleAmount="14500" Year="2012" Period="Q3-Q4"/>
		</Rows>
	</XmlData>
	<ElementPath IgnoreNamespaces="true">Rows/Row{@SaleId(String), @Category, @SaleProductId(String), @SaleAmount(Float), @Year(String), @Period(String)}</ElementPath>
</Query>

La section XmlData peut contenir du XML dans le format de votre choix. Il n’y a pas de normes. J’utilise Rows et Row et je crée un attribut par colonne.

Le noeud ElementPath vient déterminer le XPath vers chaque ligne (Rows/Row) et pour chacune, il identifie les différentes colonnes et leur type.

Pour ce qui est du rapport, il n’y a pas de différence avec une version où une vrai source de données serait utilisée.

image

Vous pouvez obtenir mon rapport RDL ici. C’est un rapport en format SSRS 2008 R2.

Référence

Element Path Syntax for XML Report Data (SSRS)

XML Query Syntax for XML Report Data (SSRS)

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