Écrire des formules DAX

Effectué

Chaque type de calcul de modèle, de table calculée, de colonne calculée ou de mesure est défini par son nom, suivi du symbole égal (=), qui est ensuite suivi par une formule DAX. Utilisez le modèle suivant pour créer un calcul de modèle :

<Calculation name> = <DAX formula>

Par exemple, la définition de la table calculée Ship Date qui duplique les données de la table Date est la suivante :

Ship Date = 'Date'

Une formule DAX se compose d’expressions qui retournent un résultat. Le résultat est un objet table ou une valeur scalaire. Les formules de table calculée doivent retourner un objet table ; les formules de colonne et de mesure calculées doivent retourner une valeur scalaire (valeur unique).

Les formules sont assemblées à l’aide des éléments suivants :

  • Fonctions DAX
  • Opérateurs DAX
  • Références aux objets de modèle
  • Valeurs constantes, comme le nombre 24 ou le texte littéral « FY » (abréviation pour l’année fiscale)
  • Variables DAX
  • Espace blanc

Conseil

Quand vous entrez des formules DAX dans Power BI Desktop, vous bénéficiez de l’utilisation 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 d’utiliser IntelliSense pour vous aider à créer rapidement des formules exactes.

Fonctions DAX

À l’instar de Microsoft Excel, DAX est un langage fonctionnel, ce qui signifie que les formules s’appuient sur des fonctions DAX pour atteindre des objectifs spécifiques. En règle générale, les fonctions DAX ont des arguments qui autorisent le passage 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 passées.

Notes

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 aux 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

Quand 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 la table Date est placée entre guillemets simples.

Ship Date = 'Date'

Toutefois, les guillemets simples peuvent être omis lorsque les deux conditions suivantes sont vraies :

  1. Le nom de la table n’inclut pas d’espaces incorporés.
  2. Le nom de la table n’est pas un mot réservé qui est 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, quand 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 lors du référencement de la table Airport :

Arrival Airport = Airport

Références de colonnes

Quand vous référencez une colonne dans une formule, le nom de la colonne doit être placé entre crochets. Éventuellement, il peut être précédé de son nom de table. Par exemple, la définition de la mesure suivante fait référence à la colonne Sales Amount.

Revenue = SUM([Sales Amount])

Étant donné que 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 la table. Ce nom de colonne non ambigu est appelé nom de colonne complet. Certaines fonctions DAX requièrent le passage 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 son nom de table.

La définition de la mesure de l’exemple précédent peut être réécrite comme suit :

Revenue = SUM(Sales[Sales Amount])

Références de mesure

Quand vous référencez une mesure dans une formule, comme des références de nom de colonne, le nom de la mesure doit être placé entre crochets. Par exemple, la définition de la mesure suivante fait référence aux mesures Revenue and Cost.

Profit = [Revenue] - [Cost]

Si vous découvrez DAX, le fait que les références de colonnes et de mesures sont toujours placées entre crochets peut entraîner des confusions quand vous essayez de lire une formule. Toutefois, à mesure que vous assimilez les notions de base de DAX, vous pouvez déterminer le type d’objet, car dans les formules, les colonnes et les mesures DAX sont utilisées de différentes manières.

Conseil

Il est possible de faire précéder une référence de mesure d’un nom de table. Toutefois, les mesures sont un objet au niveau du modèle. Bien qu’elles soient attribuées à une table principale, il ne s’agit que d’une relation cosmétique qui permet d’organiser logiquement les mesures dans le volet Champs.

Par conséquent, bien que nous vous conseillons de toujours faire précéder une référence de colonne par son nom de table, l’inverse est vrai pour les mesures : Nous vous recommandons de ne jamais faire précéder une référence de mesure par son nom de table.

Pour plus d’informations, 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

L’espace blanc fait référence à des caractères que vous pouvez utiliser pour mettre en forme vos formules d’une manière rapide et simple à comprendre. Les caractères d’espace blanc sont les suivants :

  • Espaces
  • Onglets
  • Retours chariot

L’espace blanc est facultatif et ne modifie pas la logique de votre formule, et n’a pas d’impact négatif sur les performances. Nous vous recommandons vivement d’adopter un style de mise en forme et de l’appliquer de manière cohérente et de prendre en compte les recommandations suivantes :

  • Utilisez des espaces entre les opérateurs.
  • Utilisez des tabulations pour mettre en retrait les appels de fonction imbriqués.
  • Utilisez des retours chariot pour séparer les arguments de fonction, 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.
  • Préférez utiliser trop d’espaces blancs que trop peu.

Conseil

Dans la barre de formule, pour entrer un retour chariot, appuyez sur Maj + Entrée. En appuyant seulement sur Entrée, vous validez votre formule.

Considérons la définition de mesure suivante qui est écrite sur une seule ligne et qui 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 Champs, développez la table Sales, puis sélectionnez la mesure Revenue YoY %. Dans la barre de formule, utilisez les caractères de tabulation et de retour chariot pour produire le même résultat que dans l’exemple précédent. Quand vous ajoutez un retour chariot, n’oubliez pas d’appuyer sur Maj + Entrée.

Cette définition de mesure peut être davantage améliorée en matière de lisibilité et de performances, ce qui sera 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 le Formateur DAX. 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, puis le coller à nouveau dans Power BI Desktop.