Écrire des formules DAX
Chaque type de calcul de modèle ou chaque table, colonne calculée ou mesure est défini(e) par son nom, suivi du symbole égal (=), lui-même suivi d’une formule DAX. Créez un calcul de modèle à l’aide du modèle suivant :
<Calculation name> = <DAX formula>
Par exemple, la définition de la table calculée Ship Date qui duplique les données de table Date est :
Ship Date = 'Date'
Une formule DAX se compose d’expressions qui renvoient un résultat. Le résultat est un objet de table ou une valeur scalaire. Les formules de table calculée doivent renvoyer un objet de table ; les formules de colonne calculée et de mesure doivent renvoyer une valeur scalaire (valeur unique).
Les formules sont assemblées à l’aide des éléments suivants :
- Fonctions DAX
- Opérateurs DAX
- Références à des objets de modèle
- Valeurs constantes, comme le nombre 24 ou le texte littéral « FY » (abréviation de « fiscal year » en anglais, ou exercice)
- Variables DAX
- Espace blanc
Conseil
Lors de la saisie de formules DAX dans Power BI Desktop, vous bénéficiez des avantages d’IntelliSense. IntelliSense est une aide à la saisie de code semi-automatique qui répertorie les fonctions et les ressources de modèle. Lorsque vous sélectionnez une fonction DAX, elle vous fournit également une définition et une description. Nous vous recommandons de créer rapidement des formules exactes à l’aide d’IntelliSense.
Fonctions DAX
À l’instar de Microsoft Excel, DAX est un langage fonctionnel. Autrement dit, les formules s’appuient sur des fonctions pour atteindre des objectifs spécifiques. En général, les fonctions DAX comportent des arguments qui autorisent la transmission de variables. Les formules peuvent utiliser de nombreux appels de fonction et imbriquent souvent des fonctions dans d’autres fonctions.
Dans une formule, les noms des fonctions doivent être suivis de parenthèses. Entre les parenthèses, les variables sont transmises.
Remarque
Certaines fonctions n’acceptent pas d’arguments, ou les arguments peuvent être facultatifs.
L’utilisation des fonctions DAX est décrite plus loin dans ce module.
Opérateurs DAX
Les formules s’appuient également sur des opérateurs, qui peuvent effectuer des calculs arithmétiques, comparer des valeurs, utiliser des chaînes ou tester des conditions.
Les opérateurs DAX sont décrits plus en détail plus loin dans ce module.
Références à des objets de modèle
Les formules peuvent uniquement faire référence à trois types d’objets de modèle : des tables, des colonnes ou des mesures. Une formule ne peut pas faire référence à une hiérarchie ou à un niveau de hiérarchie. (Rappelez-vous qu’un niveau de hiérarchie est basé sur une colonne ; votre formule peut donc faire référence à la colonne d’un niveau de hiérarchie.)
Références de table
Lorsque vous référencez une table dans une formule, officiellement, le nom de la table est placé entre guillemets simples. Dans la définition de table calculée suivante, notez que nom de la table Date est placé entre guillemets simples :
Ship Date = 'Date'
Toutefois, les guillemets simples peuvent être omis lorsque les deux conditions suivantes sont remplies :
- Le nom de la table ne comporte aucune espace intégrée.
- Le nom de la table n’est pas un mot réservé utilisé par DAX. Tous les noms et opérateurs de fonction DAX sont des mots réservés.
Date est un nom de fonction DAX, ce qui explique pourquoi, lorsque vous référencez une table nommée
Date, vous devez la placer entre guillemets simples.
Dans la définition de table calculée suivante, il est possible d’omettre les guillemets simples en cas de référencement de la table Airport :
Arrival Airport = Airport
Références de colonne
Lorsque vous référencez une colonne dans une formule, le nom de la colonne doit être placé entre crochets. Il peut également être précédé du nom de sa table. Par exemple, la définition de mesure suivante fait référence à la colonne Sales Amount :
Revenue = SUM([Sales Amount])
Comme les noms de colonnes sont uniques dans une table, mais pas nécessairement uniques dans le modèle, vous pouvez lever l’ambiguïté de la référence de colonne en la faisant précéder du nom de sa table. Ce nom de colonne non ambigu est appelé nom de colonne complet. Certaines fonctions DAX requièrent la transmission de noms de colonne complets.
Conseil
Pour améliorer la lisibilité de vos formules, nous vous recommandons de toujours faire précéder une référence de colonne par le nom de sa table.
La définition de mesure de l’exemple précédent peut être réécrite comme suit :
Revenue = SUM(Sales[Sales Amount])
Références de mesure
Lorsque vous référencez une mesure dans une formule, comme les références de nom de colonne, le nom de la mesure doit être placé entre crochets. Par exemple, la définition de mesure suivante fait référence aux mesures Revenue et Cost :
Profit = [Revenue] - [Cost]
Si vous faites vos premiers pas dans DAX, le fait que les références de colonne et de mesure soient toujours placées entre crochets peut prêter à confusion lorsque vous essayez de comprendre une formule. Cependant, au fur et à mesure que vous maîtrisez les principes fondamentaux de DAX, vous pouvez déterminer le type d’objet dont il s’agit, car les colonnes et les mesures sont utilisées de différentes manières dans les formules DAX.
Conseil
Il est possible de faire précéder une référence de mesure du nom de sa table. Toutefois, les mesures sont un objet au niveau du modèle. Bien qu’elles soient affectées à une table principale, il ne s’agit que d’une relation cosmétique pour organiser logiquement les mesures dans le volet Données.
Par conséquent, même si nous vous recommandons de toujours faire précéder une référence de colonne du nom de sa table, l’inverse est vrai pour les mesures : nous vous recommandons de ne jamais faire précéder une référence de mesure du nom de sa table.
Pour en savoir plus, consultez Références de colonne et de mesure.
Variables DAX
Les formules peuvent déclarer des variables DAX pour stocker les résultats.
La suite de ce module explique comment et quand utiliser des variables DAX.
Espace blanc
Un espace blanc désigne des caractères vous permettant de mettre en forme vos formules d’une manière rapide et simple à comprendre. Voici les caractères d’espace blanc :
- Espaces
- Tabulations
- Retours chariot
Les espaces blancs sont facultatifs ; ils ne modifient pas la logique de votre formule et ne nuisent pas aux performances. Nous vous recommandons vivement d’adopter un style de mise en forme, de l’appliquer systématiquement et de prendre en compte les recommandations suivantes :
- Utilisez des espaces entre les opérateurs.
- Mettez en retrait les appels de fonction imbriqués à l'aide de tabulations.
- Séparez les arguments de fonction à l’aide de retours chariot, en particulier lorsque l’ensemble est trop long pour tenir sur une seule ligne. Une telle mise en forme simplifie le dépannage, en particulier lorsque vous oubliez des parenthèses dans la formule.
- Il vaut mieux utiliser trop d’espaces blancs que trop peu.
Conseil
Dans la barre de formule, appuyez sur Maj + Entrée pour saisir un retour chariot. Appuyez uniquement sur Entrée pour valider votre formule.
Notez que la définition de mesure suivante est écrite sur une seule ligne et qu’elle comprend cinq appels de fonction DAX :
Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))
L’exemple suivant est la même définition de mesure, mais désormais mise en forme, ce qui facilite sa lecture et sa compréhension :
Revenue YoY % =
DIVIDE(
[Revenue]
- CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)
)
Essayez de mettre en forme la mesure par vous-même. Ouvrez le fichier Power BI Desktop Adventure Works DW 2020 M02.pbix, puis dans le volet Données, développez la table Sales, puis sélectionnez la mesure Revenue YoY %. Dans la barre de formule, obtenez le même résultat que dans l’exemple précédent à l’aide des caractères de tabulation et de retour chariot. Lorsque vous ajoutez un retour chariot, n’oubliez pas d’appuyer sur Maj + Entrée.
La définition de cette mesure peut encore être améliorée en matière de lisibilité et de performances, ce qui est expliqué plus loin dans ce module.
Conseil
Un excellent outil de mise en forme d’une autre source qui peut vous aider à mettre en forme vos calculs est DAX Formatter. Cet outil vous permet de coller votre calcul et de le mettre en forme. Vous pouvez ensuite copier le calcul mis en forme dans le presse-papiers et le recoller dans Power BI Desktop.