Fonctions MDX basées sur le temps

Un peu de MDX pour commencer la semaine, ça fait du bien non ?!!

Comme vous l’avez déjà vu dans le titre, le but de cet article est de partager avec vous quelques fonctions MDX basées sur le temps et qui sont très utiles.

Le temps est un composant essentiel pour l’analyse du Business. Les analystes interprètent l’état de l’entreprise maintenant, souvent par rapport à ce qu’elle était dans le passé, dans le but de comprendre ce qu’il pourrait être à l’avenir.

Pour supporter ça, Analysis services fournit un certain nombre de fonctions MDX basées sur le temps, voici quelques-unes :

  • PeriodsToDate
PeriodsToDate( [Level, [Member]] )
La fonction PeriodsToDate renvoie l’ensemble des membres du début d’une période donnée jusqu’à un membre spécifié y compris le membre concerné. L’argument Level identifie le niveau de la hiérarchie représentant la période sur laquelle l’ensemble retourné doit s’étendre, tandis que l’argument Member identifie l’élément final de l’ensemble.

Prenons l’exemple suivant :

SELECT
    {([Measures].[Reseller Sales Amount])} ON COLUMNS,
    {
        PeriodsToDate(
            [Date].[Calendar].[Calendar Year],
            [Date].[Calendar].[Month].[April 2002]
            )
        } ON ROWS
FROM [AdventureWorksCube]
;

Résultat :

Dans la requête précédente, vous avez utilisé la fonction PeriodsToDate pour récupérer tous les mois dans l’année 2002 avant et y compris le mois d’avril.

Si vous souhaitez calculer une valeur cumulative pour toutes les périodes pour lesquelles des données sont enregistrées, vous pouvez remplacer l’argument level par le ALL.

PeriodsToDate(
        [Date].[Calendar].[(All)],
        [Date].[Calendar].CurrentMmember
)
  • LastPeriods
LastPeriods( n [, Member] )

La fonction LastPeriods renvoie un ensemble de n membres avant ou après (et incluant) un membre spécifié d’une hiérarchie temps. Si une valeur n positive est fournie, l’ensemble retourné inclut les membres précédant le membre d’intérêt. Si une valeur n négative est fournie, l’ensemble renvoyé inclut les membres suivant le membre d’intérêt.

Un exemple pour bien comprendre :

SELECT
    {([Measures].[Reseller Sales Amount])} ON COLUMNS,
    {
        LastPeriods(
            3,
            [Date].[Calendar].[Month].[January 2002]
            )
        } ON ROWS
FROM [AdventureWorksCube]
;

Résultat :

Dans cette requête, vous avez utilisé la fonction LastPeriods pour récupérer la période de trois mois précédant et incluant January 2002. Analysis services commence avec le membre spécifié, January2002 et traite cela comme période 1. Cela laisse n-1 ou n-2 membres à retourner Dans l’ensemble. Parceque n est un nombre positif, Analysis services récupère les deux frères et sœurs précédents du membre de January 2002 pour compléter l’ensemble (Novembre 2001 et Décembre 2001).

  • ParallelPeriod
ParallelPeriod( [Level [,n [, Member]]] )

Pour comprendre ParallelPeriod, considérons le mois d’avril 2003. ce mois est le quatrième mois de l’année civile 2003. Dans une entreprise fortement influencée par le cycle annuel, vous pourriez comparer les valeurs pour ce mois à celles pour le mois d’avril dans un précédent an.

  1. Le premier argument de la fonction identifie le niveau de la hiérarchie temps à travers laquelle vous souhaitez identifier le membre de période parallèle. Si aucun niveau n’est identifié, le niveau parent de l’élément de temps actuel est supposé.
  2. Le second argument de la fonction identifie à quelle distance du niveau identifié que vous souhaitez aller récupérer le membre parallèle. Si aucune valeur n’est fournie, une valeur de 1 est supposée, indiquant la période précédente.
  3. L’argument final de la fonction identifie le membre pour lequel la période parallèle doit être déterminée. La position de ce membre par rapport à son ancêtre dans le niveau spécifié détermine l’élément extrait de la période historique. Si aucun membre n’est identifié, l’élément de temps actuel est supposé.

Un exemple pour illustrer ça :

WITH
MEMBER [Measures].[x] AS
    ParallelPeriod(
        [Date].[Calendar].[Calendar Year],
        1,
        [Date].[Calendar].CurrentMember
        ).Name
SELECT
    {
        ([Measures].[Reseller Sales Amount]),
        ([Measures].[x])
        } ON COLUMNS,
    {
        Descendants(
            [Date].[Calendar].[Calendar Year].[CY 2003],
            [Date].[Calendar].[Month],
            SELF
            )
         } ON ROWS
FROM [AdventureWorksCube]
;

Résultat :

Dans la requête précédente, la fonction ParallelPeriod permet d’identifier la période parallèle de l’année précédente pour chaque mois de l’année civile 2003.

La fonction ParallelPeriod renvoie un membre et le nom de ce membre est renvoyé avec un nouveau membre calculé pour vérifier que le membre approprié est identifié.

  • Conclusion :

L’utilisation des fonctions MDX basées sur le temps par rapport aux hiérarchies de calendrier, donnent l’apparence d’une prise de conscience du temps. Cependant, la plupart des fonctions basées sur le temps exploitent simplement la structure de base de la hiérarchie pour renvoyer l’ensemble ou le membre requis.

 

 

Une réflexion au sujet de « Fonctions MDX basées sur le temps »

  1. I love it when individuals come together and share
    ideas. Great blog, continue the good work!

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *