Partager via


Découvrir les principes fondamentaux de DAX dans Power BI Desktop

Les utilisateurs qui débutent avec Power BI Desktop peuvent utiliser cet article comme une introduction rapide et simple sur la façon dont vous pouvez utiliser DAX (Data Analysis Expressions) pour résoudre de nombreux problèmes de base et d’analyse des données. Nous allons parcourir certaines informations conceptuelles, une série de tâches que vous pouvez effectuer et un contrôle des connaissances pour tester ce que vous avez appris. Après avoir terminé cet article, vous devez avoir une bonne compréhension des concepts fondamentaux les plus importants dans DAX.

Qu’est-ce que DAX ?

DAX est une collection de fonctions, d’opérateurs et de constantes qui peuvent être utilisées dans une formule ou une expression, pour calculer et retourner une ou plusieurs valeurs. DAX vous permet de créer des informations à partir des données qui se trouvent déjà dans votre modèle.

Pourquoi DAX est-il si important ?

Il est facile de créer un fichier Power BI Desktop et d’importer des données dans celui-ci. Vous pouvez même créer des états qui montrent des informations précieuses sans utiliser aucune formule DAX. Mais que se passe-t-il si vous avez besoin d’analyser le pourcentage de croissance entre les catégories de produits et pour différentes plages de dates ? Vous devez également calculer la croissance annuelle par rapport aux tendances du marché ? Les formules DAX offrent cette possibilité et de nombreuses autres fonctionnalités importantes. Apprendre à créer des formules DAX efficaces vous aidera à tirer le meilleur parti de vos données. Lorsque vous obtenez les informations dont vous avez besoin, vous pouvez commencer à résoudre de vrais problèmes qui affectent les résultats de votre entreprise.

Conditions préalables

Vous connaissez peut-être déjà la création de formules dans Microsoft Excel, et ces connaissances seront utiles pour comprendre DAX. Toutefois, même si vous n’avez pas d’expérience avec les formules Excel, les concepts décrits ici vous aideront à commencer à créer des formules DAX et à résoudre immédiatement des problèmes de décisionnel réels.

Nous allons nous concentrer sur la compréhension des formules DAX utilisées dans les calculs, plus précisément, dans les mesures et les colonnes calculées. Vous devez déjà être familiarisé avec l’utilisation de Power BI Desktop pour importer des données et ajouter des champs à un rapport, et vous devez également être familiarisé avec les concepts fondamentaux des colonnes Mesures et Calculées.

Exemple de classeur

La meilleure façon d’apprendre DAX consiste à créer des formules de base, à les utiliser avec des données réelles et à voir les résultats par vous-même. Les exemples et les tâches ici utilisent le fichier Contoso Sales Sample pour Power BI Desktop. Cet exemple de fichier est le même que celui utilisé dans le tutoriel : Créez vos propres mesures dans l’article Power BI Desktop .

Commençons

Nous allons structurer notre compréhension de DAX autour de trois concepts fondamentaux : syntaxe, fonctions et contexte. Il existe d’autres concepts importants dans DAX, mais la compréhension de ces trois concepts fournira la meilleure base sur laquelle créer vos compétences DAX.

Syntaxe

Avant de créer vos propres formules, examinons la syntaxe de formule DAX. La syntaxe inclut les différents éléments qui composent une formule, ou plus simplement, comment la formule est écrite. Par exemple, voici une formule DAX simple pour une mesure :

Capture d’écran d’une formule DAX avec des pointeurs vers des éléments de syntaxe individuels.

Cette formule comprend les éléments de syntaxe suivants :

A. Le nom de la mesure, Total des ventes.

B. L'opérateur de signe égal (=), qui indique le début de la formule. Après le calcul, un résultat est retourné.

C. La fonction DAX SUM, qui additionne tous les nombres dans la colonne Sales[SalesAmount]. Vous en apprendrez plus sur les fonctions ultérieurement.

D. Parenthèses (), qui entourent une expression qui contient un ou plusieurs arguments. La plupart des fonctions nécessitent au moins un argument. Un argument passe une valeur à une fonction.

E. La table référencée, Ventes.

F. Colonne référencée , [SalesAmount], dans la table Sales. Avec cet argument, la fonction SUM sait sur quelle colonne agréger une somme.

