Blog Pro de Jean-Baptiste HEREN

Notes d'un consultant Freelance en Informatique

To content | To menu | To search

Formules MDX - Associer deux dimentions temporelles avec LINKMEMBER

Voici un exemple d'utilisation de la fonction LINKMEMBER pour le calcul d'une mesure dans un cube Miscosoft SSAS.

Présentation

Cet exemple est extrait d'un travail sur le thème de la "validité des prévisions":
  • Des données de prévision commerciale sont extraites et stockées chaque semaine. Chacune de ces extractions correspond à une valeur EXTRACT_DATE.
  • Les données d'entrée nous donnent des quantités (QTY) par date de prévision (SCHED_HIPT_DTTM)
  • Dans le cas réel, plusieurs dimensions complémentaires sont présentes (client, produit, etc.)
Notre table de faits présente donc au minimum, pour l'exemple, les éléments suivants :
  • EXTRACT_DATE (KEY) 
  • SCHED_SHIP_DTTM ((KEY)
  • QTY (MEASURE)

Besoin d'analyse

Il s'agit d'observer au cours du temps (date de vision), l'évolution des quantités prévues pour une date donnée (date de prévision).
Par exemple, nous voulons observer l'évolution des quantités prévues pour Mai 2010, durant les mois qui précèdent. Le but est d'évaluer la fiabilité des prévisions de M-1 à M-6.

Modèle

On a donc un modèle de base contenant une table de fait et deux dimensions temporelles.


Dimensions

Les dimensions que nous voulons lier ont une structure identique.

Extract Time (date de Vision)



Schedule Time (date de réalisation prévue de la mesure)


Formule

Dans les formules suivantes, nous utilisons la fonction LINKMEMBER (Retourne le membre équivalent à un membre spécifié dans une hiérarchie spécifique).
CREATE MEMBER CURRENTCUBE.[MEASURES].[Qty on Schedule]
AS SUM(
LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])
,[Measures].[QTY]),
VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[MEASURES].[QTY M-1]
AS SUM(parallelperiod([Extract Time].[Extract Time].[Month], 1, LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])),[Measures].[QTY]),
VISIBLE = 1 ;

CREATE MEMBER CURRENTCUBE.[MEASURES].[QTY M-2]
AS SUM(parallelperiod([Extract Time].[Extract Time].[Month], 2, LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])),[Measures].[QTY]),
VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[MEASURES].[QTY M-3]
AS SUM(parallelperiod([Extract Time].[Extract Time].[Month], 3, LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])),[Measures].[QTY]),
VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[MEASURES].[QTY M-4]
AS SUM(parallelperiod([Extract Time].[Extract Time].[Month], 4, LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])),[Measures].[QTY]),
VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[MEASURES].[QTY M-5]
AS SUM(parallelperiod([Extract Time].[Extract Time].[Month], 5, LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])),[Measures].[QTY]),
VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[MEASURES].[QTY M-6]
AS SUM(parallelperiod([Extract Time].[Extract Time].[Month], 6, LINKMEMBER([Schedule Time].[Schedule Time].currentmember,[Extract Time].[Extract Time])),[Measures].[QTY]),
VISIBLE = 1;

Résultat

En ne précisant que la "Schedule Time", on constate que l'"Extract Time" s'est bien positionnée automatiquement.


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