Récupérer les N derniers jours en MDX

Quand on consulte un cube, on a souvent envie/besoin de visualiser une période glissante (ie. dynamique, calée sur la date du jour). En effet, ce n’est pas terrible, quand on ouvre un TCD, de devoir changer le filtre de dates pour le remettre sur le mois en cours (surtout quand on le consulte en ligne depuis SharePoint).

Pour cela, il faut prévoir des mesures calculées ou une bidouille dans votre dimension temps. Mais on n’a pas toujours la possibilité de faire une évolution dans le cube (ce n’est peut-être pas le notre après-tout).

Pour résoudre la problématique, on va utiliser les jeux nommés (Named Sets) et Excel qui permet d’injecter un peu de MDX.

Le code de base

Le code MDX dont nous avons besoin doit ramener le Set contenant les membres de la dimension temps. Voici le code :

{
  Tail(NonEmpty([Date].[Date].[Date], [Measures].[ma mesure]  ), 1).Item(0).Lag(90)
  :
  Tail(NonEmpty([Date].[Date].[Date], [Measures].[ma mesure] ), 1).Item(0)
}

En gros, on prend le dernier élément avec une valeur ; Item() ramène le membre.

Tail(NonEmpty([Date].[Date].[Date],  [Measures].[ma mesure]  ), 1).Item(0)

On se décale dans la dimension, ici de 90 jours

.Lag(90)

Et on construit le tout dans un intervalle : { <firstmember> : <lastmember> }

Et on mets ça où ?

Non. Ne répondez pas, je sais ce que vous avez en tête…

Dans le ruban d’un tableau croisé dynamique, il y un menu pour gérer les Named Sets. On choisit d’en créer un en MDX.

23

Il suffit de copier coller son MDX et il apparaître dans les « jeux » disponibles dans votre cube.1

Inconvénient

L’inconvénient, je suis sûr que vous l’avez déjà repéré. Le problème est que le code MDX est dépendant d’une mesure explicite, ie. on prend la dernière date où il y a une mesure. Si vos mesures ne sont pas sur le même tempo, vous pourrez avoir un décalage.

Disclaimer

Je n’ai pas la prétention de dire que c’est :

  • l’unique façon de faire cela
  • la façon la plus propre de faire cela

Donc si vous avez d’autres techniques, n’hésitez pas dans les commentaires.

(notamment la solution pour contourner l’inconvénient remonté)

 

 

 

 

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