Lorsque vous essayez de comprendre une formule DAX, il est souvent utile de décomposer chacun des éléments dans une langue que vous pensez et parlez tous les jours. Par exemple, vous pouvez lire cette formule comme suit :

Pour la mesure nommée Total Sales, calculez (=) la SOMME des valeurs dans la colonne [SalesAmount] de la table Sales.

Lorsqu’elle est ajoutée à un rapport, cette mesure calcule et retourne des valeurs en additionnant les montants des ventes pour chacun des autres champs que nous incluons, par exemple, téléphones cellulaires aux États-Unis.

Vous pensez peut-être : « Cette mesure ne fait-elle pas la même chose que si j’allais simplement ajouter le champ SalesAmount à mon rapport ? » Eh bien, oui. Mais il existe une bonne raison de créer notre propre mesure qui additionne les valeurs du champ SalesAmount : nous pouvons l’utiliser comme argument dans d’autres formules. Cette solution peut sembler un peu déroutante maintenant, mais à mesure que vos compétences de formule DAX augmentent, connaître cette mesure rendra vos formules et votre modèle plus efficaces. En fait, vous verrez la mesure Total Sales s’afficher sous la forme d’un argument dans d’autres formules ultérieurement.

Passons en détail à cette formule. En particulier, nous avons introduit une fonction , SUM. Les fonctions sont des formules pré-écrites qui facilitent les calculs complexes et les manipulations avec des nombres, des dates, des heures, du texte, etc. Vous en apprendrez plus sur les fonctions ultérieurement.

Vous voyez également que le nom de colonne [SalesAmount] a été précédé de la table Sales dans laquelle appartient la colonne. Ce nom est connu sous le terme de nom de colonne entièrement qualifié, car il inclut le nom de colonne précédé du nom de table. Les colonnes référencées dans la même table ne nécessitent pas que le nom de la table soit inclus dans la formule, ce qui peut rendre les formules longues qui font référence à de nombreuses colonnes plus courtes et plus faciles à lire. Toutefois, il est conseillé d’inclure le nom de la table dans les formules de mesure, même quand il s’agit d’une même table.

Remarque

Si un nom de table contient des espaces, des mots clés réservés ou des caractères non autorisés, vous devez placer le nom de la table entre guillemets simples. Vous devez également placer les noms de table entre guillemets si le nom contient des caractères en dehors de la plage de caractères alphanumérique ANSI, que vos paramètres régionaux prennent en charge le jeu de caractères ou non.

Il est important que vos formules aient la syntaxe correcte. Dans la plupart des cas, si la syntaxe n’est pas correcte, une erreur de syntaxe est renvoyée. Dans d’autres cas, la syntaxe peut être correcte, mais les valeurs retournées peuvent ne pas être ce que vous attendez. L’éditeur DAX dans Power BI Desktop inclut une fonction de suggestions, utilisée pour créer des formules syntaxiquement correctes en vous aidant à sélectionner les éléments appropriés.

Créons un exemple de formule. Cette tâche vous aidera à mieux comprendre la syntaxe de formule et la façon dont les suggestions de la barre de formule peuvent vous aider.

Tâche : Créer une formule de mesure

  1. Téléchargez et ouvrez le fichier Contoso Sales Sample Power BI Desktop.

  2. En mode Rapport, dans la liste des champs, cliquez avec le bouton droit sur la table Sales , puis sélectionnez Nouvelle mesure.

  3. Dans la barre de formule, remplacez Measure par l’entrée d’un nouveau nom de mesure, Previous Quarter Sales.

  4. Une fois le signe égal, tapez les premières lettres CAL, puis double-cliquez sur la fonction que vous souhaitez utiliser. Dans cette formule, vous souhaitez utiliser la fonction CALCULATE .

    Vous allez utiliser la fonction CALCULATE pour filtrer les montants que nous voulons additionner par un argument que nous transmettons à la fonction CALCULATE. Ce type de fonction porte le nom d’imbrication de fonctions. La fonction CALCULATE a au moins deux arguments. La première est l’expression à évaluer, et la seconde est un filtre.

  5. Après la parenthèse ouvrante ( pour la fonction CALCULATE , tapez SUM suivi d’une autre parenthèse ouvrante (.

    Ensuite, nous allons passer un argument à la fonction SUM.

  6. Commencez à taper Sal, puis sélectionnez Sales[SalesAmount], suivi d’une parenthèse fermante ).

    Cette étape crée le premier argument d’expression pour notre fonction CALCULATE.

  7. Tapez une virgule (,) suivie d’un espace pour spécifier le premier filtre, puis tapez PREVIOUSQUARTER.

    La fonction temporelle PREVIOUSQUARTER sert à filtrer les résultats de SUM sur la base du trimestre précédent.

  8. Après la parenthèse ouvrante ( pour la fonction PREVIOUSQUARTER, tapez Calendar[DateKey].

    La fonction PREVIOUSQUARTER a un argument, une colonne contenant une plage contiguë de dates. Dans notre cas, il s’agit de la colonne DateKey dans la table Calendrier.

  9. Fermez les deux arguments passés à la fonction PREVIOUSQUARTER et à la fonction CALCULATE en tapant deux parenthèses fermante )).

    Votre formule doit maintenant ressembler à ceci :

    Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))

  10. Sélectionnez l’icône coche dans la barre de formule ou appuyez sur Entrée pour valider la formule et l’ajouter au tableau des ventes.

Vous avez réussi. Vous venez de créer une mesure complexe à l’aide de DAX. Cette formule calcule le total des ventes pour le trimestre précédent, en fonction des filtres appliqués dans un rapport. Par exemple, nous pouvons placer SalesAmount et notre nouvelle mesure Ventes du trimestre précédent de la table Sales dans un histogramme cluster. Ensuite, dans la table Calendrier, ajoutez Année en tant que segment et sélectionnez 2011. Ensuite, ajoutez QuarterOfYear en tant qu’autre segment et sélectionnez 4, et nous obtenons un graphique comme suit :

Graphique des ventes et du montant des ventes du trimestre précédent

Gardez à l’esprit que l’exemple de modèle contient uniquement une petite quantité de données de ventes comprises entre 1/1/1/2011 et 19/2013. Si vous sélectionnez un an ou un trimestre où SalesAmount ne peut pas être additionné, ou si votre nouvelle mesure ne peut pas calculer les données de ventes pour le trimestre actuel ou précédent, aucune donnée pour cette période n’est affichée. Par exemple, si vous sélectionnez 2011 pour l’année et 1 pour QuarterOfYear, aucune donnée n’est affichée pour les ventes du trimestre précédent, car il n’y a pas de données pour le quatrième trimestre de 2010.

Vous avez été introduit à plusieurs aspects importants des formules DAX :

  • Cette formule comprenait deux fonctions. PREVIOUSQUARTER, une fonction d’intelligence temporelle, est imbriquée en tant qu’argument passé à CALCULATE, une fonction de filtre.

    Les formules DAX peuvent contenir jusqu’à 64 fonctions imbriquées. Il est peu probable qu’une formule contienne tant de fonctions imbriquées. En fait, une telle formule serait difficile à créer et déboguer, et elle ne serait probablement pas rapide non plus.

  • Dans cette formule, vous avez également utilisé des filtres. Les filtres réduisent ce qui sera calculé. Dans ce cas, vous avez sélectionné un filtre comme argument, qui est en fait le résultat d’une autre fonction. Vous en apprendrez plus sur les filtres ultérieurement.

  • Vous avez utilisé la fonction CALCULATE. Cette fonction est l’une des fonctions les plus puissantes dans DAX. Lorsque vous créez des modèles et créez des formules plus complexes, vous utiliserez probablement cette fonction plusieurs fois. Bien que d’autres discussions sur la fonction CALCULATE ne soient pas dans l’étendue de cet article, à mesure que votre connaissance de DAX augmente, portez une attention particulière à celui-ci.

Questionnaire rapide sur la syntaxe

  1. Que fait ce bouton dans la barre de formule ?

    Sélection du bouton

  2. Qu'est-ce qui entoure toujours un nom de colonne dans une formule DAX ?

Les réponses sont fournies à la fin de cet article.

Fonctions

Les fonctions sont des formules prédéfinies qui effectuent des calculs à l’aide de valeurs spécifiques, appelées arguments, dans un ordre ou une structure particulier. Les arguments peuvent être d’autres fonctions, une autre formule, une expression, des références de colonne, des nombres, du texte, des valeurs logiques telles que TRUE ou FALSE ou des constantes.

DAX inclut les catégories de fonctions suivantes : Date et Heure, Time Intelligence, Information, Logical, Math, Statistical, Text, Parent/Child et Autres fonctions. Si vous êtes familiarisé avec les fonctions dans les formules Excel, la plupart des fonctions dans DAX s’affichent comme vous ; Toutefois, les fonctions DAX sont uniques de la manière suivante :

  • Une fonction DAX fait toujours référence à une colonne complète ou à une table. Si vous souhaitez utiliser uniquement des valeurs particulières d’une table ou d’une colonne, vous pouvez ajouter des filtres à la formule.

  • Si vous devez personnaliser les calculs sur une base ligne par ligne, DAX fournit des fonctions qui vous permettent d’utiliser la valeur de ligne actuelle ou une valeur associée comme type d’argument pour effectuer des calculs en fonction du contexte. Vous en apprendrez plus sur le contexte ultérieurement.

  • DAX inclut de nombreuses fonctions qui retournent une table plutôt qu’une valeur. La table n’est pas affichée, mais elle est utilisée pour fournir une entrée à d’autres fonctions. Par exemple, vous pouvez récupérer une table, puis compter les valeurs distinctes dans celle-ci, ou calculer des sommes dynamiques entre des tables ou des colonnes filtrées.

  • DAX inclut différentes fonctions d’intelligence temporelle. Ces fonctions vous permettent de définir ou de sélectionner des plages de dates et d’effectuer des calculs dynamiques en fonction de ces plages. Par exemple, vous pouvez comparer des sommes sur plusieurs périodes parallèles.

  • Excel possède une fonction populaire, RECHERCHEV. Les fonctions DAX n’acceptent pas une cellule ou une plage de cellules en tant que référence comme RECHERCHEV dans Excel. Les fonctions DAX prennent une colonne ou une table comme référence. N’oubliez pas que dans Power BI Desktop, vous utilisez un modèle de données relationnelle. La recherche de valeurs dans une autre table est facile et, dans la plupart des cas, vous n’avez pas besoin de créer de formules du tout.

    Comme vous pouvez le voir, les fonctions dans DAX peuvent vous aider à créer des formules puissantes. Nous n’avons touché qu’aux principes de base des fonctions. À mesure que vos compétences DAX augmentent, vous allez créer des formules à l’aide de nombreuses fonctions différentes. L’un des meilleurs endroits pour en savoir plus sur chacune des fonctions DAX se trouve dans la référence des fonctions DAX.

Questionnaire rapide sur les fonctions

  1. Qu’est-ce qu’une fonction fait toujours référence ?
  2. Une formule peut-elle contenir plusieurs fonctions ?
  3. Quelle catégorie de fonctions utiliseriez-vous pour concaténer deux chaînes de texte en une seule chaîne ?

Les réponses sont fournies à la fin de cet article.

Contexte

Le contexte est l’un des concepts les plus importants à comprendre dans DAX. Il existe deux types de contexte dans DAX : contexte de ligne et contexte de filtre. Examinons tout d’abord le contexte de ligne.

Contexte de ligne

La façon la plus simple d’envisager le contexte de ligne est de penser à la ligne actuelle. Il s’applique chaque fois qu’une formule a une fonction qui applique des filtres pour identifier une ligne unique dans une table. La fonction applique intrinsèquement un contexte de ligne pour chaque ligne de la table sur laquelle elle filtre. Ce type de contexte de ligne s’applique le plus souvent aux mesures.

Contexte de filtre

Le contexte de filtre est un peu plus difficile à comprendre que le contexte de ligne. Vous pouvez facilement considérer le contexte de filtre comme : un ou plusieurs filtres appliqués dans un calcul qui détermine un résultat ou une valeur.

Le contexte de filtre n’existe pas à la place du contexte de ligne ; s’applique plutôt en plus du contexte de ligne. Par exemple, pour affiner encore les valeurs à inclure dans un calcul, vous pouvez appliquer un contexte de filtre, qui non seulement spécifiera le contexte de ligne, mais spécifiera également une valeur particulière (filtre) dans ce contexte de ligne.

