DAX (Data Analysis Expressions) dispose de 35 fonctions destinées spécifiquement à l’agrégation et à la comparaison des données au fil du temps. Contrairement aux fonctions de date et d’heure de DAX, les fonctions d’intelligence temporelle n’ont pas vraiment quelque chose de similaire dans Excel. En effet, les fonctions d’intelligence temporelle fonctionnent avec des données qui changent constamment, en fonction du contexte que vous sélectionnez dans les tableaux croisés dynamiques et les visualisations Power View.
Pour utiliser des fonctions d’intelligence temporelle, vous devez inclure une table de dates dans votre modèle de données. Le tableau de dates doit inclure une colonne avec une ligne pour chaque jour de chaque année inclus dans vos données. Cette colonne est considérée comme la colonne Date (bien que vous puissiez la nommer comme vous le souhaitez). De nombreuses fonctions d’intelligence temporelle nécessitent la colonne de date afin de calculer en fonction des dates que vous sélectionnez comme champs dans un état. Par exemple, si vous disposez d’une mesure qui calcule un solde de fin de trimestre à l’aide de la fonction CLOSINGBALANCEQTR, pour que Power Pivot sache quand se termine réellement la fin du trimestre, il doit référencer la colonne de date dans la table de dates pour savoir quand le trimestre commence et se termine. Pour en savoir plus sur les tables de dates, consultez Comprendre et créer des tables de dates dans Power Pivot dans Excel.
Fonctions
Fonctions renvoyant une date unique
Les fonctions de cette catégorie renvoient une date unique. Le résultat peut ensuite être utilisé comme argument pour d’autres fonctions.
Les deux premières fonctions de cette catégorie renvoient la première ou la dernière date de la Date_Column dans le contexte actuel. Cela peut être utile lorsque vous souhaitez rechercher la première ou la dernière date à laquelle vous avez eu une transaction d’un type particulier. Ces fonctions ne prennent qu’un seul argument, le nom de la colonne de date dans votre table de dates.
- FIRSTDATE (Date_Column)
- DATE_DERNIÈRE (Date_Column)
Les deux fonctions suivantes de cette catégorie recherchent la première ou la dernière date (ou toute autre valeur de colonne également) lorsqu’une expression contient une valeur non vide. Ceci est le plus souvent utilisé dans des situations telles que l’inventaire, lorsque vous souhaitez obtenir la dernière quantité d’inventaire et que vous ne savez pas quand le dernier inventaire a été effectué.
- FIRSTNONBLANK (Date_Column, Expression)
- LASTNONBLANK (Date_Column, Expression)
Six autres fonctions qui renvoient une date unique sont les fonctions qui renvoient la première ou la dernière date d’un mois, d’un trimestre ou d’une année dans le contexte actuel du calcul.
- STARTOFMONTH (Date_Column)
- STARTOFQUARTER (Date_Column)
- STARTOFYEAR (Date_Column [,YE_Date])
- FINOFMONTH (Date_Column)
- FIN DE TRIMESTRE (Date_Column)
- ENDOFYEAR (Date_Column [,YE_Date])
Fonctions renvoyant une table de dates
Il existe seize fonctions d’intelligence temporelle qui renvoient une table de dates. Le plus souvent, ces fonctions sont utilisées en tant qu’argument SetFilter de la fonction CALCULER . Comme toutes les fonctions d’intelligence temporelle dans DAX, chaque fonction prend une colonne de date comme l’un de ses arguments.
Les huit premières fonctions de cette catégorie commencent par une colonne de date dans un contexte actuel. Par exemple, si vous utilisez une mesure dans un tableau croisé dynamique, il peut y avoir un mois ou une année sur les étiquettes de colonne ou de ligne. L’effet net est que la colonne de date est filtrée pour inclure uniquement les dates du contexte actuel. À partir de ce contexte actuel, ces huit fonctions calculent ensuite le jour, le mois, le trimestre ou l’année précédent (ou suivant) et renvoient ces dates sous la forme d’un tableau à colonne unique. Les fonctions « précédentes » fonctionnent en arrière à partir de la première date dans le contexte actuel, et les fonctions « suivantes » avancent à partir de la dernière date dans le contexte actuel.
- JOUR PRÉCÉDENT (Date_Column)
- MOIS PRÉCÉDENT (Date_Column)
- QUARTIER PRÉCÉDENT (Date_Column)
- ANNÉEPRÉCÉDENTE (Date_Column [,YE_Date])
- LENDEMAIN (Date_Column)
- MOIS SUIVANT (Date_Column)
- NEXTQUARTER (Date_Column)
- ANNÉE PROCHAINE (Date_Column [,YE_Date])
Les quatre fonctions suivantes de cette catégorie sont similaires, mais au lieu de calculer une période précédente (ou suivante), elles calculent l’ensemble des dates de la période qui est « mois à ce jour » (ou trimestre à ce jour, ou année à ce jour, ou dans la même période de l’année précédente). Ces fonctions effectuent toutes leurs calculs en utilisant la dernière date dans le contexte actuel. Notez que SAMEPERIODLASTYEAR exige que le contexte actuel contiguë contiguë contiguë ensembles de dates. Si le contexte actuel n’est pas un ensemble contigu de dates, SAMEPERIODLASTYEAR renvoie une erreur.
- DATEMTD (Date_Column)
- DATESQTD (Date_Column)
- DATEYTD (Date_Column [,YE_Date])
- SAMEPERIODLASTYEAR (Date_Column)
Les quatre dernières fonctions de cette catégorie sont un peu plus complexes et également un peu plus puissantes. Ces fonctions sont utilisées pour passer d’un ensemble de dates qui se trouve dans le contexte actuel à un nouvel ensemble de dates.
- DATEADD (Date_Column, Number_of_Intervals, Interval)
- DATESBETWEEN (Date_Column, Start_Date, End_Date)
- DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Intervalle)
- PARALLELPERIOD (Date_Column, Number_of_Intervals, Intervalle)
DATESBETWEEN calcule l’ensemble de dates entre la date de début et la date de fin spécifiée. Les trois fonctions restantes décalent un certain nombre d’intervalles de temps par rapport au contexte actuel. L’intervalle peut être le jour, le mois, le trimestre ou l’année. Ces fonctions facilitent le déplacement de l’intervalle de temps d’un calcul selon l’une des méthodes suivantes :
- Retour deux ans en arrière
- Retour d’un mois en arrière
- Avancer de trois quarts
- Retour de 14 jours en arrière
- Avancer de 28 jours
Dans chaque cas, vous devez seulement spécifier l’intervalle et le nombre de ces intervalles à décaler. Un intervalle positif avance dans le temps, tandis qu’un intervalle négatif recule dans le temps. L’intervalle lui-même est spécifié par un mot clé JOUR, MOIS, TRIMESTRE ou ANNÉE. Ces mots clés ne sont pas des chaînes, ils ne doivent donc pas être entre guillemets.
Fonctions qui évaluent les expressions sur une période
Cette catégorie de fonctions évalue une expression sur une période spécifiée. Vous pouvez accomplir la même chose à l’aide de CALCULATE et d’autres fonctions d’intelligence temporelle. Par exemple,
= TOTALMTD (Expression, Date_Column [, SetFilter])
est exactement la même chose que :
= CALCULATE (expression, DATESMTD (Date_Column)[, SetFilter])
Toutefois, il est plus facile d’utiliser ces fonctions d’intelligence temporelle lorsqu’elles sont adaptées au problème à résoudre :
- TOTALMTD (Expression, Date_Column [, SetFilter])
- TOTALQTD (Expression, Date_Column [, SetFilter])
- TOTALYTD (Expression, Date_Column [, SetFilter] [,YE_Date]) *
Cette catégorie contient également un groupe de fonctions qui calculent les soldes d’ouverture et de clôture. Vous devez comprendre certains concepts avec ces fonctions particulières. Tout d’abord, comme vous pouvez le penser, le solde d’ouverture pour une période quelconque est le même que le solde de clôture pour la période précédente. Le solde de clôture comprend toutes les données de la fin de la période, tandis que le solde d’ouverture n’inclut pas les données de la période en cours.
Ces fonctions renvoient toujours la valeur d’une expression évaluée pour un point spécifique dans le temps. Le point qui nous intéresse est toujours la dernière valeur de date possible sur une période calendaire. Le solde d’ouverture est basé sur la dernière date de la période précédente, tandis que le solde de clôture est basé sur la dernière date de la période en cours. La période actuelle est toujours déterminée par la dernière date dans le contexte de date actuelle.
- OPENINGBALANCEMONTH (expression, Date_Column [,SetFilter])
- OPENINGBALANCEQUARTER Quarter (Expression, Date_Column [,SetFilter])
- OPENINGBALANCEYEAR (expression, Date_Column [,SetFilter] [,YE_Date])
- CLOSINGBALANCEMONTH (expression, Date_Column [,SetFilter])
- CLOSINGBALANCEQUARTER (expression, Date_Column [,SetFilter])
- CLOSINGBALANCEYEAR (expression, Date_Column [,SetFilter] [,YE_Date])
Ressources supplémentaires
Articles : Comprendre et créer des tables de dates dans Power Pivot dans Excel
Référence : référence de la fonction DAX sur Office.com
Exemples : modélisation et analyse des données de profits et pertes avec Microsoft PowerPivot dans Excel