Blog Pro de Jean-Baptiste HEREN

Notes d'un consultant Freelance en Informatique

To content | To menu | To search

Analyse d'écarts dans le temps avec Analysis Services

L'exemple suivant illustre un cas courant d'analyse d'écarts d'une mesure dans le temps, traité via des formules MDX dans un cube Microsoft Analysis Services. 
Cela pourrait s'appliquer à un "reporting" sur la qualité des prévisions de vente par rapport aux ventes réalisé.

Présentation du cas

Une table de faits contenant une "photo" mensuelle d'un calendrier de prévisions

|--------------------|
| Fact Table         |
|--------------------|
|EXTRACT_DATE (key)  | Date d'extraction (Photo des données)
|SCHEDULE_DATE (Key) | Date de la prévision
|Item_Code (Key)     | Code article
|...                 | Divers axes (client, Filiale, etc.)
|QTY(measure)        | Quantité prévue
|--------------------|
Notre but est de contrôler a posteriori, l'évolution de la quantité prévue, au cours du temps (chargements mensuels). L'idée est d'évaluer la fiabilité des prévisions au cours du temps, par rapport au réalisé.
Pour exemple :
- On choisit d'observer l'évolution de la quantité prévue en Juin 2010
- Nous souhaiterons donc afficher pour chaque date d'extraction précédent Juin 2010, la quantité enregistrée sur Juin 2010
- Cela revient à comparer Juin 2010 respectivement avec chacune des périodes d'extraction désirées.

Dans ce contexte, il est intéressant de savoir détecter l'équivalence entre les éléments de nos deux dimensions temporelles.

Cela peut être réalisé par l'utilisation de la fonction MDX suivante, qui retourne le membre équivalent à un membre spécifié dans une hiérarchie spécifique :
LinkMember(Member_Expression, Hierarchy_Expression)
L'utilisation de cette fonction est illustrée dans les formules suivantes.

Les Formules

Voici maintenant les formules utilisées pour calculer les écarts pour chaque période par rapport à la période de référence.

[Qty on Schedule]
Description : Quantité de référence. correspond à la date d'extraction "la plus proche" de la date prévue.
SUM(LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])

[Accuracy Qty]
description : % de validité des quantités (totales) entre la date d'extraction du contexte et la quantité de référence (ci-dessus)
iif([Measures].[QTY] > 0,
1- ABS(([Measures].[QTY] - [Measures].[Qty on Schedule]) /iif([Measures].[Qty on Schedule] > [Measures].[QTY],[Measures].[Qty on Schedule],[Measures].[QTY]))
,0)

[Accuracy Qty by Item]
Description : % de validité pondéré par article
SUM(descendants([Item].[By Model].currentmember,[Item].[By Model].[Item Code])
,Measures.[Accuracy Qty]*Measures.[Qty on Schedule])/SUM(Measures.[Qty on Schedule])

Exemple de rapport

Voici un exemple de rapport attaquant un cube SSAS depuis Cognos.

Jean-Baptiste Heren

Author: Jean-Baptiste Heren

Stay in touch with the latest news and subscribe to the RSS Feed about this category

Comments are closed


no attachment



You Might Also Like

result_crosstab.png

Cognos Report : Display a different measure in row for the aggregated column

Following tip is when you use a Relational Datamodel (DMR). In a Cognos Report crosstab, If You need to Display different measure in the aggregated column, you can do it using a simple if-then-else...

Continue reading

Cognos 8 - convert a member unique name from one hierarchy to another

If you need to build any report or Event studio Query using the same data from different packages; and you want to prompt just once. You can convert the member unique name from one hierarchy to...

Continue reading