DAX Functions
DAX Functions
DAX Functions
DAX signifie Data Analysis Expressions. Il s’agit du langage de formule utilisé dans
Power BI (il est également utilisé par Power BI en arrière-plan). Le DAX se retrouve
également dans d’autres produits Microsoft, Power Pivot, SSAS en modèle
tabulaire SSAS (attention dans ce mode les fonctions peuvent diverger
légèrement : « les «, » sont remplacés par des « ; » par exemple ou d’autres
subtilités dans le genre)
Pour ma part lors de mon initiation j’ai dû créer différents modèles et rajouter
certaines mesures calculées.
Les dimensions qui sont des référentiels (des tables figées, comportant des
données distinctes ex : les produits)
Les tables de fait qui sont des données qui bougent avec le temps sur
lesquelles nous allons effectuer nos opérations d’agrégation et donc
réaliser nos mesures calculées (ex : les ventes de produits)
Customer
Product
Sales
Langage DAX Microsoft Power BI
Suite à ce modèle nous avons voulu réaliser quelques fonctions intéressantes dont
voici le détail
1. SUM
La fonction SUM additionne les nombres d’une colonne et retourne un nombre
décimal.
Syntaxe
SUM ( < colonne> )
Exemple
Nous créons une mesure qui affiche le nombre de produits vendus
EXPLICATION
Regardons en détail la 2ème ligne du tableau de résultat « 2007 – United
Kingdom ».
Les données sources filtrées sur UK 2007 sont
2. SUMX
SUMX est un itérateur. Pour chaque ligne de données concernée, la fonction
SUMX évalue l’ expression définie, ensuite elle retourne la somme de ces
résultats.
Syntaxe
SUMX ( <table> , <expression> )
Exemple
Pour chaque ligne de vente, le montant de vente = la quantité du produit vendu *
le prix du produit.
Nous souhaitons afficher le montant des ventes de chaque année. Pour cela, nous
créons une mesure Montant en utilisant la fonction SUMX
EXPLICATION
Pour l’année 2009, les données sources sont
3. FILTER
La fonction FILTER retourne un sous-ensemble d’une table qui satisfait les
conditions définies
Syntaxe
FILTER ( <table>,<filtre(s)> )
Exemple
Nous souhaitons créer une mesure qui affiche le nombre de produits
vendus qu’aux clients français
SUM_QuantityFR =
SUMX(
EXPLICATION
Pour l’année 2009,
La ligne « France » : la mesure SUM_QuantityFR affiche la quantité totale
des produits vendus aux clients français
La ligne « United Kingdom » : la mesure SUM_QuantityFR n’affiche rien car
il n’y a pas de ventes aux clients qui sont en même temps français et anglais
4. CALCULATE
La fonction CALCULATE modifie le contexte de filtre et évalue l’expression définie
dans le nouveau contexte.
Syntaxe
Langage DAX Microsoft Power BI
CALCULATE ( <expression>, <filtre 1>, <filtre 2>…)
Exemple
Nous souhaitons afficher pour chaque année et chaque pays le nombre de
produits vendus aux clients français.
CALCULATE_QuantityFR =
CALCULATE (
SUM(Sales[Quantity]);
EXPLICATION
Prenons par exemple la 3ème ligne du tableau de résultat ci-dessus
CALCULATE reçoit comme contexte de filtre l’année 2009 et le pays United
Kingdom
Ensuite CALCULATE évalue le filtre FILTER( ALL(Customer);
Customer[Country] = « France »
Le filtre est évalué sur l’ensemble de la table Customer (grâce à la fonction
ALL). Ce filtre retourne tous les clients français
CALCULATE évalue l’expression SUM(Sales[Quantity]) dans le nouveau
contexte de filtre, cad l’année 2009 et le pays France
CALCULATE restaure le contexte de filtre initial (2009 – United Kingdom) et
affiche le résultat du calcul
Les données source pour l’année 2009 sont
Langage DAX Microsoft Power BI
5. ALL
La fonction ALL retourne toutes les lignes d’une table ou toutes les valeurs d’une
colonne, en supprimant tous les filtres.
Syntaxe
ALL ( { <table>|<colonne>[, <colonne>[, …]] } )
Exemple
Nous souhaitons afficher le nombre total des produits vendus chaque année en
ignorant les filtres sur Produit
EXPLICATION
Les données sources de l’année 2009 sont
Langage DAX Microsoft Power BI
6. ALLEXCEPT
La fonction ALLEXCEPT retourne une table en gardant que les filtres sur les
colonnes spécifiées de la table spécifiée dans l’expression, les autres filtres de la
même table sont supprimés.
Syntaxe
ALLEXCEPT ( <table>, <colonne>[, <colonne>[, …]] )
Exemple
Créons la mesure suivante pour calculer le montant de vente de tous les pays
confondus.
ALLEXCEPTCountry_Montant =
Nous affichons d’abord cette nouvelle mesure par année et par pays.
EXPLICATION
Les filtres pris en compte par la mesure ALLEXCEPTCountry_Montant sont
Le filtre sur Country de la table Customer
Tous les filtres sur toutes les colonnes des autres tables
Langage DAX Microsoft Power BI
Les filtres sur les 2 colonnes affichées (année et pays) sont donc pris en compte
dans le calcul de ALLEXCEPTCountry_Montant. Cela explique pourquoi les 2
mesures Montant et ALLEXCEPTCountry_Montant affichent les mêmes valeurs qui
sont les montants des ventes par année et par pays
Ajoutons maintenant dans le tableau la colonne Gender.
EXPLICATION
La colonne Gender fait partie de la table Customer, les filtres appliqués sur cette
colonne ne sont donc pas pris en compte par la mesure
ALLEXCEPTCountry_Montant
ALLEXCEPTCountry_Montant affiche les montants totaux des ventes par année et
par pays, pour tous les genres confondus. Les lignes ayant la même année et le
même pays ont la même valeur de ALLEXCEPTCountry_Montant
ALLEXCEPTCountry_Montant des lignes France 2009 = 28*4 + 36 = 148
Pour rappel, les données de ventes filtrées sur France – 2009 sont
7. ALLSELECTED
La fonction ALLSELECTED retourne toutes les lignes d’une table ou toutes les
valeurs d’une colonne en conservant que les filtres définis à l’extérieur de la
requête
Syntaxe
ALLSELECTED ( <table> | <colonne> )
Langage DAX Microsoft Power BI
Exemple
Pour chaque année, nous souhaitons afficher la quantité totale des
produits vendus et affichés dans le rapport.
ALLSELECTED_Quantity =
CALCULATE (
SUM(Sales[Quantity]);
ALLSELECTED('Product'[Product Name])
EXPLICATION
Pour rappel :
SUM_Quantity : le nombre de produits vendus
ALL_Quantity : le nombre total de tous les produits vendus
ALLSELECTED_Quantity : le nombre total des produits vendus
et affichés dans le rapport.
Nous constatons que ALL_Quantity affiche le nombre total de tous les produits
vendus de l’année concernée, même ceux qui ne sont pas affichés dans le tableau.
Alors que ALLSELECTED_Quantity ne prend en compte que les produits affichés.
Pour l’année 2007, ALLSELECTED_Quantity
= le nombre de « SV 16xDVD M360 Black » vendus en 2007 + le nombre de « WWI
1GB Pulse Smart pen E50 Silver » vendus en 2007
= 7 + 5 = 12
Langage DAX Microsoft Power BI
8. ISFILTERED
La fonction ISFILTERED retourne TRUE lorsque la colonne spécifiée est
directement filtrée.
Syntaxe
ISFILTERED ( <colonne> )
Exemple
Nous créons la mesure suivante permettant de vérifier s’il y a un filtre sur la
colonne Country de la table Customer
ISFILTERED_Country = ISFIlTERED(Customer[Country])
Nous affichons cette nouvelle mesure avec la colonne Gender, la valeur est
toujours FALSE parce qu’il n’y a pas de filtre sur la colonne Country
9. COUNTROWS
La fonction COUNTROWS retourne le nombre de lignes de la table spécifiée dans
l’expression
Syntaxe
COUNTROWS ( <table> )
Exemple
Pour compter le nombre de lignes de la table Sales
COUNTROWS_Sales = COUNTROWS(Sales)
10. VALUES
La fonction VALUES retourne les valeurs distinctes de la colonne spécifiée dans
l’expression
Langage DAX Microsoft Power BI
Syntaxe
VALUES ( <colonne> )
Exemple
Nous souhaitons savoir le nombre de différents produits vendus. Pour cela, nous
utilisons la fonction VALUES pour obtenir une liste distincte des produits vendus,
ensuite nous utilisons la fonction COUNTROWS pour compter le nombre de lignes
dans cette liste.
EXPLICATION
Nous pouvons constater dans la source qu’il y a 3 produits différents qui ont été
vendus en 2007 : « SV 16xDVD M360 Black », « WWI 1GB Pulse Smart pen E50
White » et « WWI 1GB Pulse Smart pen E50 Silver »
Langage DAX Microsoft Power BI
Conclusion
Une bonne maitrise des fonctions DAX est une des premières étapes importantes
de l’apprentissage du DAX. Cela nous permet de bien comprendre et de prévoir le
comportement des mesures calculées dont le résultat est déterminé par les axes
d’analyse et les filtres choisis par les utilisateurs.
Ci-dessous quelques sites qui permettent d’avoir plus de détails sur les fonctions
DAX
MSDN: https://msdn.microsoft.com/en-us/library/ee634396.aspx
SqlBi : https://www.sqlbi.com/