Académique Documents
Professionnel Documents
Culture Documents
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.
DAX est composé de fonctions simples à utiliser, toutefois l’imbrication de
ces fonctions peut rendre la compréhension du code assez fastidieuse.
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.
2
I. FONCTIONS D’INTELLIGENCE TEMPORELLE
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>])
3
Retourne la dernière date du trimestre dans
ENDOFQUARTER le contexte actuel pour la colonne de dates ENDOFQUARTER(<dates>)
spécifiée.
OPENINGBALANCEYEAR(<expressi
Évalue l’expression à la première date de
OPENINGBALANCEYEAR on>,<dates>[,<filter>][,<year_end_
l’année dans le contexte actuel.
date>])
4
d’intervalles en avançant ou en remontant
dans le temps.
5
II. FONCTIONS DE DATE ET HEURE
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.
6
Retourne les secondes d’une valeur d’heure,
SECOND sous la forme d’un nombre compris entre 0 SECOND(<time>)
et 59.
7
III. FONCTIONS DE FILTRAGE
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.
8
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>[,…]]]])
9
IV. FONCTIONS FINANCIERES
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>])
COUPPCD(<settlement>,
Retourne la date du coupon précédent
COUPPCD <maturity>, <frequency>[,
avant la date de règlement.
<basis>])
10
CUMIPMT(<rate>, <nper>, <pv>,
Retourne les intérêts cumulés payés sur un
CUMIPMT <start_period>, <end_period>,
prêt entre start_period et end_period.
<type>)
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>])
INTRATE(<settlement>,
Retourne le taux d’intérêt d’un titre
INTRATE <maturity>, <investment>,
totalement investi.
<redemption>[, <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
investissement) avec des paiements de
principal identiques.
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
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
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
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
Retourne la valeur true quand la colonne
ISINSCOPE spécifiée est le niveau dans une hiérarchie ISINSCOPE(<columnName>)
de niveaux.
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
Retourne l’ID d’objet ou le SID de
USEROBJECTID USEROBJECTID()
l’utilisateur actuel.
17
VI. FONCTIONS LOGIQUES
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.
18
VII. FONCTIONS MATHEMATIQUES ET TRIGONOMETRIQUES
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
Évalue l’argument et retourne le résultat en
CURRENCY CURRENCY(<value>)
utilisant un type de données monétaire.
20
Retourne le produit des nombres d’une
PRODUCT PRODUCT(<column>)
colonne.
ROUNDDOWN(<number>,
ROUNDDOWN Arrondit un nombre vers le bas, vers zéro.
<num_digits>)
21
VIII. AUTRES FONCTIONS
Ces fonctions effectuent des actions uniques qui n’entrent dans aucune des catégories.
22
IX. FONCTIONS PARENTS ET ENFANTS
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.
23
X. FONCTIONS DE RELATION
Les fonctions de cette catégorie permettent de gérer et d’utiliser les relations entre les tables.
24
XI. FONCTIONS STATISTIQUES
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
Retourne la cotangente hyperbolique d’un
COTH COTH (<number>)
angle hyperbolique.
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
Retourne la valeur médiane des nombres
MEDIAN MEDIAN(<column>)
d’une colonne.
MIN(<column>)
Retourne la plus petite valeur numérique
Ou
MIN d’une colonne ou entre deux expressions
MIN(<expression1>,
scalaires.
<expression2>)
27
SAMPLE(<n_value>, <table>,
Retourne un échantillon de N lignes de la <orderBy_expression>, [<order>[,
SAMPLE
table spécifiée. <orderBy_expression>,
[<order>]]…])
28
XII. FONCTIONS DE MANIPULATION DE TABLES
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
résultant de l’évaluation de table2 dans le
contexte de la ligne actuelle de table1.
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
Modifie le comportement de SUMMARIZE
et SUMMARIZECOLUMNS en ajoutant des ROLLUPGROUP (
ROLLUPGROUP lignes de cumul au résultat des colonnes <groupBy_columnName> [,
définies par le paramètre <groupBy_columnName> [, … ] ] )
groupBy_columnName.
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>]]…])
UNION(<table_expression1>,
Crée une table d’union (jointure) à partir
UNION <table_expression2>
d’une paire de tables.
[,<table_expression>]…)
31
XIII. FONCTIONS DE TEXTE
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
RIGHT retourne le ou les derniers caractères
RIGHT d’une chaîne de texte, en fonction du RIGHT(<text>, <num_chars>)
nombre de caractères que vous spécifiez.
33