- Une table des temps est une étape nécessaire à la création de rapport Power BI ou faire des TCD élaborés.
- C'est le seul moyen de concevoir des TCD avec des numéros de semaine ou faire des écarts entre l'année N et N-1.
Utilisation de Power Query
Power Query est un outil remarquable pour tout ce qui touche aux manipulations de données.
Nous allons créer une requête Power Query qui va créer la table des temps et toutes les colonnes qui décomposent les dates (l'année, le mois, les jours, les semaines)
Etape 1 : Ouvrir une requête vide
Nous allons commencer par ouvrir une requête vide
Etape 2 : Renommer la requête
Quand vous travaillez avec Power Query il est fortement recommandé de renommer chaque requête avec un nom qui l'identifie facilement. Ce travail est à faire le plus tôt possible dans la conception d'une requête par ne pas engendrer de problème ultérieur avec le modèle de données.
Etape 3 : Saisir les dates de débuts et de fin de la table des temps
- Dans la barre de formule, saisissez la première date de date de votre table des temps
- Puis cliquez sur le bouton Fx à gauche de la barre de formule
- Effacer toutes les informations qui ont été ajoutés dans la barre de formule (y compris le signe =)
- Ajouter la date de fin de votre table des temps
Etape 4 : Renommer les 2 étapes
De nouveau, nous allons renommer les 2 étapes créées par un nom significatif. Pour les 2 étapes, faîtes un clic-droit sur le nom de l'étape et sélectionnez l'option Renommer.
Seulement, pour la toute première étape, qui est toujours nommée Source, il n'est normalement pas possible de la renommer. Sauf si vous passez par l'éditeur avancé.
Et là, il vous suffit de remplacer Source par le nom que vous voulez.
Etape 5 : Création de la liste de dates
Maintenant, nous allons créer la liste des dates entre les 2 dates précédemment écrites (DateDébut et DateFin). Et pour cela, il y a une astuce.
Tout d'abord, une liste dans Power Query, ça s'écrit entre accolades { }
Ensuite, pour créer une liste entre 2 valeurs, il vous suffit d'écrire ces 2 valeurs séparées par 2 points (..). {1..10} génère une liste de valeur de 1 à 10 par exemple
Donc, pour créer nos listes de dates, il nous suffit d'écrire dans une nouvelle étape
= {Number.From(DateDébut)..Number.From(DateFin)}
L'instruction Number.From est nécessaire pour convertir les dates en valeurs numériques. Sans cela, il n'est pas possible de créer une liste avec la technique décrite ici.
Etape 6 : Transformer la liste en table
Ce n'est pas très flagrant visuellement, mais la table de valeur n'existe pas encore. Il faut "officialiser" que la liste créée soit une table. Et pour cela il faut simplement cliquer sur l'icône Transformer > Vers la table
Etape 7 : Convertir en type date
Pour poursuivre, il faut indiquer que la liste de valeur numérique soit convertie en date.
- Cliquez sur l'icône 123ABC
- Sélectionnez le type Date
Etape 8 : Ajouter les éléments liés aux dates
Maintenant, le plus difficile a été effectué. Il ne reste plus rajouter les différents éléments constitutif d'une date. Par exemple, pour ajouter une colonne avec les années, il suffit de procéder de la façon suivante.
- Sélectionnez la colonne des dates
- Ajouter une colonne
- Sélectionnez le menu date
- Puis le sous-menu Année
- Et encore Année
Le résultat, c'est l'ajout d'une nouvelle colonne avec les années extraites de la colonne Date
Ensuite, il ne vous reste plus qu'à rejouer les mêmes manipulations pour les mois, les jours, les semaines, ...
Table des temps
Une fois que vous avez ajouter vos différentes colonnes, il ne vous reste plus qu'à charger le résultat dans Excel (Accueil > Fermer et charger)
Code complet
Voici le code complet que vous pouvez utiliser dans vos modèles de données
let
DateDébut = #date(2020, 1, 1),
DateFin = #date(2020, 12, 31),
ListeDate = {Number.From(DateDébut)..Number.From(DateFin)},
#"Converti en table" = Table.FromList(ListeDate, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Colonnes renommées" = Table.RenameColumns(#"Converti en table",{{"Column1", "Date"}}),
#"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées",{{"Date", type date}}),
#"Année insérée" = Table.AddColumn(#"Type modifié", "Année", each Date.Year([Date]), Int64.Type),
#"Mois inséré" = Table.AddColumn(#"Année insérée", "Mois", each Date.Month([Date]), Int64.Type),
#"Nom du mois inséré" = Table.AddColumn(#"Mois inséré", "Nom du mois", each Date.MonthName([Date]), type text),
#"Trimestre inséré" = Table.AddColumn(#"Nom du mois inséré", "Trimestre", each Date.QuarterOfYear([Date]), Int64.Type),
#"Semaine de l'année insérée" = Table.AddColumn(#"Trimestre inséré", "Semaine de l'année", each Date.WeekOfYear([Date]), Int64.Type),
#"Jour inséré" = Table.AddColumn(#"Semaine de l'année insérée", "Jour", each Date.Day([Date]), Int64.Type),
#"Jour de la semaine inséré" = Table.AddColumn(#"Jour inséré", "Jour de la semaine", each Date.DayOfWeek([Date], Day.Monday), Int64.Type),
#"Ajouté à la colonne" = Table.TransformColumns(#"Jour de la semaine inséré", {{"Jour de la semaine", each _ + 1, type number}}),
#"Nom du jour inséré" = Table.AddColumn(#"Ajouté à la colonne", "Nom du jour", each Date.DayOfWeekName([Date]), type text)
in
#"Nom du jour inséré"
Ribaud de Gineste
25/08/2023 @ 11:14
Bonjour,
Super travail très pédagogique ; j'aurai aimé trouvé la notion de semestre indispensable pour les bilans et éventuellement les jours fériés pour compter les coûts...
Merci beaucoup