Le contexte de filtre est facilement visible dans vos rapports. Par exemple, lorsque vous ajoutez TotalCost à une visualisation, puis ajoutez Year et Region, vous définissez un contexte de filtre qui sélectionne un sous-ensemble de données en fonction d’une année et d’une région donnée.

Pourquoi le contexte de filtre est-il si important pour DAX ? Vous avez vu que le contexte de filtre peut être appliqué en ajoutant des champs à une visualisation. Le contexte de filtre peut également être appliqué dans une formule DAX en définissant un filtre avec des fonctions comme ALL, RELATED, FILTER, CALCULATE, par des relations, ainsi que par d’autres mesures et colonnes. Par exemple, examinons la formule suivante dans une mesure nommée Store Sales :

Mesure des ventes du magasin

Pour mieux comprendre cette formule, nous pouvons la décomposer, un peu comme pour les autres formules.

Cette formule comprend les éléments de syntaxe suivants :

A. Nom de la mesure, Store Sales.

B. L’opérateur signe égal (=), qui indique le début de la formule.

C. La fonction CALCULATE, qui évalue une expression en tant qu’argument dans un contexte modifié par les filtres spécifiés.

D. Parenthèses (), qui entourent une expression contenant un ou plusieurs arguments.

E. Mesure [Total Sales] dans la même table qu’une expression. La mesure Total Sales a la formule : =SUM(Sales[SalesAmount]).

F. Virgule (,), qui sépare le premier argument d’expression de l’argument de filtre.

G. La colonne complètement référencée, Channel[ChannelName]. Il s’agit du contexte de ligne. Chaque ligne de cette colonne spécifie un canal, tel que Store ou Online.

H. Valeur particulière, Store, en tant que filtre. C’est notre contexte de filtre.

Cette formule garantit que seules les valeurs de ventes définies par la mesure Total Sales sont calculées uniquement pour les lignes de la colonne Channel[ChannelName] avec la valeur Store utilisée comme filtre.

Comme vous pouvez l’imaginer, être capable de définir un contexte de filtre dans une formule offre des capacités immenses et puissantes. La possibilité de référencer uniquement une valeur particulière dans une table associée n’est qu’un exemple parmi tant d’autres. Ne vous inquiétez pas si vous ne comprenez pas complètement le contexte immédiatement. Lorsque vous créez vos propres formules, vous comprendrez mieux le contexte et pourquoi il est si important dans DAX.

Contexte de QuickQuiz

  1. Quels sont les deux types de contexte ?
  2. Qu’est-ce que le contexte de filtre ?
  3. Qu’est-ce qu’un contexte de ligne ?

Les réponses sont fournies à la fin de cet article.

Résumé

Maintenant que vous avez une compréhension de base des concepts les plus importants dans DAX, vous pouvez commencer à créer vous-même des formules DAX pour vos mesures. DAX peut en effet être un peu difficile à apprendre, mais de nombreuses ressources sont à votre disposition. Après avoir lu cet article et expérimenté quelques-unes de vos propres formules, vous pouvez en savoir plus sur d’autres concepts et formules DAX qui peuvent vous aider à résoudre vos propres problèmes métier. Il existe de nombreuses ressources DAX à votre disposition ; la plus importante est la référence DAX (Data Analysis Expressions).

Étant donné que DAX existe depuis de nombreuses années dans d'autres outils Microsoft BI tels que Power Pivot et les modèles tabulaires d'Analysis Services, il existe de nombreuses sources d'informations précieuses disponibles. Vous trouverez plus d’informations dans les livres, les livre blancs et les blogs de Microsoft et des professionnels de la décision de premier plan. Le Centre de ressources DAX est également un endroit idéal pour commencer.

Réponses QuickQuiz

Syntaxe:

  1. Valide et entre la mesure dans le modèle.
  2. Des crochets [].

Fonctions:

  1. Une table et une colonne.
  2. Oui. Une formule peut contenir jusqu’à 64 fonctions imbriquées.
  3. Fonctions de texte.

Contexte :

  1. Contexte de ligne et contexte de filtre.
  2. Un ou plusieurs filtres dans un calcul qui détermine une valeur unique.
  3. La ligne actuelle.