Créer une table de jours actifs par mois dans Power Query

Publié le 13 juillet 2018
par Sophie Marchand M.Sc.
Appeler la fonction

Récemment, un lecteur a posé une question sur notre forum concernant l’éditeur de requêtes Power Query qui, je le rappelle, peut être utilisé via Excel ou via Power BI. Cet article vise à répondre à cette question, qui consiste en gros à créer une table avec le nombre de jours actifs par mois dans Power Query.

 

Question du lecteur : Table avec le nombre de jours actifs par mois dans Power Query

Voici la question posée par notre lecteur sur notre forum:

Question forum nb jours

 

Données originales

Voici les données originales proposées par notre lecteur, une fois que nous les avons importées dans l’éditeur de requêtes de Power BI:

Power Query Importation

 

Voici également une table de jours fériés. Nous allons effectivement résoudre la même problématique, en considérant cette fois les jours fériés.

Jours fériés

 

 

Résultat recherché : Table avec le nombre de jours actifs par mois dans Power Query

À partir de ces données, notre lecteur cherche à créer le tableau suivant:

table avec le nombre de jours actifs par mois dans Power Query

Ce tableau présente le nombre de jours actifs dans le mois, selon les dates de début et de fin spécifiées pour chacun des items en ligne (ne considère pas les week-ends).

 

En considérant les jours fériés, le tableau recherché est plutôt celui-ci:

table avec le nombre de jours actifs par mois dans Power Query

 

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

 

Création de paramètres pour la table avec le nombre de jours actifs par mois dans Power Query

Nous devrons tôt ou tard créer une fonction qui permettra de calculer le nombre de jours écoulés dans chaque mois. Pour ce faire, nous aurons besoin d’une date de début et d’une date de fin. Ce faisant, nous avons d’abord créé 2 paramètres, Début et Fin, auxquels nous avons attribué des valeurs temporaires.

Paramètres début fin

 

Création de requêtes qui seront converties en fonctions

Nous avons créé une nouvelle requête qui sera ensuite convertie en fonction CALENDRIER RÉGULIER.

 

D’abord, nous avons créé une liste qui débute avec notre paramètre Début et se termine avec notre paramètre Fin. À noter que ceci crée une liste de nombres (et non de dates) avec un pas de 1.

Liste dates Power Query

 

Cette fonction nous a donc permis de créer la liste suivante. À noter qu’il ne s’agit pas d’une table mais bien d’une liste.

Liste dates en nombres

 

Nous avons ensuite converti notre liste en table, nous avons transformé les nombres en dates et nous avons ajouté des colonnes d’année et mois, tel qu’illustré ci-dessous.

Liste dates en date avec colonnes ajoutées

 

En guise de dernière étape, nous avons ajouté une colonne qui permet de fusionner les informations d’année et de mois.

Fusion année mois

 

Au final, nous avons converti cette requête en fonction CALENDRIER RÉGULIER.

 

Nous avons répété le même processus afin de créer la fonction CALENDRIER OUVRABLE, que nous avons ensuite complété de la façon suivante.

 

D’abord, nous avons inséré une colonne Jour de la semaine, tel qu’illustré ci-dessous.

Jour de la semaine insérée

 

Ensuite, nous avons fusionné la requête résultante avec la table de jours fériés, ce qui nous a permis ensuite de filtrer le jour de la semaine pour exclure les 1 et les 7 (samedi et dimanche) et la colonne Fermé pour exclure les lignes non null (i.e. les lignes qui sont des journées fériées).

Calendrier ouvrable étape 2

 

Calendrier ouvrable étape 3

 

Nous avons converti la requête finale en fonction CALENDRIER OUVRABLE.

 

Utilisation de nos 2 fonctions calendrier

Maintenant que nous avons 2 fonctions calendrier, nous pouvons les utiliser dans notre table de départ. Pour cela, nous utilisons l’option Invoquer une fonction du menu Ajouter une colonne. Ceci nous permet d’obtenir le résultat suivant:

Invoquer fonction Power BI

 

Nous avons ensuite déployé les résultats, ce qui a généré une ligne par date pour chacune des dates présente dans les intervalles spécifiés dans les colonnes Debut et Fin.

Déployer contenu fonction

 

Maintenant, il ne nous reste plus qu’à compter le nombre de dates pour chaque intervalle, ce que nous pouvons faire aisément avec la fonctionnalité Regrouper par.

Grouper Power BI

 

Nous obtenons alors le tableau suivant pour la fonction CALENDRIER RÉGULIER. Nous pouvons répéter la même procédure avec la fonction CALENDRIER OUVRABLE. Ces deux tables nous permettrons ensuite de créer les deux visualisations présentées en début d’article.

Étape finale

 

Conclusion

Il est de plus en plus facile dans Power Query, de créer des requêtes performantes sans faire intervenir beaucoup de code M. J’essaie de résoudre les problématiques qui me sont soumises en utilisant le moins possible de code M, pour démontrer aux utilisateurs que Power Query est un outil qu’ils peuvent programmer, sans avoir à être des “programmeurs” chevronnés.

 

 


 

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

Afin d’approfondir vos connaissances avec Power BI et plus particulièrement vos compétences avec l’éditeur de requête Power Query, nous vous recommandons notre formation Recettes magiques pour transformer vos données.

 

Voici quelques commentaires d’apprenants ayant suivi la formation en ligne Recettes magiques pour transformer vos données :

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é.

2 réflexions sur “Créer une table de jours actifs par mois dans Power Query”

  1. Bonjour Sophie,
    Je vous salue de la Belgique et vous remercie vivement pour votre bel exposé.
    J’aimerais y aojouter une contribution pour éviter le “if … then”.
    D’une façon identique à votre fonction pour créer la liste du calendrier global, j’ai créé une fonction qui crée une liste par projet que je converti ensuite en tableau.
    En prenant le query Debut_Fin j’y ajoute ma fonction qui crée par dossier toutes les dates.
    Comme vous, après extraction du tableau, j’y ajoute “Premiers caractères” pour avoir le mois de chaque date.
    Finalement je regroupe la colonne “Premiers caractères” qui calcule le nombre de rangées par mois (et par projet).

    Ainsi j’obtiens exactement le même résultat sans devoir programmer d’outre mesure.

    L’avantage de cette méthode est que vous pouvez même affiner le tout en calculant les jours ouvrables (au lieu des jours calendrier) selon votre deuxième méthode que vous avez si bien expliqué dans https://www.lecfomasque.com/power-query-trouver-le-nombre-de-jours-ouvrables/.

    Cordialement,
    Dirk

Laisser un commentaire

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

Retour en haut