Académique Documents
Professionnel Documents
Culture Documents
Page 1
https://docs.microsoft.com/fr-fr/dax/
DAX
THE CHEAT SHEET
DAX est un acronyme anglais qui veut dire Data Analysis Expressions. Le
langage DAX est utilisé pour la manipulation de données notamment dans
Power BI, mais on peut aussi le retrouver dans Power Pivot ou encore
SSAS.
Avant de commencer à construire les visuels d’un rapport sous Power BI,
il convient de bien réfléchir à ce que l’on veut montrer et comment le
montrer. De ce fait, la préparation des données à utiliser est très
importantes. Les possibilités natives dans Power BI sont nombreuses mais
le langage DAX vient décupler ces possibilités.
Cette cheat sheet contient toutes les fonctions recensées dans DAX
accompagnées d’une description en français, de leur syntaxe et du lien
direct vers la documentation de Microsoft.
Par Julien Di Giulio Mis à jour le 24/02/2021
Page 2
X. FONCTIONS DE RELATION.................................................................................................................................................. 24
Page 3
DAX (Data Analysis Expressions) comprend également des fonctions d’intelligence temporelle qui vous
permettent de manipuler des données en utilisant des périodes de temps (jours, mois, trimestres et années,
entre autres), puis de générer et comparer des calculs sur ces périodes.
CLOSINGBALANCEYEAR(<expressio
Évalue l’expression à la dernière date de
CLOSINGBALANCEYEAR n>,<dates>[,<filter>][,<year_end_d
l’année dans le contexte actuel.
ate>])
Page 4
Page 5
Page 6
Ces fonctions vous aident à créer des calculs basés sur les dates et l’heure. La plupart des fonctions de DAX
sont similaires aux fonctions de date et d’heure d’Excel. Toutefois, les fonctions DAX utilisent un type de
données datetime et peuvent prendre des valeurs d’une colonne en tant qu’argument.
Page 7
Page 8
Les fonctions de filtre et de valeur de DAX comptent parmi les plus complexes et les plus puissantes. Elles
présentent des différences notables avec les fonctions Excel. Les fonctions de recherche utilisent des tables
et des relations, comme une base de données. Avec les fonctions de filtre, vous pouvez manipuler le
contexte des données pour créer des calculs dynamiques.
Page 9
LOOKUPVALUE(
<result_columnName>,
Retourne la valeur pour la ligne qui remplit <search_columnName>,
tous les critères spécifiés par les conditions <search_value>
LOOKUPVALUE
de recherche. La fonction peut appliquer [, <search2_columnName>,
une ou plusieurs conditions de recherche. <search2_value>]…
[, <alternateResult>]
)
REMOVEFILTERS([<table> |
Efface les filtres des tables ou colonnes
REMOVEFILTERS <column>[, <column>[,
spécifiées.
<column>[,…]]]])
Page 10
Les fonctions financières dans DAX s’utilisent dans des formules qui effectuent des calculs financiers, par
exemple, pour connaître la valeur actuelle nette et le taux de rendement. Ces fonctions sont similaires aux
fonctions financières utilisées dans Microsoft Excel.
ACCRINT(<issue>, <first_interest>,
Retourne les intérêts courus pour un titre <settlement>, <rate>, <par>,
ACCRINT
qui rapporte des intérêts périodiquement. <frequency>[, <basis>[,
<calc_method>]])
AMORLINC(<cost>,
Retourne l’amortissement pour chaque <date_purchased>, <first_period>,
AMORLINC
période comptable. <salvage>, <period>, <rate>[,
<basis>])
COUPNCD(<settlement>,
Retourne la date du prochain coupon après
COUPNCD <maturity>, <frequency>[,
la date du règlement.
<basis>])
Retourne le nombre de coupons dus entre
COUPNUM(<settlement>,
la date de règlement et la date d’échéance,
COUPNUM <maturity>, <frequency>[,
arrondi au nombre entier de coupons le
<basis>])
plus proche.
COUPPCD(<settlement>,
Retourne la date du coupon précédent
COUPPCD <maturity>, <frequency>[,
avant la date de règlement.
<basis>])
10
Page 11
DISC(<settlement>, <maturity>,
DISC Retourne le taux d’escompte pour un titre.
<pr>, <redemption>[, <basis>])
DURATION(<settlement>,
Retourne la durée de Macaulay pour une
DURATION <maturity>, <coupon>, <yld>,
valeur nominale supposée de 100 $.
<frequency>[, <basis>])
Calcule les intérêts payés (ou reçus) pour la ISPMT(<rate>, <per>, <nper>,
ISPMT
période spécifiée d’un prêt (ou d’un <pv>)
11
Page 12
ODDFPRICE(<settlement>,
Retourne le prix par valeur nominale de <maturity>, <issue>,
ODDFPRICE 100 $ d’un titre dont la première période est <first_coupon>, <rate>, <yld>,
inhabituelle (courte ou longue). <redemption>, <frequency>[,
<basis>])
ODDFYIELD(<settlement>,
Retourne le rendement d’un titre dont la <maturity>, <issue>,
ODDFYIELD première période est inhabituelle (courte ou <first_coupon>, <rate>, <pr>,
longue). <redemption>, <frequency>[,
<basis>])
ODDLPRICE(<settlement>,
Retourne le prix par valeur nominale de
<maturity>, <last_interest>,
ODDLPRICE 100 $ d’un titre dont la période du dernier
<rate>, <yld>, <redemption>,
coupon est inhabituelle (courte ou longue).
<frequency>[, <basis>])
ODDLYIELD(<settlement>,
Retourne le rendement d’un titre dont la
<maturity>, <last_interest>,
ODDLYIELD dernière période est inhabituelle (courte ou
<rate>, <pr>, <redemption>,
longue).
<frequency>[, <basis>])
12
Page 13
PRICEDISC(<settlement>,
Retourne le prix par valeur nominale de
PRICEDISC <maturity>, <discount>,
100 $ d’un titre escompté.
<redemption>[, <basis>])
RECEIVED(<settlement>,
Retourne le montant reçu à l’échéance d’un
RECEIVED <maturity>, <investment>,
titre totalement investi.
<discount>[, <basis>])
TBILLYIELD(<settlement>,
TBILLYIELD Retourne le rendement d’un bon du Trésor.
<maturity>, <pr>)
YIELD(<settlement>, <maturity>,
Retourne le rendement d’un titre qui
YIELD <rate>, <pr>, <redemption>,
rapporte des intérêts périodiquement.
<frequency>[, <basis>])
13
Page 14
YIELDDISC(<settlement>,
Retourne le rendement annuel d’un titre
YIELDDISC <maturity>, <pr>, <redemption>[,
escompté.
<basis>])
YIELDMAT(<settlement>,
Retourne le rendement annuel d’un titre qui
YIELDMAT <maturity>, <issue>, <rate>,
rapporte des intérêts à l’échéance.
<pr>[, <basis>])
14
Page 15
V. FONCTIONS D’INFORMATION
Les fonctions d’information DAX examinent la cellule ou la ligne qui est fournie comme argument, puis
indique si la valeur correspond au type attendu. Par exemple, la fonction ISERROR retourne TRUE si la valeur
que vous référencez contient une erreur.
15
Page 16
ISONORAFTER(<scalar_expression>
Fonction booléenne qui émule le
, <scalar_expression>[, sort_order [,
comportement d’une clause Start At et
ISONORAFTER <scalar_expression>,
retourne la valeur true pour une ligne qui
<scalar_expression>[,
remplit tous les paramètres de condition.
sort_order]]…)
16
Page 17
Page 18
Les fonctions logiques agissent sur une expression pour retourner des informations sur les valeurs ou les
jeux de l’expression. Par exemple, vous pouvez utiliser la fonction IF pour vérifier le résultat d’une
expression et créer des résultats conditionnels.
Page 19
Les fonctions mathématiques dans DAX (Data Analysis Expressions) ressemblent beaucoup aux fonctions
mathématiques et trigonométriques dans Excel. Cette section liste les fonctions mathématiques fournies par
DAX.
19
Page 20
20
Page 21
ROUNDDOWN(<number>,
ROUNDDOWN Arrondit un nombre vers le bas, vers zéro.
<num_digits>)
Page 22
Ces fonctions effectuent des actions uniques qui n’entrent dans aucune des catégories.
Page 23
Ces fonctions gèrent les données présentées sous forme de hiérarchies parent/enfant. Pour en savoir plus,
consultez Présentation des fonctions pour les hiérarchies parent-enfant dans DAX.
Page 24
X. FONCTIONS DE RELATION
Les fonctions de cette catégorie permettent de gérer et d’utiliser les relations entre les tables.
Page 25
DAX (Data Analysis Expressions) fournit de nombreuses fonctions pour la création d’agrégations telles que
des sommes, des nombres et des moyennes. Ces fonctions sont très similaires aux fonctions d’agrégation
utilisées par Microsoft Excel. Cette section liste les fonctions statistiques et d’agrégation fournies dans DAX.
BETA.DIST(x,alpha,beta,cumulative,[
BETA.DIST Retourne la distribution Bêta.
A],[B])
CHISQ.DIST(<x>, <deg_freedom>,
CHISQ.DIST Retourne la distribution du Khi-deux.
<cumulative>)
25
Page 26
DATATABLE (ColumnName1,
Fournit un mécanisme permettant de
DataType1, ColumnName2,
DATATABLE déclarer un ensemble inline de valeurs de
DataType2..., {{Value1, Value2...},
données.
{ValueN, ValueN+1...}...})
MAX(<column>)
Retourne la plus grande valeur numérique
Ou
MAX d’une colonne ou entre deux expressions MAX(<expression1>,
scalaires.
<expression2>)
26
Page 27
MIN(<column>)
Retourne la plus petite valeur numérique
Ou
MIN d’une colonne ou entre deux expressions
MIN(<expression1>,
scalaires.
<expression2>)
27
Page 28
SAMPLE(<n_value>, <table>,
Retourne un échantillon de N lignes de la <orderBy_expression>, [<order>[,
SAMPLE
table spécifiée. <orderBy_expression>,
[<order>]]…])
28
Page 29
ADDCOLUMNS(<table>, <name>,
Ajoute des colonnes calculées à la table ou
ADDCOLUMNS <expression>[, <name>,
à l’expression de table donnée.
<expression>]…)
ADDMISSINGITEMS (
[<showAll_columnName> [,
<showAll_columnName> [, … ] ] ],
Ajoute à une table les combinaisons
<table> [,
ADDMISSINGITEMS d’éléments de plusieurs colonnes si ces
<groupBy_columnName> [,
éléments n’existent pas déjà.
[<filterTable>] [,
<groupBy_columnName> [,
[<filterTable>] [, … ] ] ] ] ] ]
DATATABLE (ColumnName1,
Fournit un mécanisme permettant de
DataType1, ColumnName2,
DATATABLE déclarer un ensemble inline de valeurs de
DataType2..., {{Value1, Value2...},
données.
{ValueN, ValueN+1...}...})
29
Page 30
GROUPBY (<table> [,
Tout comme la fonction SUMMARIZE,
<groupBy_columnName> [,
GROUPBY n’utilise pas implicitement la
GROUPBY <groupBy_columnName> [, …]]] [,
fonction CALCULATE pour les colonnes
<name>, <expression> [, <name>,
d’extension qu’elle ajoute.
<expression> [, …]]])
IGNORE(<expression>)
Avec SUMMERIZECOLUMN :
Modifie SUMMARIZECOLUMNS en SUMMARIZECOLUMNS(<groupBy_
IGNORE omettant des expressions spécifiques de columnName>[, <
l’évaluation BLANK/NULL. groupBy_columnName >]…,
[<filterTable>]…[, <name>,
IGNORE(…)]…)
ROLLUPADDISSUBTOTAL (
Modifie le comportement de [<grandtotalFilter>],
SUMMARIZECOLUMNS en ajoutant des <groupBy_columnName>, <name>
ROLLUPADDISSUBTOTAL
lignes de cumul/sous-total au résultat basé [, [<groupLevelFilter>] [,
sur les colonnes groupBy_columnName. <groupBy_columnName>, <name>
[, [<groupLevelFilter>] [, … ] ] ] ] )
ROLLUPISSUBTOTAL (
[<grandTotalFilter>],
<groupBy_columnName>,
Associe des groupes de cumul à la colonne
<isSubtotal_columnName> [,
ROLLUPISSUBTOTAL ajoutée par ROLLUPADDISSUBTOTAL dans
[<groupLevelFilter>] [,
une expression ADDMISSINGITEMS.
<groupBy_columnName>,
<isSubtotal_columnName> [,
[<groupLevelFilter>] [, … ] ] ] ] )
30
Page 31
SELECTCOLUMNS(<table>,
Ajoute des colonnes calculées à la table ou
SELECTCOLUMNS <name>, <scalar_expression> [,
à l’expression de table donnée.
<name>, <scalar_expression>]…)
SUBSTITUTEWITHINDEX(<table>,
<indexColumnName>,
Retourne une table qui représente une
<indexColumnsTable>,
SUBSTITUTEWITHINDEX semi-jointure gauche des deux tables
[<orderBy_expression>, [<order>][,
fournies comme arguments.
<orderBy_expression>,
[<order>]]…])
SUMMARIZE (<table>,
Retourne une table récapitulative des totaux <groupBy_columnName>[,
SUMMARIZE
demandés sur un ensemble de groupes. <groupBy_columnName>]…[,
<name>, <expression>]…)
SUMMARIZECOLUMNS(
<groupBy_columnName> [, <
Retourne une table récapitulative sur un
SUMMARIZECOLUMNS groupBy_columnName >]…,
ensemble de groupes.
[<filterTable>]…[, <name>,
<expression>]…)
{ <scalarExpr1>, <scalarExpr2>, … }
Retourne une table d’une ou plusieurs { ( <scalarExpr1>, <scalarExpr2>, …
Constructeur de table
colonnes. ), ( <scalarExpr1>, <scalarExpr2>, …
), … }
TOPN(<n_value>, <table>,
Retourne les N premières lignes de la table <orderBy_expression>, [<order>[,
TOPN
spécifiée. <orderBy_expression>,
[<order>]]…])
31
Page 32
DAX (Data Analysis Expressions) comprend un ensemble de fonctions de texte basées sur la bibliothèque de
fonctions de chaîne dans Excel, mais qui ont été modifiées pour fonctionner avec des tables et des colonnes
dans les modèles tabulaires. Cette section décrit les fonctions de texte disponibles dans le langage DAX.
COMBINEVALUES(<delimiter>,
joint deux chaînes de texte ou plus en une
COMBINEVALUES <expression>, <expression>[,
seule.
<expression>]…)
REPLACE(<old_text>, <start_num>,
REPT Répète du texte un certain nombre de fois.
<num_chars>, <new_text>)
32
Page 33