Data Mining et OLAP: Scénario de Cross-Selling

Aux TechDays, il y a bientôt 6 mois, nous avions abordé avec Romuald Coutaud le scénario de Forecasting depuis un cube OLAP, avec insertion des prévisions dans le cube. J’ai eu l’idée d’un scénario alternatif de démonstration de la complémentarité du DataMining et de l’OLAP: l’utilisation d’algorithmes de Cross-Selling en compléments d’un outil d’analyse multidimensionnelle.

L’idée générale est d’ajouter via une action la potentialité pour l’opérateur de voir à la demande, depuis son frontal, pour chaque client une liste d’items à recommander, en passant par le mécanisme de Rowset actions et du DMX.

Pour l’exemple j’ai construit un tout petit cube: c’est un sous-set de celui d’AdventureWorks2008DW: seulement 3 dimensions: Customer, Product et Time (RPD 3 fois) sur la FactInternetSales dont seules les mesures OrderQuantity et SalesAmount on été créées.

Sur ce cube, j’ai construit un MiningModel d’Association Rules, basé sur Customer en Case et Product en Nested – le bridge N-N se faisant implicitement via le groupe de mesures lorsque l’on crée des modèles en source OLAP.


Les deux étapes à suivre sont donc:

  1. Création d’une action sur les membres de la dimension Customer
  2. Exécution d’une requête DMX contextuelle sur cette action, et renvoi en rowset des prédictions.

La requête DMX se décompose elle même en deux parties:

  1. Appel de la fonction PredictAssociation qui prend en paramètre la table imbriquée à prédire (ici les futurs produits à acheter)
  2. Jointure du modèle avec deux requêtes MDX: une pour récupérer le client (SHAPE) et une autre pour récupérer les produits achetés par celui-ci (APPEND), ces deux requêtes reliées logiquement par l’ID client (RELATE..ON).

Pour chaque client on obtient donc prédictions de produits intéressants (5 étant la valeur donnée à PredictAssociation).

SELECT FLATTENED PredictAssociation([Products],5)
FROM [CrossSellingByCustomer_MAR]
PREDICTION JOIN
SHAPE
{
SELECT {[Measures].[Order Quantity]} ON 0,
{[Customer].[Customer].&[28187]} ON 1
FROM [OLAPCrossSellingCube]
}
APPEND
(
{
SELECT {[Measures].[Order Quantity]} ON 0,
NON EMPTY {[Customer].[Customer].&[28187]*[Product].[Product].[All].Children} ON ROWS
FROM [OLAPCrossSellingCube]
}
RELATE [[Customer]].[Customer]].[Customer]].[MEMBER_CAPTION]]]
TO [[Customer]].[Customer]].[Customer]].[MEMBER_CAPTION]]]
)
AS n
AS t
ON [CrossSellingByCustomer_MAR].[Products].[Product] =
t.n.[[Product]].[Product]].[Product]].[MEMBER_CAPTION]]]

Il ne reste plus qu’à créer une action de cube, de type Rowset (renvoi de lignes) qui prend en instruction une chaîne de caractères à envoyer au serveur Analysis Services.

Cette action est paramétrée en déclenchement sur les membres de la hiérarchie utilisateur de la dimension Client. Cela signifie que dans un client compatible (Excel, OWC…) tout clic droit sur un membre à ce niveau donnera un menu contextuel permettant de déclencher cette action, et donc d’afficher une boîte modale contenant les prédictions effectuées pour ce membre. Le statement déclenché pour ce faire sera notre instruction DMX, en remplaçant simplement les IDs du client – en dur ci dessus – par celui du membre courant dans la hiérarchie utilisateur, via l’appel à « CurrentMember.UniqueName » (MDX).

Une fois le cube déployé on peut voir que l’action est disponible lorsque l’on browse par la bonne hiérarchie…


Ce qui permet d’afficher les prédictions pour ce membre…


Cela marche évidemment aussi pour Excel:



Quelles sont les applications de ce genre de fonctionnalités? Cela permet de voir le cube non seulement comme outil d’analyse, mais aussi et surtout comme outil non plus passif mais actif pour des interlocuteurs fonctionnels.

Le cube permet d’analyser quelles ont été les ventes (OLAP simple) quelles seront les ventes (OLAP avec données forecastées, tel que montré aux TechDays) mais aussi d’optimiser le processus de vente, en proposant les bonnes offres aux bons prospects, via une méthode éprouvée, le tout de manière intégrée et facile à mettre en oeuvre.

Voilà, en espérant vous donner des idées.

A bientôt!

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