Utiliser des fonctions DAX
La bibliothèque de fonctions DAX est constituée de centaines de fonctions, chacune conçue pour atteindre un objectif spécifique.
Comme DAX a été introduit avec le complément Power Pivot pour Microsoft Excel 2010, plus de 80 fonctions sont disponibles, que l’on retrouve aussi dans Excel. Il s’agissait d’une stratégie de conception délibérée par Microsoft pour s’assurer que les utilisateurs d’Excel puissent rapidement devenir productifs avec DAX.
Cependant, de nombreuses fonctions existent dans Power BI, mais pas dans Excel, car elles sont spécifiques à la modélisation des données :
- Fonctions de navigation dans les relations
- Fonctions de modification du contexte de filtre
- Fonctions d’itérateur
- Fonctions Time Intelligence
- Fonctions de chemin
Conseil
Pour rechercher la documentation relative à une fonction DAX, effectuez une recherche web avec le mot clé DAX suivi du nom de la fonction.
Pour en savoir plus, consultez les informations de référence sur les fonctions DAX.
Fonctions provenant d’Excel
Les sections suivantes étudient plusieurs fonctions utiles que vous connaissez peut-être déjà, car elles existent dans Excel.
La fonction IF teste si une condition fournie en tant que premier argument est remplie. Elle Renvoie une valeur si la condition est TRUE et l’autre valeur si la condition est FALSE. Voici la syntaxe de la fonction :
IF(<logical_test>, <value_if_true>[, <value_if_false>])
Conseil
Un argument de fonction est facultatif lorsque la documentation l’indique entre crochets.
Si l’argument logical_test renvoie FALSE et que l’argument value_if_false n’est pas fourni, la fonction renvoie BLANK.
De nombreuses fonctions de résumé Excel sont disponibles, notamment SUM, COUNT, AVERAGE, MIN, MAX, et bien d’autres. La seule différence est que dans DAX, vous transmettez une référence de colonne, alors que dans Excel, vous transmettez une plage de cellules.
De nombreuses fonctions mathématiques, logiques, de texte, de date et heure et d’information d’Excel sont également disponibles. Par exemple, voici un petit échantillon de fonctions Excel disponibles dans DAX, notamment ABS, ROUND, SQRT, LEN, LEFT, RIGHT, UPPER, DATE, YEAR, MONTH, NOW, ISNUMBER, TRUE, FALSE, AND, OR, NOT et IFERROR.
Fonctions ne provenant pas d’Excel
Deux fonctions DAX utiles non spécifiques à la modélisation et ne provenant pas d’Excel sont DISTINCTCOUNT et DIVIDE.
Fonction DISTINCTCOUNT
La fonction DAX DISTINCTCOUNT vous permet de compter le nombre de valeurs distinctes dans une colonne. Cette fonction est particulièrement puissante dans une solution d’analyse. Supposons que le nombre de clients est différent du nombre de clients distincts. Ce dernier total ne compte pas les clients récurrents, donc la différence est le « nombre de clients » par rapport au « nombre de clients différents ».
Fonction DIVIDE
La fonction DAX DIVIDE vous permet d’effectuer une division. Vous devez transmettre des expressions de numérateur et de dénominateur. Vous pouvez également transmettre une valeur qui représente un résultat alternatif. Voici la syntaxe de la fonction DIVIDE :
DIVIDE(<numerator>, <denominator>[, <alternate_result>])
La fonction DIVIDE gère automatiquement les cas de division par zéro. Si un résultat alternatif n’est pas transmis et que le dénominateur est zéro ou vide, la fonction renvoie BLANK. Lorsqu’un résultat alternatif est transmis, il est renvoyé à la place de BLANK.
Cette fonction est pratique, car elle évite à votre expression d’avoir à commencer par tester la valeur du dénominateur. La fonction est également mieux optimisée que la fonction IF pour tester la valeur du dénominateur. Le gain de performance est significatif, car la vérification de la division par zéro est coûteuse. De plus, l’utilisation de la fonction DIVIDE donne une expression plus concise et plus élégante.
Conseil
Nous vous recommandons d’utiliser la fonction DIVIDE chaque fois que le dénominateur est une expression qui pourrait renvoyer zéro ou BLANK. Si le dénominateur est une valeur constante, nous vous recommandons d’utiliser l’opérateur de division (/), qui est présenté plus loin dans ce module. Dans ce cas, la réussite de la division est garantie et votre expression fonctionne mieux, car elle évite les tests inutiles.