Memento_fonctions_DAX ▶ Présenter
Ce mémento rassemble les fonctions DAX utilisées dans le support, par famille. Chaque tableau renvoie à la page notion qui les explique ; le bloc qui suit donne un exemple par fonction, écrit sur le modèle des PBIP de démonstration (tables Ventes, Produit, Geographie, Calendrier).
Fonction Rôle Page notion Source SUM, AVERAGE, MIN, MAX Agrège une colonne Découvrir DAX Source COUNTROWS Compte les lignes d'une table Découvrir DAX Source DISTINCTCOUNT Compte les valeurs distinctes d'une colonne Découvrir DAX Source DIVIDE Divise en renvoyant vide si le dénominateur est nul Découvrir DAX Source SUMX, AVERAGEX Calcule une expression ligne par ligne, puis agrège Itérateurs et variables Source MAXX, MINX Plus grande ou plus petite valeur d'une expression Itérateurs et variables Source RANKX Rang d'un élément dans une table Itérateurs et variables Source
Montant vente = SUM ( Ventes [ Montant ] )
Nb ventes = COUNTROWS ( Ventes )
Panier moyen = DIVIDE ( [ Montant vente ] , [ Nb ventes ] )
Montant catalogue = SUMX ( Ventes , Ventes [ Quantite ] * RELATED ( Produit [ PrixUnitaire ] ) )
Montant du meilleur pays = MAXX ( VALUES ( Geographie [ Pays ] ) , [ Montant vente ] )
Rang pays = IF ( HASONEVALUE ( Geographie [ Pays ] ) , RANKX ( ALL ( Geographie [ Pays ] ) , [ Montant vente ] ) ) Fonction Rôle Page notion Source IF Renvoie une valeur selon une condition Itérateurs et variables Source SWITCH Teste une série de conditions ; avec TRUE (), remplace les IF imbriqués Itérateurs et variables Source ISBLANK, BLANK Teste une valeur vide, renvoie une valeur vide Itérateurs et variables Source HASONEVALUE Vrai si une seule valeur de la colonne est visible Fonctions de filtre Source ISFILTERED Vrai si la colonne est filtrée directement Fonctions de filtre Source VAR, RETURN Stocke une valeur ou une table, puis renvoie le résultat Itérateurs et variables Source
// N'affiche le montant que si une seule année est visible (vide sur la ligne Total)
Montant si une année = IF ( HASONEVALUE ( Calendrier [ Annee ] ) , [ Montant vente ] )
Statut évolution =
VAR e = [ % évolution ]
RETURN
SWITCH ( TRUE ( ) , ISBLANK ( e ) , BLANK ( ) , e > 0.05 , 1 , e < - 0.05 , - 1 , 0 )
Couleur filtrée ? = IF ( ISFILTERED ( Produit [ Couleur ] ) , "Oui" , "Non" ) Fonction Rôle Page notion Source CALCULATE Évalue une expression dans un contexte de filtre modifié CALCULATE et transition de contexte Source CALCULATETABLE Même principe, renvoie une table CALCULATE et transition de contexte Source FILTER Garde les lignes d'une table qui respectent une condition Fonctions de filtre Source ALL Supprime tous les filtres d'une table ou d'une colonne Fonctions de filtre Source ALLEXCEPT Supprime les filtres d'une table, sauf ceux des colonnes nommées Contextes de ligne et de filtre Source ALLSELECTED Supprime les filtres du visuel, garde les segments Contextes de ligne et de filtre Source REMOVEFILTERS Supprime des filtres, uniquement dans CALCULATE Fonctions de filtre Source KEEPFILTERS Ajoute un filtre au lieu de remplacer l'existant Fonctions de filtre Source VALUES, DISTINCT Valeurs distinctes visibles (VALUES ajoute la ligne vide éventuelle) Fonctions de filtre Source SELECTEDVALUE Valeur sélectionnée s'il n'y en a qu'une, sinon valeur de remplacement Fonctions de filtre Source
Montant vente Rouge = CALCULATE ( [ Montant vente ] , Produit [ Couleur ] = "Rouge" )
Montant grosses ventes = CALCULATE ( [ Montant vente ] , FILTER ( Ventes , Ventes [ Montant ] >= 1000 ) )
% du total général = DIVIDE ( [ Montant vente ] , CALCULATE ( [ Montant vente ] , ALL ( Produit ) ) )
% du total visible = DIVIDE ( [ Montant vente ] , CALCULATE ( [ Montant vente ] , ALLSELECTED ( Produit ) ) )
Montant toutes couleurs = CALCULATE ( [ Montant vente ] , REMOVEFILTERS ( Produit [ Couleur ] ) )
Montant toutes couleurs et catégories = CALCULATE ( [ Montant vente ] , REMOVEFILTERS ( Produit [ Couleur ] , Produit [ Categorie ] ) )
Montant de tout le modèle = CALCULATE ( [ Montant vente ] , REMOVEFILTERS ( ) )
Montant Rouge KEEPFILTERS = CALCULATE ( [ Montant vente ] , KEEPFILTERS ( Produit [ Couleur ] = "Rouge" ) )
// Équivalent de KEEPFILTERS : FILTER sur les valeurs visibles de la colonne
Montant Rouge (VALUES) = CALCULATE ( [ Montant vente ] , FILTER ( VALUES ( Produit [ Couleur ] ) , Produit [ Couleur ] = "Rouge" ) )
// Variante robuste de ALLEXCEPT
Montant catégorie = CALCULATE ( [ Montant vente ] , REMOVEFILTERS ( Produit ) , VALUES ( Produit [ Categorie ] ) )
Couleur sélectionnée = SELECTEDVALUE ( Produit [ Couleur ] , "Plusieurs couleurs" )
// Équivalent de SELECTEDVALUE
Couleur sélectionnée (IF) = IF ( HASONEVALUE ( Produit [ Couleur ] ) , VALUES ( Produit [ Couleur ] ) , "Plusieurs couleurs" ) Fonction Rôle Page notion Source RELATED Lit une valeur côté « un » de la relation DAX et relations Source RELATEDTABLE Renvoie les lignes liées côté « plusieurs » DAX et relations Source USERELATIONSHIP Active une relation inactive dans CALCULATE DAX et relations Source CROSSFILTER Change le sens de filtrage d'une relation dans CALCULATE DAX et relations Source TREATAS Applique des valeurs comme filtre sur une table non reliée DAX et relations Source LOOKUPVALUE Cherche une valeur selon des critères, sans relation DAX et relations Source
Couleur (RELATED) = RELATED ( Produit [ Couleur ] )
Nb ventes (colonne) = COUNTROWS ( RELATEDTABLE ( Ventes ) )
Montant par date de livraison = CALCULATE ( [ Montant vente ] , USERELATIONSHIP ( Ventes [ DateLivraison ] , Calendrier [ Date ] ) )
Nb produits vendus = CALCULATE ( COUNTROWS ( Produit ) , CROSSFILTER ( Ventes [ ProduitID ] , Produit [ ProduitID ] , BOTH ) )
Objectif (TREATAS) = CALCULATE ( SUM ( Objectifs [ Objectif ] ) , TREATAS ( VALUES ( Geographie [ Pays ] ) , Objectifs [ Pays ] ) )
// TREATAS avec une liste de couples : décembre 2024 et janvier 2025
Montant fin 2024 début 2025 =
CALCULATE ( [ Montant vente ] , TREATAS ( { ( 2024 , 12 ) , ( 2025 , 1 ) } , Calendrier [ Annee ] , Calendrier [ NumMois ] ) )
Objectif (LOOKUPVALUE) = LOOKUPVALUE ( Objectifs [ Objectif ] , Objectifs [ Pays ] , SELECTEDVALUE ( Geographie [ Pays ] ) ) Tables : regroupement, génération et ensembles Fonction Rôle Page notion Source SUMMARIZE Une ligne par combinaison distincte de colonnes Fonctions de table Source ADDCOLUMNS Ajoute des colonnes calculées à une table Fonctions de table Source SUMMARIZECOLUMNS Regroupe et calcule ; base des requêtes des visuels Fonctions de table Source GROUPBY, CURRENTGROUP Regroupe et agrège avec des itérateurs en X Fonctions de table Source SELECTCOLUMNS Choisit et renomme des colonnes Fonctions de table Source TOPN Les N premières lignes selon une expression Fonctions de table Source GENERATESERIES Suite de valeurs (paramètre de simulation) Fonctions de table Source CROSSJOIN Produit cartésien de tables Fonctions de table Source GENERATE Évalue une table pour chaque ligne d'une autre Fonctions de table Source ROW Table d'une seule ligne Fonctions de table Source UNION, EXCEPT, INTERSECT Empile, soustrait ou croise deux tables Fonctions de table Source CALENDAR, CALENDARAUTO Table de dates continue Fonctions de table Source
Moyenne par couleur = AVERAGEX ( SUMMARIZE ( Ventes , Produit [ Couleur ] ) , [ Montant vente ] )
Montant du meilleur pays (ADDCOLUMNS) =
MAXX ( ADDCOLUMNS ( VALUES ( Geographie [ Pays ] ) , "@Montant" , [ Montant vente ] ) , [ @Montant ] )
SynthesePaysCategorie =
SUMMARIZECOLUMNS ( Geographie [ Pays ] , Produit [ Categorie ] , "Montant" , [ Montant vente ] )
Moyenne des plus grosses ventes par pays =
AVERAGEX ( GROUPBY ( Ventes , Geographie [ Pays ] , "@Max" , MAXX ( CURRENTGROUP ( ) , Ventes [ Montant ] ) ) , [ @Max ] )
Montant top 2 produits = SUMX ( TOPN ( 2 , VALUES ( Produit [ Produit ] ) , [ Montant vente ] ) , [ Montant vente ] )
ParamRemise = GENERATESERIES ( 0 , 0.3 , 0.05 )
PaysCategorie = CROSSJOIN ( VALUES ( Geographie [ Pays ] ) , VALUES ( Produit [ Categorie ] ) )
Indicateurs = ROW ( "Montant total" , [ Montant vente ] , "Nombre de ventes" , COUNTROWS ( Ventes ) )
Nb libellés (UNION) = COUNTROWS ( UNION ( VALUES ( Geographie [ Pays ] ) , VALUES ( Geographie [ Continent ] ) ) )
Calendrier = CALENDAR ( DATE ( 2024 , 1 , 1 ) , DATE ( 2025 , 12 , 31 ) ) Fonction Rôle Page notion Source TOTALYTD, TOTALQTD, TOTALMTD Cumul depuis le début de l'année, du trimestre, du mois Time intelligence Source DATESYTD Dates du début d'année à la dernière date du contexte Time intelligence Source SAMEPERIODLASTYEAR Même période un an plus tôt Time intelligence Source DATEADD Décale la période de N intervalles Time intelligence Source PARALLELPERIOD Période complète décalée Time intelligence Source PREVIOUSMONTH Mois qui précède la première date du contexte Time intelligence Source DATESINPERIOD Période glissante Time intelligence Source DATESBETWEEN Dates entre deux bornes Time intelligence Source
Cumul annuel = TOTALYTD ( [ Montant vente ] , Calendrier [ Date ] )
Cumul annuel N-1 = CALCULATE ( [ Montant vente ] , DATESYTD ( SAMEPERIODLASTYEAR ( Calendrier [ Date ] ) ) )
Montant N-1 = CALCULATE ( [ Montant vente ] , SAMEPERIODLASTYEAR ( Calendrier [ Date ] ) )
Montant M-1 = CALCULATE ( [ Montant vente ] , DATEADD ( Calendrier [ Date ] , - 1 , MONTH ) )
Montant année précédente complète = CALCULATE ( [ Montant vente ] , PARALLELPERIOD ( Calendrier [ Date ] , - 1 , YEAR ) )
Montant mois précédent = CALCULATE ( [ Montant vente ] , PREVIOUSMONTH ( Calendrier [ Date ] ) )
Montant 3 derniers mois =
CALCULATE ( [ Montant vente ] , DATESINPERIOD ( Calendrier [ Date ] , MAX ( Calendrier [ Date ] ) , - 3 , MONTH ) )
Cumul depuis l 'origine =
CALCULATE ( [Montant vente], DATESBETWEEN ( Calendrier[Date], BLANK (), MAX ( Calendrier[Date] ) ) ) Fonction Rôle Page notion Source CONCATENATEX Concatène les valeurs d'une table avec un séparateur Itérateurs et variables ; Rendre le rapport dynamique (partie 4) Source FORMAT Convertit une valeur en texte selon un format Rendre le rapport dynamique (partie 4) Source UNICHAR Renvoie le caractère Unicode d'un code (icônes texte) Rendre le rapport dynamique (partie 4) Source
// Liste les couleurs visibles sur chaque ligne, ou la couleur unique
Couleurs de la ligne =
SELECTEDVALUE (
Produit [ Couleur ] ,
CONCATENATEX ( VALUES ( Produit [ Couleur ] ) , Produit [ Couleur ] , ", " , Produit [ Couleur ] , ASC )
)
Titre carte = "Ventes " & SELECTEDVALUE ( Geographie [ Pays ] , "tous pays" ) & " : " & FORMAT ( [ Montant vente ] , "#,##0 €" )
Flèche hausse = UNICHAR ( 9650 ) Fenêtre et calculs visuels Fonction Rôle Page notion Source OFFSET Ligne située à N positions de la ligne courante Fonctions de fenêtre Source WINDOW Plage de lignes (cumul, moyenne mobile) Fonctions de fenêtre Source INDEX Ligne à une position absolue Fonctions de fenêtre Source RANK, ROWNUMBER Rang ou numéro de ligne Fonctions de fenêtre Source RUNNINGSUM, MOVINGAVERAGE, PREVIOUS, COLLAPSEALL Fonctions propres aux calculs visuels Calculs visuels Source
// Calculs visuels (barre de formule du calcul visuel)
Écart au précédent = [ Montant vente ] - PREVIOUS ( [ Montant vente ] )
Cumul = RUNNINGSUM ( [ Montant vente ] )
Moyenne mobile = MOVINGAVERAGE ( [ Montant vente ] , 2 )
% du total général = DIVIDE ( [ Montant vente ] , COLLAPSEALL ( [ Montant vente ] , ROWS ) ) Fonctions anciennes à reconnaître Vous rencontrerez ces écritures dans des modèles anciens ou sur des forums. Elles fonctionnent toujours, mais il existe une écriture plus simple :
Écriture ancienne Écriture recommandée ADDCOLUMNS ( SUMMARIZE (...), ... ) dans une requête SUMMARIZECOLUMNS (...) (dans une mesure, ADDCOLUMNS avec SUMMARIZE reste courant) INTERSECT ou FILTER avec CONTAINS pour filtrer une table non reliée TREATASALL comme modificateur de CALCULATE REMOVEFILTERSIF ( HASONEVALUE ( col ), VALUES ( col ) )SELECTEDVALUE ( col )Division avec /DIVIDE
Source (Microsoft Learn, référence des fonctions DAX) Source (DAX Guide, SQLBI : syntaxe, compatibilité et exemples de chaque fonction)