Référence Power Query & DAX en français
L’essentiel des fonctions DAX et du langage M de Power Query, expliqué en français et orienté cas concrets. Cette page condense la méthode issue de nos missions depuis 2021, et renvoie vers nos fiches détaillées.
Power BI repose sur deux langages : DAX pour les mesures et calculs analytiques, M (Power Query) pour la préparation des données. Cette page de référence regroupe les fonctions les plus utilisées de chacun, classées par usage, avec pour chaque famille les cas où nous les employons en mission. Elle remplace nos anciennes fiches unitaires : si un ancien lien vous a conduit ici, la fonction que vous cherchiez figure dans l’une des sections ci-dessous, et la syntaxe complète reste documentée sur Microsoft Learn (DAX) et Microsoft Learn (Power Query M).
Fonctions DAX : mesures et calculs
Agrégations
Le socle de toute mesure. Les versions en X (SUMX, AVERAGEX, MAXX) itèrent ligne à ligne sur une table, ce qui permet de calculer une expression avant d’agréger.
| Fonction | Ce qu’elle fait |
|---|---|
SUM / SUMX | Somme d’une colonne / somme d’une expression évaluée ligne à ligne (ex. quantité × prix). |
AVERAGE / AVERAGEX | Moyenne d’une colonne numérique / d’une expression par ligne. |
COUNTROWS, COUNTA, DISTINCTCOUNT | Compter des lignes, des valeurs non vides, des valeurs distinctes (clients uniques, commandes…). |
MIN / MAX / MAXX | Valeur extrême d’une colonne ou d’une expression (dernière date de vente, panier maximum…). |
Filtres et contexte : CALCULATE et sa famille
CALCULATE est la fonction la plus importante de DAX : elle évalue une expression dans un contexte de filtre modifié. C’est elle qui permet le « CA de l’an dernier », la « part du total » ou le « hors avoirs ».
CALCULATE | Évalue une mesure avec des filtres ajoutés, remplacés ou retirés. |
FILTER | Filtre une table ligne à ligne avec une condition libre. À réserver aux conditions complexes. |
ALL, ALLEXCEPT, ALLSELECTED, ALLCROSSFILTERED | Retirent tout ou partie des filtres : indispensables pour les parts du total et les comparaisons. |
REMOVEFILTERS, KEEPFILTERS | Variantes explicites pour lever ou conserver des filtres dans un CALCULATE. |
LOOKUPVALUE, RELATED, TREATAS | Récupérer une valeur d’une autre table, avec ou sans relation physique. |
Time intelligence : comparer des périodes
Les fonctions temporelles exigent une table de dates continue marquée comme table de calendrier. Un exemple courant, le cumul annuel :
CA cumul annuel =
TOTALYTD ( [Chiffre d'affaires], 'Calendrier'[Date] )
TOTALYTD, DATESYTD | Cumul depuis le début de l’année (fiscal possible via le paramètre de fin d’exercice). |
SAMEPERIODLASTYEAR, DATEADD | Même période l’an dernier, ou décalage libre (mois, trimestre, année) pour les variations N-1. |
DATESINPERIOD | Fenêtre glissante (12 derniers mois, 90 derniers jours) pour les moyennes mobiles. |
EOMONTH, DATEVALUE | Fin de mois et conversion texte → date, utiles pour construire les bornes de période. |
CALENDAR, CALENDARAUTO | Générer la table de dates. Nous créons systématiquement un calendrier dédié dans chaque modèle, construit en Power Query plutôt qu’en DAX. |
Tables et modélisation
SUMMARIZE, ADDCOLUMNS | Construire des tables d’agrégats ou enrichies, pour les mesures avancées et les tables calculées. |
VALUES, DISTINCT | Liste des valeurs uniques visibles dans le contexte courant. |
RELATEDTABLE | Depuis le côté « 1 » d’une relation, récupérer les lignes liées côté « plusieurs ». |
Power Query : préparer les données
Tout ce qui se passe avant le modèle : connexion aux sources, nettoyage, transformation. L’éditeur graphique génère du M ; connaître les fonctions sous-jacentes permet d’aller plus loin que l’interface.
Manipuler les tables
Table.SelectRows | Filtrer les lignes selon une condition (l’équivalent du filtre de l’interface, en plus puissant). |
Table.Combine, Table.NestedJoin | Empiler plusieurs tables, ou les joindre sur une clé (fusion de requêtes). |
Table.FuzzyNestedJoin, Table.AddFuzzyClusterColumn | Jointures et regroupements approximatifs : précieux pour rapprocher des libellés saisis à la main. |
Table.FirstN, Table.AlternateRows, Table.Split | Échantillonner, garder une ligne sur deux, découper une table en lots. |
Table.Profile, Table.Schema, Table.RowCount | Auditer une table : profil statistique, types de colonnes, volumétrie. |
Excel.Workbook | Lire un classeur Excel entier, y compris récupérer tous les onglets d’un coup. |
Texte et dates
Text.Proper, Text.Lower, Text.Upper | Casse des libellés : majuscule à chaque mot, tout en minuscules ou en capitales. |
Text.Trim, Text.Clean, Text.Replace, Text.Split | Nettoyer espaces et caractères invisibles, remplacer, découper : le quotidien du nettoyage de données. |
Date.AddDays / AddWeeks / AddMonths / AddQuarters | Décaler une date de n jours, semaines, mois ou trimestres. |
Date.EndOfWeek / Month / Quarter / Year | Bornes de période, pour rattacher chaque ligne à sa fin de semaine, de mois ou d’exercice. |
Date.DayOfWeek, Date.DayOfYear, Date.IsInCurrentMonth… | Attributs calendaires et tests de période courante (jour, semaine, mois, trimestre). |
DateTime.LocalNow, Date.From, DateTime.From | Horodatage courant et conversions texte/nombre vers date ou datetime. |
Gérer les erreurs
Une requête robuste anticipe les valeurs impossibles : try … otherwise intercepte l’erreur au niveau d’une expression, Table.RemoveRowsWithErrors purge les lignes fautives, et Error.Record permet de créer des messages d’erreur explicites pour les utilisateurs de vos requêtes.
Connecter Google Sheets à Power BI
C’est la question qu’on nous pose le plus, en France comme à l’international. Depuis Power BI Desktop : Obtenir les données → Google Sheets, collez l’URL complète du classeur, authentifiez-vous avec le compte Google qui a accès au document, puis choisissez les feuilles à charger. Deux points de vigilance : le connecteur lit le classeur entier (pas une plage nommée), et l’actualisation planifiée dans le service Power BI nécessite de re-saisir l’identifiant Google dans les paramètres de la source de données. Pour un partage en lecture seule sans compte Google, l’alternative consiste à publier la feuille au format CSV et à utiliser le connecteur Web. Le pas-à-pas complet, avec l’actualisation automatique et les erreurs classiques, est dans notre guide Google Sheets × Power BI.
Une fonction, une page
Les tableaux ci-dessus donnent le repère rapide. Pour les fonctions sur lesquelles on nous pose le plus de questions, nous avons rédigé une fiche complète : syntaxe exacte vérifiée sur la documentation Microsoft, exemples à exécuter, pièges rencontrés en mission et réponses aux questions fréquentes.
Table.FindText
Rechercher un texte dans toutes les colonnes d’une table, sans savoir laquelle le contient.
Date.Year, Date.Month, Date.Day
Décomposer une date, et savoir quand il vaut mieux ne pas le faire.
Table.RemoveRows
Supprimer des lignes par position, avec le piège de l’index qui commence à zéro.
Calendrier dynamique
La table de dates qui étend sa borne de fin à chaque actualisation.
Number.Round
Arrondir un nombre, et comprendre pourquoi 2,5 devient 2 et non 3.
Table.Combine
Empiler plusieurs tables, sans laisser une colonne renommée passer inaperçue.
Date.From
Convertir en date, en évitant que le 3 avril devienne le 4 mars.
Number.Abs
La valeur absolue, pour classer par ampleur sans perdre le sens de l’écart.
Text.Proper
Normaliser la casse, sans transformer SARL DUPONT en Sarl Dupont.
Table.RowCount
Compter les lignes, et s’en servir comme garde-fou contre les jointures qui dupliquent.
Table.AddKey
Déclarer une clé primaire, et découvrir qu’elle ne garantit aucune unicité.
Colonne cumulée
Le cumul progressif en DAX, de la formule historique à celle qu’on écrit aujourd’hui.
Table.AddIndexColumn
Ajouter un numéro de ligne, choisir où il commence et de combien il avance. Avec le piège de l’index posé trop tôt dans la requête.
Table.FromList
Transformer une liste de mois, de clients ou de lignes de texte en vraie table. Avec le piège du séparateur virgule appliqué par défaut.
Table.FromRows
Écrire une petite table ligne par ligne, directement en M. Avec le piège des colonnes laissées sans type.
Table.FromRecords
Construire une table dont chaque ligne porte ses propres noms de champs. Avec le piège du champ manquant qui fait échouer la requête.
Table.ReorderColumns
Remettre les colonnes d’un export dans un ordre lisible, sans que la requête casse le jour où une colonne disparaît de la source.
Table.DuplicateColumn
Garder la valeur d’origine à côté d’une version transformée, ou dériver un mois d’une date de facture. Avec le piège du type copié trop tôt.
Table.Unpivot
Passer d’un tableau avec un mois par colonne à une table exploitable, avec une ligne par client et par mois. Et choisir entre Table.Unpivot et Table.UnpivotOtherColumns.
Table.ExpandTableColumn
Récupérer le nom et la ville du client dans une table de factures après une fusion. Avec le piège des lignes qui se multiplient.
ALLEXCEPT
Calculer le poids d’un produit dans sa catégorie ou d’un mois dans son année. Avec le piège du filtre conservé qui n’existe pas.
ALL
La fonction qui donne un dénominateur stable aux pourcentages. Et ses deux voisines, ALLSELECTED et REMOVEFILTERS, qu’on confond avec elle.
COUNTAX
Compter les lignes qui répondent à une condition, ou celles dont un champ est renseigné. Avec le piège des chaînes vides, qui comptent comme des valeurs.
EDATE
Calculer une échéance, une fin de contrat ou le début d’une période glissante. Avec le piège des fins de mois qui glissent quand on enchaîne les calculs.
Text.Upper
Mettre en capitales un nom de client, un code ou un libellé, pour que des saisies différentes deviennent enfin comparables.
Text.Trim
Retirer les espaces parasites d’une colonne, les zéros de remplissage d’un code et les caractères invisibles d’un export.
DateTime.LocalNow
Horodater une actualisation, calculer une ancienneté, arrêter un calendrier à aujourd’hui. Avec le piège de l’heure UTC une fois le rapport publié.
Table.AddFuzzyClusterColumn
Ramener les variantes de saisie d’un même nom à une valeur unique, en réglant un seuil de similarité au lieu d’empiler les remplacements.
Date.EndOfMonth
Ramener chaque date au dernier jour de son mois, en Power Query comme en DAX, sans se laisser surprendre par l’heure qui reste accrochée à la date.
Table.NestedJoin
Rattacher des factures à une liste de clients, garder seulement ce qui correspond ou isoler ce qui manque, en choisissant le bon JoinKind.
Text.Lower
Ramener des saisies hétérogènes à une seule forme, pour qu’un même client ne compte plus pour deux dans vos listes.
Table.RemoveRowsWithErrors
Écarter les lignes en erreur, remplacer les erreurs ou les intercepter avec try … otherwise, sans perdre de vue les factures qui disparaissent.
MAXX
La plus grosse ligne de vente, le meilleur mois de l’année, le montant le plus élevé d’une catégorie. Avec le piège de la somme qui renvoie partout le même total.
Table.Column
Extraire les valeurs d’une colonne pour les additionner, les dédoublonner ou s’en servir comme filtre dans une autre requête.
Table.SelectRows
Garder les factures utiles et écarter les autres, avec une condition écrite une fois et rejouée à chaque actualisation.
MAX
La dernière date de vente, la borne de fin d’une période, le plus grand de deux chiffres. Et la différence avec MAXA et MAXX, qui ne s’emploient pas dans les mêmes cas.
DAX ou Power Query : les questions qui reviennent
Quelle différence entre DAX et Power Query (M) ?
Power Query prépare les données avant leur chargement : connexion, nettoyage, mise en forme. DAX calcule après le chargement : mesures, KPI, comparaisons de périodes. Règle pratique : ce qui peut être fait en amont dans Power Query doit l’être, DAX se concentre sur ce qui dépend du contexte d’analyse.
Faut-il une colonne calculée ou une mesure ?
Une mesure, dans la grande majorité des cas. Elle se recalcule selon les filtres et n’alourdit pas le modèle. La colonne calculée se justifie quand la valeur doit servir d’axe d’analyse ou de filtre (une tranche d’âge, une catégorie dérivée).
Où trouver la syntaxe complète d’une fonction ?
La documentation Microsoft Learn reste la référence exhaustive, en français, pour DAX comme pour le langage M. Cette page vous oriente vers la bonne fonction ; Microsoft Learn en donne tous les paramètres.
Vos rapports Power BI méritent un second regard ?
Modèle lent, mesures fragiles, actualisations qui échouent : notre auto-diagnostic Power BI vous fait cocher dix critères et situe votre déploiement en quelques minutes. C’est un point de départ, pas un audit. Et pour le reste de votre stack, voyez notre expertise Power BI.
Parler à un consultantSources. Documentation officielle de l’éditeur, consultée le 22 août 2026 : référence du langage M, référence DAX.