Référence technique · Libre accès

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

DAX

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.

FonctionCe qu’elle fait
SUM / SUMXSomme d’une colonne / somme d’une expression évaluée ligne à ligne (ex. quantité × prix).
AVERAGE / AVERAGEXMoyenne d’une colonne numérique / d’une expression par ligne.
COUNTROWS, COUNTA, DISTINCTCOUNTCompter des lignes, des valeurs non vides, des valeurs distinctes (clients uniques, commandes…).
MIN / MAX / MAXXValeur 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.
FILTERFiltre une table ligne à ligne avec une condition libre. À réserver aux conditions complexes.
ALL, ALLEXCEPT, ALLSELECTED, ALLCROSSFILTEREDRetirent tout ou partie des filtres : indispensables pour les parts du total et les comparaisons.
REMOVEFILTERS, KEEPFILTERSVariantes explicites pour lever ou conserver des filtres dans un CALCULATE.
LOOKUPVALUE, RELATED, TREATASRé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, DATESYTDCumul depuis le début de l’année (fiscal possible via le paramètre de fin d’exercice).
SAMEPERIODLASTYEAR, DATEADDMême période l’an dernier, ou décalage libre (mois, trimestre, année) pour les variations N-1.
DATESINPERIODFenêtre glissante (12 derniers mois, 90 derniers jours) pour les moyennes mobiles.
EOMONTH, DATEVALUEFin de mois et conversion texte → date, utiles pour construire les bornes de période.
CALENDAR, CALENDARAUTOGé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, ADDCOLUMNSConstruire des tables d’agrégats ou enrichies, pour les mesures avancées et les tables calculées.
VALUES, DISTINCTListe des valeurs uniques visibles dans le contexte courant.
RELATEDTABLEDepuis le côté « 1 » d’une relation, récupérer les lignes liées côté « plusieurs ».
Power Query · Langage M

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.SelectRowsFiltrer les lignes selon une condition (l’équivalent du filtre de l’interface, en plus puissant).
Table.Combine, Table.NestedJoinEmpiler plusieurs tables, ou les joindre sur une clé (fusion de requêtes).
Table.FuzzyNestedJoin, Table.AddFuzzyClusterColumnJointures 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.RowCountAuditer une table : profil statistique, types de colonnes, volumétrie.
Excel.WorkbookLire un classeur Excel entier, y compris récupérer tous les onglets d’un coup.

Texte et dates

Text.Proper, Text.Lower, Text.UpperCasse des libellés : majuscule à chaque mot, tout en minuscules ou en capitales.
Text.Trim, Text.Clean, Text.Replace, Text.SplitNettoyer espaces et caractères invisibles, remplacer, découper : le quotidien du nettoyage de données.
Date.AddDays / AddWeeks / AddMonths / AddQuartersDécaler une date de n jours, semaines, mois ou trimestres.
Date.EndOfWeek / Month / Quarter / YearBornes 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.FromHorodatage 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.

Recette la plus demandée

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.

Fiches détaillées

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.

Questions fréquentes

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 consultant

Sources. Documentation officielle de l’éditeur, consultée le 22 août 2026 : référence du langage M, référence DAX.

01 83 64 60 25 Réserver un appel