Générer des visualisations de modèles de Mining avec Visio 2007 et les Addins DM SQL Server 2005

Imaginons que l’on génère des modèles de mining à la volée dans une application : clustering refait chaque nuit ou autre… Comment gérer la visualisation de ce modèle par des utilisateurs finaux ? Visio fournit bien des solutions mais celles ci sont entièrement manuelles et fastidieuses. Or il peut être très intéressant d’automatiser ce traitement, et de fournir par exemple en Web, de beaux graphes d’arbres de décision, de clusters ou autres. Pour coder cela, il va falloir utiliser les librairies du SDK Visio ainsi que quelques DLL des Office Data Mining Addins.
Pour cela, nous allons avoir besoin de certains des assemblys des addins (situés normalement dans le dossier « SQL Server Data Mining Addins » de Program Files)
-Microsoft.SqlServer.DataMining.Office.Visio.Programability.dll
-Microsoft.SqlServer.DataMining.Office.Visio.dll

Ces DLL doivent être linkées à un nouveau projet C#, lui même devant référencer les librairies:
-Microsoft Visio 12.0 Type Library
-Microsoft Visio 12.0 Save As Web Type Library
que vous trouverez normalement dans le GAC si vous avez le SDK.

Bon trève de bavardages, il est temps de commencer à coder. Tout d’abord, comme pour créer un document Visio classique, il faut récupérer un template (.vst). Celui ci est là encore dans le dossier cité ci dessus et s’appelle « Microsoft Data Mining.vst ».

string visioFile = //path du template
string webFile = //path de la page à générer

A vous de renseigner ces deux champs, personnellement je préfère inclure le fichier dans la solution histoire de ne pas me poser de problèmes au déploiement de l’appli. On va ensuite créer une shape issue du template. Il en existe 3
– les arbres de décision
– les clusters
– les réseaux de dépendances (surtout utiles pour représenter les réseaux bayésiens ou les règles d’association)

On va créer un exemple avec le premier modèle. Il s’agit de l’objet « ParameterDecisionTree »:

ParameterDecisionTree tree = new ParameterDecisionTree();

Il faut ensuite renseigner ses paramètres, les obligatoires étant ceux servant à créer la chaine de connexion au serveur AS dans Visio (alias de cette connexion, nom du serveur, de la base et du modèle de mining à modéliser)

tree.ConnectionName = //Nom de la connexion créée dans Visio
tree.DataSourceName = //Adresse du serveur AS
tree.CatalogName = //Base AS
tree.ModelName = //Nom du modèle dans la base AS
tree.TreeName = //Nom du graphique

On instancie ensuite un objet de type DMDrawingHelper, qui est une sorte de référence vers le processus Visio. Ensuite on le démarre.

DMDrawingHelper helper = new DMDrawingHelper(visioFile,false);
helper.Start();

Il ne reste plus ensuite qu’à lancer l’opération de dessin du diagramme:

helper.DrawDecisionTree(helper.ActivePage ,
tree);

Il est alors possible de générer une visualisation HTML de ce diagramme Visio, qui embarque un contrôle permettant de zoomer, voir des propriétés…

helper.SaveDocumentAsWebPage(helper.ActiveDocument ,
1,
1,
webFile ,
DMDrawingHelper.ShowNavigationBar | DMDrawingHelper.ShowPanAndZoom | DMDrawingHelper.ShowPropertiesWindow
);

Le dernier paramètre est composé d’options permettant de contrôler finement le HTML produit.

Tips additionnels

Pour retirer le titre assez laid que Visio intègre dans la page web (qui en plus donne le nom de votre modèle
de mining ce qui n’est pas forcément souhaitable) il suffit de retirer une des nodes Visio, en l’occurrence celle le contenant.

helper.ActivePage.Shapes.get_ItemU(« Decision Tree »).Delete();

Sur le même principe, on peut supprimer la légende…

helper.ActivePage.Shapes.get_ItemU(« LegendContainer »).Delete();

Encore autre chose: la page produite tire ses données d’un fichier XML appellé data.xml et situé dans le dossier associé. Moyennant quelques efforts (type Parsing DOM) on peut facilement modifier le contenu de ce fichier, par exemple pour
-le traduire
-ajouter des informations sur les nodes
-voire en retirer
ce qui peut donner un résultat tout à fait présentable dans le cadre d’une appli de reporting.


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