Utiliser des fonctions Time Intelligence DAX
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 fonctionsDATESMTDetDATESQTDpour 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 fonctionCALCULATE. -
TOTALYTD: évalue une expression pour YTD dans le contexte de filtre actuel. Les fonctions DAXTOTALQTDetTOTALMTDé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é.
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,PREVIOUSQUARTERetPREVIOUSYEAR.
À 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.
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.
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.