Langage DAX : calculer le nombre de jours entre 2 dates

Publié le 15 août 2022
par Audrée Pellerin M.Sc.

Il est souvent requis de calculer le nombre de jours entre deux dates dans toutes sortes de contextes. Par exemple, pour calculer les ventes moyennes par jour ou pour calculer en combien de jours l’inventaire de certains produits ont été écoulés.

Avec le langage DAX, il est possible de générer des calculs dynamiques d’écart de dates de différentes façons. Nous en verrons 2 dans cet article.

Pour illustrer ces 2 fonctions, j’utiliserai une table de dates et les deux mesures suivantes :

  • DebutPeriode = FIRSTDATE(DimDates[Date])
  • FinPeriode = LASTDATE(DimDates[Date])

Langage DAX : calculer le nombre de jours entre 2 dates

 

J’ai créé un visuel permettant de visualiser les résultats :

Langage DAX : calculer le nombre de jours entre 2 dates

 

Méthode #1 : La fonction DATEDIFF

Pour effectuer un calcul très simple de différence entre deux dates, la fonction DATEDIFF est tout indiquée. Elle permet, comme son nom le porte à croire, d’effectuer la différence entre deux dates. Son attrait réside surtout dans le fait que cette différence peut être retournée selon différents incréments de temps (Secondes, minutes, heures, jours, semaines, mois, trimestres et années). Voyons comment elle fonctionne.

Syntaxe de DATEDIFF

La syntaxe de la fonction est la suivante : DATEDIFF(<Date1>, <Date2>, <Interval>)

Les dates doivent être des valeurs de format Date ou Datetime.

L’intervalle doit être l’une des options suivantes :

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

Je vais tout d’abord calculer le nombre de jours dans chaque mois. Pour y arriver, la date1 de la fonction sera égale à la mesure DebutPeriode, la date2 sera égale à la mesure FinPeriode et l’intervalle sera fixé à DAY.

NbJoursDATEDIFF = DATEDIFF([DebutPeriode], [FinPeriode],DAY)

 

Jetons un coup d’œil au résultat

Langage DAX : calculer le nombre de jours entre 2 dates

 

Remarquez que le nombre de jours pour janvier est de 30 jours. Ce qui veut dire que la mesure calcule 31 – 1 = 30 (calcul exclusif). Si vous souhaitez obtenir un nombre de jours dans le mois de janvier, vous devez ajouter « +1 » dans la formule.

NbJoursDATEDIFF = DATEDIFF([DebutPeriode], [FinPeriode],DAY)+1

 

Et maintenant, remarquons que le résultat a été ajusté.

Langage DAX : calculer le nombre de jours entre 2 dates

 

Avec la fonction DATEDIFF, il est aussi possible d’obtenir la différence entre deux dates en heures ou en minutes, par exemple.

NbHeuresDATEDIFF = DATEDIFF([DebutPeriode], [FinPeriode],HOUR)+24

NbMinutesDATEDIFF = DATEDIFF([DebutPeriode], [FinPeriode],MINUTE)+1440

Langage DAX : calculer le nombre de jours entre 2 dates

 

Comme nos mesures dépendent réellement des dates de début et dates de fin sélectionnées, notez que le résultat s’ajustera selon le niveau de détail affiché dans le visuel. Par exemple, si nous décidions de présenter l’information par année plutôt que par mois, le résultat serait le suivant :

Langage DAX : calculer le nombre de jours entre 2 dates

 

 

Vous devez analyser de grandes quantités de données et les présenter dans des rapports et tableaux de bord, avec des indicateurs de performance pertinents ? Développez vos compétences avec nos formations en Power BI.

Formations Power BI disponibles en anglais

 

 

Méthode #2 : La fonction NETWORKDAYS

Dans sa mise à jour de Juillet 2022, Microsoft a introduit la fonction NETWORKDAYS. Comme le permettait DATEDIFF, NETWORKDAYS calcule le nombre de jours entre deux dates. Mais avec quelques particularités.

Tout d’abord, le calcul d’écart de la fonction NETWORDAYS est inclusif. Ce qui veut dire que pour calculer le nombre de jours dans le mois de janvier, nous n’aurons plus besoin d’ajouter le « +1 » à la formule.

Ensuite, la fonction NETWORKDAYS nous permet d’exclure les jours fériés et les jours de fin de semaine.

Syntaxe de NETWORKDAYS

Voici la syntaxe de la fonction NETWORKDAYS : NETWORKDAYS(<start_date>, <end_date>[, <weekend>, <holidays>])

Tout comme la fonction DATEDIFF, les 2 premiers paramètres à saisir sont la date de début et la date de fin.

Le 3e paramètre permet de déterminer quels sont les jours de fin de semaine à exclure du calcul. Par défaut, les samedis et dimanches seront exclus du calcul mais plusieurs autres options sont possibles.

Langage DAX : calculer le nombre de jours entre 2 dates

 

Le 4e paramètre permet d’indiquer des jours fériés à exclure du calcul de différence de dates. Ce paramètre doit faire référence à une table contenant uniquement les jours fériés. Ce paramètre est facultatif.

Voici un exemple où la formule est utilisée dans sa plus simple expression :

NbJoursSemaine = NETWORKDAYS([DebutPeriode],[FinPeriode])

Langage DAX : calculer le nombre de jours entre 2 dates

 

Remarquez que puisque qu’aucune information n’est saisie comme 3e paramètre, les samedis et dimanches sont exclus automatiquement.

 

Excluons le dimanche seulement et les jours fériés

Pour exclure les dimanches seulement, j’ai saisi la valeur « 11 » dans le 3e paramètre.

NbJoursSaufDimanches = NETWORKDAYS([DebutPeriode],[FinPeriode],11)

Langage DAX : calculer le nombre de jours entre 2 dates

 

Finalement, j’ai importé une liste de jours fériés dans la table « JoursFeries ».

Langage DAX : calculer le nombre de jours entre 2 dates

 

J’ai donc pu ajouter cette table dans le 4e paramètre de la fonction de façon à obtenir tous les jours de la période sauf les dimanches et les jours fériés.

NbJoursSaufDimanchesEtFeries = NETWORKDAYS([DebutPeriode],[FinPeriode],11,JoursFeries)

Langage DAX : calculer le nombre de jours entre 2 dates

 


Fichier d’accompagnement VIP à télécharger

Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.

 

Formation complémentaire

Pour une introduction au langage DAX, utilisé par Power Pivot et par Power BI Desktop, qui permet de créer des tableaux de bord flexibles et faciles à mettre à jour en plus de créer des visualisations de données évoluées et pertinentes, suivez la formation Introduction au langage DAX (Power BI et Power Pivot).

 

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Le-CFO-masque_Commentaires-Introduction-langage-DAX
CFO-Masque_Formations-en-ligne_FBLa mission du CFO masqué est de développer les compétences techniques des analystes et des contrôleurs de gestion en informatique décisionnelle avec Excel et Power BI et favoriser l’atteinte de leur plein potentiel, en stimulant leur autonomie, leur curiosité, leur raisonnement logique, leur esprit critique et leur créativité.

1 réflexion sur “Langage DAX : calculer le nombre de jours entre 2 dates”

Laisser un commentaire

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

Retour en haut