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 un grand nombre de ces formules Time Intelligence à l’aide d’une fonction CALCULATE qui modifie les filtres de date, mais cela requiert plus de travail.

Notes

De nombreuses fonctions Time Intelligence DAX se concentrent sur les périodes de date standard, notamment les années, les trimestres et les mois. Si vous avez des périodes de temps irrégulières (par exemple, des mois financiers qui commencent au milieu du mois civil) ou si vous devez travailler avec des semaines ou des périodes de temps (heures, minutes, etc.), les fonctions Time Intelligence DAX ne vous seront pas utiles. Au lieu de cela, vous devrez utiliser la fonction CALCULATE et transmettre des filtres de date ou d’heure élaborés à la main.

Spécification de la table de dates

Pour utiliser les fonctions Time Intelligence DAX, vous devez respecter la configuration requise du modèle prérequis qui indique qu’au moins une table de dates doit être présente dans votre modèle. Une table de dates est une table qui répond aux exigences suivantes :

  • Elle doit avoir une colonne de type de données Date (ou date/heure), connue sous le nom de colonne de date.
  • La colonne de dates doit contenir des valeurs uniques.
  • La colonne de dates ne doit pas contenir de valeurs vides.
  • Il ne doit pas y avoir de dates manquantes dans la colonne de dates.
  • La colonne de dates doit couvrir des années entières. Une année n’est pas nécessairement une année civile (janvier-décembre).
  • La table de dates doit être indiquée comme une table de dates.

Pour plus d’informations, consultez Créer des tables de dates dans Power BI Desktop.

Synthèses dans le temps

Un groupe de fonctions Time Intelligence DAX s’intéresse aux synthèses dans le temps :

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

Notes

Alors que la fonction TOTALYTD est simple à utiliser, vous êtes limité à la transmission d’une seule 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 utilisera 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 date d’une table de dates marquée. Si vous le souhaitez, une expression de filtre unique ou la date de fin d’année peut être transmise (obligatoire uniquement lorsque 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 en forme la mesure en tant que devise avec 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 du rapport, ajoutez la mesure Revenue YTD (Chiffre d’affaires en cumul annuel à ce jour) au visuel matrice. Notez que cela produit une synthèse des montants des chiffres d’affaires à partir du début de l’année jusqu’au mois filtré.

Comparaisons dans le temps

Un autre groupe de fonctions Time Intelligence DAX s’intéresse aux périodes de temps décalées :

  • DATEADD : retourne une table qui contient une colonne de dates, décalées en avant ou en arrière dans le temps du nombre d’intervalles spécifié par rapport aux dates dans le contexte de filtre actuel.
  • PARALLELPERIOD : retourne une table contenant une colonne de dates qui représente une période parallèle aux dates de la colonne de dates spécifiée, dans le contexte de filtre actuel. Les dates sont avancées ou reculées dans le temps d’un certain nombre d’intervalles.
  • SAMEPERIODLASTYEAR : retourne une table qui contient une colonne de dates décalées d’une année en arrière par rapport aux dates de la colonne de dates spécifiée, dans le contexte de filtre actuel.
  • Il existe de nombreuses fonctions DAX d’assistance pour naviguer vers l’arrière ou vers l’avant pour des périodes de temps spécifiques, qui retournent toutes une table de dates. Ces fonctions d’assistance sont les suivantes : NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR et 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 en forme la mesure en tant que devise avec deux décimales.

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

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

Ensuite, vous allez modifier la mesure en la renommant Revenue YoY % puis en mettant à jour la clause RETURN pour calculer le taux de modification. Veillez à modifier le format en 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 rapport du facteur de changement pour le chiffre d’affaires mensuel de l’année précédente. Par exemple, Juillet 2018 représente une augmentation de 106,53 % par rapport au chiffre d’affaires mensuel de l’année précédente, et Novembre 2018 représente une diminution de 24,22 % par rapport au chiffre d’affaires mensuel de l’année précédente.

Notes

La mesure Revenue YoY % illustre 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 mesure (en retournant la valeur de la 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. Si vous l’avez stockée dans une variable, la clause RETURN utilise la valeur de la variable deux fois.