Utiliser des fonctions Time Intelligence DAX

Effectué

DAX comprend plusieurs fonctions Time Intelligence pour simplifier la tâche de modification du contexte de filtre de date. Vous pouvez écrire plusieurs de ces formules Time Intelligence à l’aide d’une fonction CALCULATE qui modifie les filtres de date, mais cela crée plus de travail.

Remarque

De nombreuses fonctions Time Intelligence DAX fonctionnent avec des périodes de date standard telles que les années, les trimestres et les mois. Si vous avez des périodes irrégulières, comme des mois financiers qui ne correspondent pas au calendrier, ou si vous devez utiliser des semaines ou des périodes plus courtes, les fonctions DAX intégrées ne vous aideront pas. Dans ce cas, utilisez la fonction CALCULATE avec des filtres de date ou d’heure personnalisés.

Exigence relative à la table de dates

Pour utiliser les fonctions Time Intelligence DAX, vous devez respecter l’exigence du modèle prérequis selon laquelle votre modèle doit comporter au moins une table de dates. Une table de dates est une table marquée comme table de dates. Cette table doit comporter une colonne dont le type de données est Date (ou date/heure), appelée colonne de dates. La colonne de dates doit :

  • comporter des valeurs uniques ;
  • s’étendre sur des années complètes ;
  • ne comporter aucune valeur BLANK ;
  • ne comporter aucune date manquante.

Pour en savoir plus, consultez Créer des tables de dates dans Power BI Desktop.

Résumés dans le temps

Un groupe de fonctions Time Intelligence DAX est axé sur les résumés dans le temps :

  • DATESYTD : renvoie une table à une seule colonne comportant les dates depuis le début de l’année (YTD) dans le contexte de filtre actuel. Ce groupe comprend également les fonctions DATESMTD et DATESQTD pour les dates depuis le début du mois (MTD) et les dates depuis le début du trimestre (QTD). Vous pouvez transmettre ces fonctions en tant que filtres dans la fonction CALCULATE.
  • TOTALYTD : évalue une expression pour YTD dans le contexte de filtre actuel. Les fonctions DAX TOTALQTD et TOTALMTD équivalentes pour QTD et MTD sont également incluses.
  • DATESBETWEEN : renvoie une table comportant une colonne de dates qui commence par une date de début donnée et se poursuit jusqu’à une date de fin donnée.
  • DATESINPERIOD : renvoie une table comportant une colonne de dates qui commence par une date de début donnée et se poursuit pour le nombre spécifié d’intervalles.

Remarque

Bien que la fonction TOTALYTD soit conviviale, vous êtes limité à transmettre une expression de filtre. Si vous devez appliquer plusieurs expressions de filtre, utilisez la fonction CALCULATE, puis transmettez la fonction DATESYTD comme l’une des expressions de filtre.

Dans l’exemple suivant, vous allez créer votre premier calcul Time Intelligence qui utilise la fonction TOTALYTD. La syntaxe est la suivante :

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

La fonction requiert une expression et, comme c’est le cas pour toutes les fonctions Time Intelligence, une référence à la colonne de dates d’une table de dates marquée. Vous pouvez également transmettre une expression de filtre unique ou la date de fin d’année (obligatoire seulement si l’année ne se termine pas le 31 décembre).

Téléchargez et ouvrez le fichier Adventure Works DW 2020 M07.pbix. Ensuite, ajoutez la définition de mesure suivante à la table Sales qui calcule le chiffre d’affaires YTD. Mettez la mesure au format devise à deux décimales.

Revenue YTD =
TOTALYTD(
    [Revenue],
    'Date'[Date],
    "6-30"
)

La valeur de date de fin d’année "6-30" représente le 30 juin.

Sur la Page 1 de l’état, ajoutez la mesure Revenue YTD au visuel Matrice. Notez que cela produit un résumé des montants de chiffre d’affaires à partir du début de l’année jusqu’au mois filtré.

Capture d’écran illustrant un visuel Matrice avec un regroupement sur Year et Month sur les lignes et les résumés Revenue et Revenue YTD. Les valeurs YTD sont mises en évidence.

Comparaisons dans le temps

Un autre groupe de fonctions Time Intelligence DAX est axé sur le décalage de périodes :

  • DATEADD : renvoie une table comportant une colonne de dates décalées vers le futur ou le passé du nombre spécifié d’intervalles par rapport aux dates dans le contexte de filtre actuel.
  • PARALLELPERIOD : renvoie une table comportant une colonne de dates qui représente une période parallèle aux dates dans la colonne de dates spécifiée, dans le contexte de filtre actuel, avec les dates décalées de plusieurs intervalles vers le futur ou le passé.
  • SAMEPERIODLASTYEAR : renvoie une table comportant une colonne de dates décalées un an en arrière par rapport aux dates dans la colonne de dates spécifiée, dans le contexte de filtre actuel.
  • De nombreuses fonctions DAX d’assistance permettent de naviguer vers l’arrière ou vers l’avant pour des périodes spécifiques, qui renvoient toutes une table de dates. Ces fonctions d’assistance incluent NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR, PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER et PREVIOUSYEAR.

À présent, vous allez ajouter une mesure à la table Sales qui calcule le chiffre d’affaires de l’année précédente à l’aide de la fonction SAMEPERIODLASTYEAR. Mettez la mesure au format devise à deux décimales.

Revenue PY =
VAR RevenuePriorYear = CALCULATE(
    [Revenue],
    SAMEPERIODLASTYEAR('Date'[Date])
)
RETURN
    RevenuePriorYear

Ajoutez la mesure Revenue PY au visuel Matrice. Notez qu’elle produit des résultats similaires aux montants de chiffre d’affaires de l’année précédente.

Capture d’écran illustrant un visuel Matrice avec un regroupement sur Year et Month sur les lignes et les résumés Revenue, Revenue YTD et Revenue PY. Les valeurs mensuelles Revenue PY pour FY2019 sont égales aux valeurs mensuelles Revenue pour FY2018.

Ensuite, vous allez modifier la mesure en la renommant Revenue YoY % et en mettant à jour la clause RETURN pour calculer le taux de variation. Veillez à redéfinir le format sur un pourcentage avec deux décimales.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE(
    [Revenue],
    SAMEPERIODLASTYEAR('Date'[Date])
)
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Notez que la mesure Revenue YoY % produit un facteur de taux de variation par rapport au chiffre d’affaires mensuel de l’année précédente. Par exemple, July 2018 représente une augmentation de 106,53 % par rapport au chiffre d’affaires mensuel de l’année précédente, et November 2018 représente une diminution de 24,22 % par rapport au chiffre d’affaires mensuel de l’année précédente.

Capture d’écran illustrant un visuel Matrice avec un regroupement sur Year et Month sur les lignes et les résumés Revenue, Revenue YTD et Revenue YoY %. Les valeurs mensuelles Revenue YoY % pour FY2019 sont les valeurs au format de pourcentage.

Remarque

La mesure Revenue YoY % démontre une bonne utilisation des variables DAX. La mesure améliore la lisibilité de la formule et vous permet d’effectuer des tests unitaires sur une partie de la logique de la mesure (en renvoyant la valeur de variable RevenuePriorYear). En outre, la mesure est une formule optimale, car elle n’a pas besoin de récupérer deux fois la valeur du chiffre d’affaires de l’année précédente. Après l’avoir stockée une fois dans une variable, la clause RETURN utilise la valeur de variable deux fois.