Boite à outils Office

Comment consommer ses données Commerce Server pour Power Pivot via un service de données REST

.Net, Commerce Server, Développement, WCF 1 Comment »

Suite à mes deux posts sur Commerce Server et Power Pivot (Créer des rapports simples et efficaces pour Commerce Server grâce à PowerPivot (aka Gemini) et Comprendre et analyser vos données Commerce Server grâce à Power Pivot), j’ai reçu quelques questions concernant la récupération des données provenant de Commerce Server.

En effet, il n’est pas rare (j’ose difficilement concevoir la chose autrement) que le(s) serveur(s) e-Commerce soi(en)t hébergé(s) sur un data center déconnecté de l’environnement de l’entreprise (du webmaster, du consultant,…), rendant donc impossible une connexion directe à la base de données.

Que faire donc pour récupérer les données et les exploiter?

  • Réplication SQL Server entre l’environnement de production et votre environnement local
    • Avantages:
      • Nombreuses possibilités de synchronisations (temps réels ou différés)
      • Technologie éprouvée et robuste
    • Inconvénients:
      • Nécessite d’avoir un SGBD (oui tous les consultants n’ont pas un SGBD Smile)
      • Exposer sa base de données, qui normalement doit être derrière la DMZ (même si vous filtrez les IPs ce n’est quand même pas génial en terme de sécurité ou passer par une LS)
  • Exporter les données dans un format texte pour le réintégrer dans l’environnement de base de données local
    • Avantages:
      • Possibilité d’importer de nombreux types de fichiers textes formatés dans Excel
      • Ouverture/Import des fichiers textes comme sous Excel
    • Inconvénients:
      • L’import de fichiers dans Excel n’est pas toujours simple à appréhender par un novice
      • Gestion de plusieurs fichiers pouvant être complexes à maintenir et gérer
  • Utilisez la capacité de PowerPivot à consommer un flux de données type RSS (voir la MSDN à ce sujet)
    • Avantages:
    • Inconvénients:
      • Technologie encore récente
      • Nécessite d’utiliser un protocol https ou une LS pour garantir une bonne sécurisation du transfert de données.

Ces 3 solutions ont chacune leurs avantages et inconvénients et le choix dépend fortement de votre architecture et vos besoins (ie pas de règles figées dans le marbre!). Pour ma part, j’ai décidé de vous présenter la dernière solution: à savoir un flux de données de type RSS.

Pour exposer vos données en asp.net, l’idéal est d’utiliser un service WCF qui se chargera de rendre vos données au format désiré (ici l’ATOM). Bien que l’exposition de vos données au travers d’un service WCF n’est pas nouvelle (il en existe de nombreuses façons pour le réaliser), l’exposer nativement en mode REST et au format ATOM (ou json) pour la représentation des données via une URI (autrement dit, l’utilisation du protocol OData) l’est beaucoup moins!

Pour réaliser cela, nous avons besoin d’avoir une application web dans lequel nous allons ajouter une item de type “ADO.Net Entity Data Model” connecté à votre base de données SQL Server.

image

Dans le cas où vos rapports se basent sur les commandes, vous devez choisir la base de données <site commerce server>_Transactions.

 image

Ajoutez ensuite une item de type WCF Data Service

image

Dans le service créé, ajoutez à la méthode InitializeService le code suivant:

config.SetEntitySetAccessRule("DiscountsApplied", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("LineItems", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("OrderAddresses", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("OrderForms", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("PurchaseOrderPayments", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("PurchaseOrders", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("Shipments", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("ShippingDiscounts", EntitySetRights.AllRead);

 

Ceci vous permettant de donner un accès en lecture seule à vos entitées et donc par extension aux tables de la base de données.

Affichez votre service dans votre navigateur et vous obtenez automatiquement un flux XML Atom listant les différentes entités auxquelles vous avez accès.

image

Ajoutez par exemple LineItems à la fin de votre url (ex: http://localhost//CommerceServerOrdersDataService.svc/LineItems)

Votre navigateur affiche alors, une page similaire à n’importe quel flux RSS:

image

Pour afficher le flux XML à la place de l’interface RSS, allez dans les options internet > Contenus > Paramètres des flux RSS et décochez la case d’affichage RSS

image

image 

Et voilà la partie développement est terminée ! Vous pouvez consommer votre flux dans Power Pivot dès à présent:

image image image

image

Je vous montrerez dans un prochain post comment inclure les flux dans la même stratégie de sécurité que les web services Commerce Server.

Retrouvez plus d’informations sur:

Comprendre et analyser vos données Commerce Server grâce à Power Pivot

Analytics, BI, Commerce Server, Power Pivot, Reporting, SQL Server 3 Comments »

Suite à mon article sur Power Pivot et Commerce Server, j’ai décidé d’aller un peu plus dans le détail et vous présenter trois scénarii basique de tableau de bord, ainsi que le fichier Excel (et Power Pivot) que j’ai utilisé pour que vous puissiez le tester et vous en servir pour monter vos propres dashboard sur votre site Commerce Server.

Le but ici, n’est donc pas de vous montrer comment créer une source de données ou relier des tables entres elles. Il existe déjà pour cela de nombreux articles :

Pour réaliser ce post, vous devez vous munir de :

Les base de données

Pour créer nos différents tableaux de bords, nous avons besoin de nous connecter à deux bases de données :

  • Profiles (ici SPGael_profiles) : Contient les informations sur le compte client
    • Dans cette table, j’ai un champ personnalisé pour stocker la date de naissance. Toutes les autres données sont natives dans Commerce Server
  • Transactions (ici SPGael_transactions) : Contient les informations de commandes
    • Toutes les données sont celles disponibles de bases dans Commerce Server.

Sélectionner les tables :

  • Commandes
    • DiscountsApplied : Contient les informations des opérations commerciales appliquées sur les commandes ;
    • LineItems : Contient les données des lignes de commandes ;
    • OrderAddresses : Contient les adresses utilisées lors du passage de commande ;
    • OrderForms : Contient les conteneurs des LineItems (une commande possède de 1 à n OrderForms et un OrderForms possède de 1 à n LineItems) ;
    • PurchaseOrderPayments : Contient les différents moyen de paiements utilisés lors du passage de commande ;
    • PurchaseOrders : Contient les informations générales sur une commande ;
    • Shipments : Contient les informations de livraisons utilisées sur une commande ;
    • ShippingDiscounts : Contient les opérations commerciales sur le mode de livraison ;
  • Clients
    • UserObjet : Contient les informations d’un client

Tableau de bord général

dashboard eCommerce

Tableau de bord Commande

dashboard eCommerce

Tableau de bord Clients

dashboard eCommerce

 

Read the rest of this entry »

Créer des rapports simples et efficaces pour Commerce Server grâce à PowerPivot (aka Gemini)

Analytics, BI, Commerce Server, Power Pivot, Reporting, SQL Server 6 Comments »

Dans un de mes précédents post, j’ai expliqué comment mettre en place la solution analytics de Commerce Server, et je pense qu’il a dû y avoir de la déception chez certains (qui a dit tous?) d’entre vous!

Même si les cubes fournis peuvent être un bon point de départ, le process d’import est lui complètement obsolète et s’apparente plus à une boite noire où il est quasi impossible d’y “tunner” (comprendre?) quelque chose (je laisse sous silence les rapports qui sont eux plus que périmé)…

Bref, vous l’aurez compris, il est temps que la team Commerce Server se penche sur cette fonctionnalité pour lui donner un bon coup de peinture!

En attendant, que faire?:

  • Développez de nouveaux rapports sur la base des cubes/process import
    • Avantage:
      • Pas de cube à développer, on ne part pas de 0 
      • En fonction de vos besoins peu de temps de développement pour ajouter quelques informations
    • Inconvénient
      • Espérer que le process d’import se passe bien et corresponde à vos besoins
      • Long travail de redesign des rapports si vous souhaitez un layout plus moderne
      • La structure des cubes ne correspond pas forcément à votre besoin
      • Nécessite une intervention de l’IT pour toutes adaptations
  • Développez vos propres cubes
    • Avantage
      • Vous collez à vos besoins
    • Inconvénient
      • Nécessite une intervention de l’IT pour toutes modifications/évolutions
      • Temps de mise en place pouvant être assez long
  • Ne rien faire
    • :)

Dans tous les cas, un passage par l’IT s’avère obligatoire et vous n’avez pas forcément la patience d’attendre pour exploiter votre site internet?

Bonjour et bienvenue à Gemini, pardon Power Pivot :)

Power Pivot est le nouvel outil développé par Microsoft pour faciliter et vulgariser la BI sur le poste de travail (rien que çà). Il se présente sous la forme d’un add-in pour Excel 2010 (attention ne fonctionne qu’avec la version d’office 2010):

Je me suis donc amusé à le tester sur un site Commerce Server d’un de mes clients et j’avoue que je suis sidéré par sa facilité de prise en main et la rapidité d’exécution.

L’ajout de source de données se fait via un onglet dédié et comme toujours dans office, la manipulation est largement facilitée et guidée:

image

image   image  image  image  image  image

Et voilà, en 5 minutes montre en main, j’ai importé une base transactions de Commerce Server de 2Go dans un fichier Excel! Et cerise sur le gâteau, le fichier fait à peine 40mo! Pour les sceptiques:

image image

Grâce à la structure relationnel et multi dimensionnel de Power Pivot, je vais pouvoir créer simplement et rapidement des tableaux croisés dynamiques ou graphiques en quelques minutes. Prenons par exemple une représentation graphique du nombre de commande par jour

  • Tout d’abord, spécifier qu’on veut un graphique

image 

  • Ensuite, on ajoute en valeur le nombre de tracking number et en axis la date de création

image

  • Pas vraiment lisible je vous l’accorde :) En effet, la colonne created contient la date et l’heure! Pour regrouper par mois, il nous faut donc une colonne ne contenant que le mois et l’année du champ ‘”created”. Pour cela, rien de plus facile! Il nous suffit de créer une nouvelle colonne dans notre onglet “Purchase Orders” en utilisant le langage DAX  (qui est très proche du langage de formule d’Excel): RIGHT("0" &MONTH([Created]),2) &"/" &year([Created])

image

  • On rafraichit la source et notre nouvelle colonne est maintenant disponible. Résultat:

image

Facile non :)

Vous comprenez qu’il est donc très simple de mettre en place des dashboards puissant grâce au couplage PowertPivot (pour les data) et Excel (pour le formatage), exemple:

image

 

Pour plus d’informations:

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in
Creative Commons License