Référence Power Query · 6 min de lecture

Extraire l’année, le mois et le jour d’une date dans Power BI

Les trois fonctions Power Query qui décomposent une date, leur équivalent en DAX, et la raison pour laquelle il vaut souvent mieux ne pas s’en servir.

Mis à jour le

Trois fonctions Power Query isolent chacune une composante d’une date. Date.Year renvoie l’année, Date.Month le numéro du mois, Date.Day le jour du mois. Toutes les trois retournent un nombre, jamais du texte, ce qui compte pour le tri et pour les calculs qui suivront.

Syntaxe

Un paramètre, un nombre en sortie

Date.Year(dateTime as any) as nullable number
Date.Month(dateTime as any) as nullable number
Date.Day(dateTime as any) as nullable number

L’entrée accepte une valeur de type date, datetime ou datetimezone. Le type de retour est nullable number : sur une cellule vide, la fonction rend null plutôt qu’une erreur, et ce null se propage silencieusement dans la suite de la requête. C’est le point à surveiller sur des données saisies à la main.

Exemples

Sur une date fixe, puis sur la date du jour

Décomposer une date donnée :

let
    Date1 = #datetime(2024, 8, 1, 14, 30, 0),
    Annee = Date.Year(Date1),
    Mois  = Date.Month(Date1),
    Jour  = Date.Day(Date1)
in
    [Annee, Mois, Jour]

Le résultat est [2024, 8, 1]. Notez que Date.Month rend 8, un nombre, et non « août » ni « 08 ».

La même chose sur l’instant du rafraîchissement :

let
    Maintenant  = DateTime.LocalNow(),
    AnneeCourante = Date.Year(Maintenant),
    MoisCourant   = Date.Month(Maintenant),
    JourCourant   = Date.Day(Maintenant)
in
    [AnneeCourante, MoisCourant, JourCourant]

DateTime.LocalNow prend l’heure de la machine qui exécute la requête. Publié dans le service Power BI, ce n’est plus votre poste mais le serveur, dont le fuseau peut différer. Pour un calcul sensible à la date, DateTime.FixedLocalNow évite en plus que l’heure change entre deux étapes de la même requête.

En pratique, dans l’interface, ces trois fonctions s’obtiennent sans écrire une ligne : clic droit sur la colonne de date, puis Transformer ou Ajouter une colonne, et Date → Année / Mois / Jour.

Ne pas confondre

Power Query et DAX ne parlent pas la même langue

La confusion revient sans arrêt, parce que les deux langages cohabitent dans le même fichier et font des choses proches.

Power Query (M)DAXRésultat
Date.Year([Date])YEAR([Date])L’année en nombre
Date.Month([Date])MONTH([Date])Le mois de 1 à 12
Date.Day([Date])DAY([Date])Le jour du mois

La syntaxe M respecte la casse, la syntaxe DAX non. Écrire date.year en Power Query provoque une erreur, alors que year() passe très bien en DAX. Règle simple : Power Query pour préparer avant le chargement, DAX pour calculer après.

Le conseil qui compte

Ces colonnes n’ont probablement rien à faire dans votre table de faits

Le réflexe naturel consiste à ajouter Année, Mois et Jour à côté de la date, dans la table qu’on vient de charger. Ça marche, et ça se retourne contre vous assez vite.

Trois raisons. Ces colonnes se répètent sur chaque ligne de la table, ce qui pèse sur le modèle sans rien apporter. Si vous avez deux tables datées, commandes et factures par exemple, il faut refaire l’opération dans chacune, et les filtres ne se parleront pas. Et surtout, les fonctions de temps de DAX, TOTALYTD, SAMEPERIODLASTYEAR et les autres, exigent une véritable table de dates marquée comme telle : sans elle, elles ne fonctionnent pas.

La bonne structure est toujours la même : une table de dates unique, qui porte Année, Mois, Trimestre, Semaine, reliée à chaque table datée du modèle. Ces trois fonctions servent alors à construire cette table, pas à décorer les autres. Nous détaillons la construction pas à pas dans créer un calendrier dynamique en Power Query.

Il reste un cas légitime d’extraction directe : quand la composante est une donnée métier en soi, comme le mois de clôture d’un exercice décalé, et non un axe d’analyse.

Questions fréquentes

Ce qu’on nous demande sur l’extraction de date

Comment obtenir le nom du mois plutôt que son numéro ?

Date.Month ne rend qu’un nombre. Pour le libellé, utilisez Date.MonthName([Date]), ou Date.ToText([Date], "MMMM", "fr-FR") si vous voulez fixer la langue. Attention au tri : une colonne de noms de mois se trie par ordre alphabétique tant qu’on ne lui associe pas une colonne de tri numérique.

Pourquoi Date.Year renvoie-t-elle une erreur sur ma colonne ?

Presque toujours parce que la colonne est encore du texte. Convertissez-la d’abord en date, avec Date.From ou en changeant le type dans l’interface. Sur des dates ambiguës du type 03/04/2026, précisez la culture : Date.From([Colonne], "fr-FR").

Faut-il extraire en Power Query ou en DAX ?

En Power Query dans la très grande majorité des cas : le calcul est fait une fois au chargement plutôt qu’à chaque interrogation du rapport. On réserve DAX aux cas où la valeur doit dépendre du contexte de filtre.

Comment obtenir le trimestre d’une date en Power Query ?

Avec Date.QuarterOfYear([Date]), qui rend un nombre de 1 à 4. Pour la semaine, Date.WeekOfYear existe, mais vérifiez la convention appliquée avant de l’utiliser dans un suivi hebdomadaire.

À côté

Les fonctions qu’on utilise avec

Sources — documentation officielle de l’éditeur, consultée le 22 août 2026 : Date.Year, Date.Month, Date.Day.

Un modèle Power BI sans vraie table de dates ?

C’est le premier point que nous regardons en audit, et souvent celui qui débloque les comparaisons annuelles. Premier retour sous cinq jours ouvrés.

Demander un audit ou 01 83 64 60 25
01 83 64 60 25 Réserver un appel