Principes fondamentaux de DAX dans Power BI DesktopDAX basics in Power BI Desktop

Cet article s’adresse aux utilisateurs qui débutent avec Power BI Desktop.This article is for users new to Power BI Desktop. Il est destiné à vous fournir une introduction rapide et simple de la façon dont vous pouvez utiliser le langage DAX (Data Analysis Expressions) pour résoudre un certain nombre de problèmes d’analyse de données et de calcul de base.It’s meant to give you a quick and easy introduction on how you can use Data Analysis Expressions (DAX) to solve a number of basic calculation and data analysis problems. Nous aborderons des informations conceptuelles, une série de tâches que vous pourrez effectuer et quelques questionnaires pour tester ce que vous aurez appris.We’ll go over some conceptual information, a series of tasks you can complete, and a few quizzes to test what you’ve learned. À la fin de cet article, vous aurez acquis une bonne compréhension des concepts fondamentaux du langage DAX.After completing this article, you should have a good understanding of the most important fundamental concepts in DAX.

Qu’est-ce que DAX ?What is DAX?

DAX est une collection de fonctions, d’opérateurs et de constantes qui peuvent être utilisés dans une formule, ou une expression, pour calculer et retourner une ou plusieurs valeurs.DAX is a collection of functions, operators, and constants that can be used in a formula, or expression, to calculate and return one or more values. En termes simples, DAX vous aide à créer des informations à partir des données déjà présentes dans votre modèle.Stated more simply, DAX helps you create new information from data already in your model.

Pourquoi DAX est-il si important ?Why is DAX so important?

Il est relativement facile de créer un nouveau fichier Power BI Desktop et d’y importer des données.It’s quite easy to create a new Power BI Desktop file and import some data into it. Vous pouvez même créer des rapports montrant des analyses importantes sans utiliser aucune formule DAX.You can even create reports that show valuable insights without using any DAX formulas at all. En revanche, comment procéder si vous avez besoin d’analyser un pourcentage de croissance sur plusieurs catégories de produits et pour différentes périodes ?But, what if you need to analyze growth percentage across product categories and for different date ranges? Ou si vous devez calculer la croissance année après année en comparaison avec les tendances du marché ?Or, you need calculate year-over-year growth compared to market trends? Les formules DAX fournissent cette fonctionnalité, ainsi que de nombreuses autres.DAX formulas provide this capability and many other important capabilities as well. Apprendre à créer des formules DAX efficaces vous permettra de tirer le meilleur parti possible de vos données.Learning how to create effective DAX formulas will help you get the most out of your data. L’obtention des informations dont vous avez besoin vous permet d’envisager de résoudre des problèmes concrets dans votre entreprise, qui affectent vos résultats.When you get the information you need, you can begin to solve real business problems that affect your bottom line. C’est là toute la puissance de Power BI et DAX vous aide à l’exploiter.This is the power in Power BI, and DAX will help you get there.

Conditions préalablesPrerequisites

Vous connaissez peut-être déjà bien la création de formules dans Microsoft Excel.You might already be familiar with creating formulas in Microsoft Excel. Ces connaissances vous aideront à mieux comprendre DAX. Toutefois, même si vous n’avez aucune expérience des formules Excel, les concepts décrits ici vous permettront de créer des formules DAX et de résoudre des problèmes décisionnels concrets immédiatement.That knowledge will be helpful in understanding DAX, but even if you have no experience with Excel formulas, the concepts described here will help you get started creating DAX formulas and solving real-world BI problems right away.

Nous allons tâcher de comprendre les formules DAX dans le cadre des calculs, et plus spécifiquement, dans les mesures et les colonnes calculées.We’re going to focus on understanding DAX formulas used in calculations, more specifically, in measures and calculated columns. Vous devez déjà bien connaître Power BI Desktop, l’importation de données, l’ajout de champs dans un rapport, ainsi que les concepts fondamentaux des mesures et des colonnes calculées.You should already be familiar with Power BI Desktop, importing data, adding fields to a report, and you should also be familiar with fundamental concepts of Measures and Calculated columns.

Exemple de classeurExample Workbook

La meilleure façon d’apprendre le langage DAX consiste à créer des formules de base, à les utiliser avec des données réelles et à examiner les résultats obtenus.The best way to learn DAX is to create some basic formulas, use it with some actual data, and see the results for yourself. Les exemples et les tâches mentionnés dans cet article utilisent le fichier Contoso Sales Sample for Power BI Desktop Preview.The examples and tasks here use the Contoso Sales Sample for Power BI Desktop Preview file. Il s’agit du même fichier d’exemple que celui utilisé dans l’article Didacticiel : Créer vos propres mesures dans Power BI Desktop.This is the same sample file used in the Tutorial: Create your own measures in Power BI Desktop article. Vous pouvez le télécharger ici.You can download it here.

Au travail !Let's begin!

Nous allons bâtir notre compréhension de DAX autour de trois concepts fondamentaux : la syntaxe , les fonctions et le contexte .We will frame our understanding of DAX around three fundamental concepts: Syntax, Functions, and Context. Bien entendu, il existe d’autres concepts importants propres à DAX, mais la compréhension de ces trois concepts fournit un socle optimal sur lequel vous pourrez développer vos compétences DAX.Of course, there are other important concepts in DAX, but understanding these three concepts will provide the best foundation on which to build your DAX skills.

SyntaxeSyntax

Avant de créer vos propres formules, examinez la syntaxe des formules DAX.Before you create your own formulas, let’s take a look at DAX formula syntax. La syntaxe inclut les différents éléments qui constituent une formule, ou plus simplement, la manière dont la formule est écrite.Syntax includes the various elements that make up a formula, or more simply, how the formula is written. Par exemple, examinons une formule DAX simple.For example, let’s look at a simple DAX formula for a measure.

Cette formule inclut les éléments syntaxiques suivants :This formula includes the following syntax elements:

A.A. Le nom de la mesure Total Sales.The measure name Total Sales.

B.B. L’opérateur signe égal (=) indique le début de la formule.The equals sign operator (=) indicates the beginning of the formula. Après le calcul, un résultat est retourné.When calculated, it will return a result.

C.C. La fonction DAX SUM additionne tous les nombres figurant dans la colonne Sales[SalesAmount].The DAX function SUM adds up all of the numbers in the Sales[SalesAmount] column. Vous en apprendrez davantage sur les fonctions ultérieurement.You’ll learn more about functions later.

D.D. Des parenthèses () entourent une expression contenant un ou plusieurs arguments.Parenthesis () surround an expression containing one or more arguments. Toutes les fonctions nécessitent au moins un argument.All functions require at least one argument. Un argument passe une valeur à une fonction.An argument passes a value to a function.

E.E. La table référencée Sales.The referenced table Sales.

F.F. La colonne référencée [SalesAmount] dans la table Sales.The referenced column [SalesAmount] in the Sales table. Avec cet argument, la fonction SUM sait sur quelle colonne agréger une somme.With this argument, the SUM function knows on which column to aggregate a SUM.

Pour mieux comprendre une formule DAX, il est souvent utile de séparer chaque élément en l’exprimant dans la langue qui vous est familière.When trying to understand a DAX formula, it is often helpful to break down each of the elements into a language you think and speak every day. Par exemple, vous pouvez lire cette formule :For example, you can read this formula as:

Pour la mesure nommée Total Sales, calculer (=) la somme (SUM) des valeurs de la colonne [SalesAmount] dans la table Sales.For the measure named Total Sales, calculate (=) the SUM of values in the [SalesAmount ] column in the Sales table.

Quand elle est ajoutée dans un rapport, cette mesure calcule et retourne des valeurs en effectuant la somme des montants des ventes pour chacun des autres champs que vous incluez, tels que les téléphones mobiles aux États-Unis.When added to a report, this measure calculates and returns values by summing up sales amounts for each of the other fields we include, for example, Cell Phones in the USA.

Vous vous demandez peut-être si cette mesure revient au même que d’ajouter simplement le champ SalesAmount dans votre rapport.You might be thinking ‘Isn’t this measure doing the same thing as if I were to just add the SalesAmount field to my report?’ Vous avez raison.Well, yes. Toutefois, il y a une bonne raison de créer votre propre mesure qui calcule la somme des valeurs du champ SalesAmount : vous pouvez l’utiliser en tant qu’argument dans d’autres formules.But, there’s a good reason to create our own measure that sums up values from the SalesAmount field: We can use it as an argument in other formulas. Cela peut sembler un peu confus à ce stade, mais quand vos compétences en matière de formules DAX se seront développées, savoir cela améliorera l’efficacité de vos formules et de votre modèle.This may seem a little confusing now, but as your DAX formula skills grow, knowing this will make your formulas and your model more efficient. En fait, vous verrez la mesure Total Sales utilisée en tant qu’argument dans d’autres formules par la suite.In-fact, you’ll see the Total Sales measure showing up as an argument in other formulas later on.

Attardons-nous sur quelques éléments concernant cette formule.Let’s go over a few more things about this formula. En particulier, nous avons présenté une fonction, SUM.In particular, we introduced a function, SUM. Les fonctions sont des formules pré-écrites qui facilitent des calculs et des manipulations complexes avec des nombres, des dates, des heures, du texte, etc.Functions are pre-written formulas that make it easier to do complex calculations and manipulations with numbers, dates, time, text, and more. Vous en apprendrez davantage sur les fonctions ultérieurement.You will learn more about functions later.

Vous constatez également que la colonne [SalesAmount] est précédée par la table Sales à laquelle la colonne appartient.You also see the column [SalesAmount] was preceded by the table Sales in which the column belongs. On parle de nom de colonne qualifié complet du fait qu’il inclut le nom de la colonne précédé par le nom de la table.This is known as a fully qualified column name in that it includes the column name preceded by the table name. Pour des colonnes référencées dans une même table, le nom de la table n’est pas requis dans la formule.Columns referenced in the same table do not require the table name be included in the formula. Cela permet de raccourcir de longue formules référençant de nombreuses colonnes et d’améliorer leur lisibilité.This can make long formulas that reference many columns shorter and easier to read. 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.However, it's good practice to include the table name in your measure formulas, even when in the same table.

Note

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.If a table name contains spaces, reserved keywords, or disallowed characters, you’ll need to enclose the table name in single quotation marks. Vous devez également placer un nom de table entre guillemets si le nom contient des caractères en dehors de la plage de caractères alphanumériques ANSI, que vos paramètres régionaux prennent en charge ou non le jeu de caractères.You’ll also need to enclose table names in quotation marks if the name contains any characters outside the ANSI alphanumeric character range, regardless of whether your locale supports the character set or not.

Il est important que vos formules aient une syntaxe correcte.It’s important your formulas have the correct syntax. Dans la plupart des cas, si la syntaxe n’est pas correcte, une erreur de syntaxe est renvoyée.In most cases, if the syntax is not correct, a syntax error will be returned. Dans d’autres cas, la syntaxe peut être correcte, mais les valeurs retournées peuvent ne pas être telles que prévues.In other cases, the syntax may be correct, but the values returned might not be what you are expecting. L’éditeur DAX dans Power BI Desktop inclut des suggestions : une fonctionnalité qui vous permet de créer des formules syntaxiquement correctes en vous aidant à sélectionner les éléments appropriés.The DAX editor in Power BI Desktop includes suggestions; a feature used to create syntactically correct formulas by helping you select the correct elements.

Nous allons créer une formule simple.Let’s create a simple formula. Cette tâche vous aidera à mieux comprendre la syntaxe des formules et la manière dont la fonctionnalité de suggestions dans la barre de formule peut vous aider.This task will help you further understand formula syntax and how the suggestions feature in the formula bar can help you.

Tâche : créer une formule de mesureTask: Create a measure formula

Pour effectuer cette tâche, vous devez ouvrir le fichier Contoso Sales Sample Power BI Desktop.To complete this task, you’ll need to open the Contoso Sales Sample Power BI Desktop file.

  1. Dans la vue Rapport, cliquez avec le bouton droit sur la table Sales figurant dans la liste des champs, puis cliquez sur Nouvelle mesure.In Report view, in the field list, right-click on the Sales table, and then click New Measure.

  2. Dans la barre de formule, remplacez Mesure en tapant un nouveau nom de mesure, Previous Quarter Sales.In the formula bar, replace Measure by typing a new measure name, Previous Quarter Sales.

  3. Après le signe égal, tapez SUM suivi d’une parenthèse ouvrante.After the equals sign, type SUM followed by an opening parenthesis.

    Au lieu de taper immédiatement un nom de colonne à totaliser, vous allez entrer une autre fonction, pour filtrer les données à cumuler.Rather than type a column name to sum up right away, we’re going to enter another function, to filter the data we want to sum up.

  4. Entre les parenthèses, tapez CALCULATE, suivi d’une parenthèse ouvrante.Between the parentheses, type CALCULATE, followed by an opening parenthesis.

    Vous utilisez la fonction CALCULATE pour filtrer les montants que vous souhaitez additionner par un argument que vous passez à la fonction CALCULATE.You’ll use the CALCULATE function to filter the amounts we want to sum by an argument we pass to the CALCULATE function. Ceci porte le nom d’imbrication de fonctions.This is what’s referred to as nesting functions. La fonction CALCULATE possède au moins deux arguments.The CALCULATE function has at least two arguments. Le premier est l’expression à évaluer et le deuxième est un filtre.The first is the expression to be evaluated, and second, a filter.

  5. Entre les parenthèses () de la fonction CALCULATE, tapez Sales[SalesAmount].Between the parenthesis () for the CALCULATE function, type Sales[SalesAmount]. Il s’agit du premier argument de l’expression de votre fonction CALCULATE.This is the first expression argument for our CALCULATE function.

  6. Tapez une virgule (,) pour spécifier le premier filtre, puis tapez PREVIOUSQUARTER, suivi d’une parenthèse ouvrante.Type a comma (,) to specify the first filter, then type PREVIOUSQUARTER followed by an opening parenthesis..

    La fonction temporelle PREVIOUSQUARTER sert à filtrer les résultats de SUM sur la base du trimestre précédent.You’ll use the PREVIOUSQUARTER time intelligence function to filter our SUM results by the previous quarter.

  7. Entre les parenthèses () de la fonction PREVIOUSQUARTER, tapez Calendar[DateKey].Between the parenthesis () for the PREVIOUSQUARTER function, type Calendar[DateKey].

    La fonction PREVIOUSQUARTER possède un seul argument, une colonne contenant une plage de dates contiguë.The PREVIOUSQUARTER function has one argument, a column containing a contiguous range of dates. >

  8. Vérifiez que les deux arguments transmis aux fonctions PREVIOUSQUARTER et CALCULATE sont fermés par deux parenthèses fermantes )).Make sure both the arguments being passed to the PREVIOUSQUARTER function and the CALCULATE function are closed by two closing parentheses )).

    La formule doit maintenant ressembler à ceci :Your formula should now look like this:

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

  9. Cliquez sur la coche dans la barre de formule, ou appuyez sur Entrée pour valider la formule et l’ajouter au modèle.Click the checkmark in the formula bar or press Enter to validate the formula and add it to the model.

Vous avez réussi !You did it! Vous venez de créer une mesure à l’aide de DAX et pas l’une des plus simples, qui plus est.You just created a measure using DAX, and not an easy one at that. Cette formule calcule le total des ventes du trimestre précédent en fonction des filtres appliqués dans un rapport.What this formula will do is calculate the total sales for the previous quarter, depending on the filters applied in a report. Par exemple, si vous placez SalesAmount et votre nouvelle mesure Previous Quarter Sales dans un graphique, puis ajoutez Year et QuarterOfYear comme segments, vous obtenez le résultat suivant :For example, if we put SalesAmount and our new Previous Quarter Sales measure in a chart, and then added Year and QuarterOfYear as Slicers, we’d get something like this:

Plusieurs aspects importants des formules DAX viennent de vous être présentées.You were just introduced to several important aspects of DAX formulas. Tout d’abord, cette formule incluait deux fonctions.First, this formula included two functions. Notez que PREVIOUSQUARTER, une fonction temporelle, est imbriquée en tant qu’argument passé à CALCULATE, une fonction de filtre.Notice PREVIOUSQUARTER, a time intelligence, function is nested as an argument passed to CALCULATE, a filter function. Les formules DAX peuvent contenir jusqu’à 64 fonctions imbriquées.DAX formulas can contain up to 64 nested functions. Il est peu probable qu’une formule contienne jamais autant de fonctions imbriquées.It’s unlikely a formula would ever contain so many nested functions. En fait, une telle formule serait très difficile à créer et déboguer, et ne serait probablement pas très rapide non plus.In fact, such a formula would be very difficult to create and debug, and it probably wouldn’t be very fast either.

Dans cette formule, vous avez également utilisé des filtres.In this formula, you also used filters. Les filtres limitent ce qui est calculé.Filters narrow down what will be calculated. Dans le cas présent, vous avez sélectionné un filtre en tant qu’argument, qui est en fait le résultat d’une autre fonction.In this case, you selected one filter as an argument, which is actually the result of another function. Vous en apprendrez davantage sur les filtres ultérieurement.You will learn more about filters later.

Enfin, vous avez utilisé la fonction CALCULATE.Finally, you used the CALCULATE function. Il s’agit de l’une des fonctions les plus puissantes de DAX.This is one of the most powerful functions in DAX. Quand vous créerez des modèles et des formules plus complexes, vous utiliserez probablement souvent cette fonction.As you author models and create more complex formulas, you will likely use this function many times. L’étude de la fonction CALCULATE dépasse le cadre de cet article, mais au fur et à mesure que vos connaissances de DAX grandiront, portez une attention particulière à cette fonction.Discussing the CALCULATE function is outside the scope of this article, but as your knowledge of DAX grows, pay special attention to this one.

Questionnaire rapide sur la syntaxeSyntax QuickQuiz

  1. À quoi sert ce bouton figurant sur la barre de formule ?What does this button on the formula bar do?

  2. Qu’est-ce qui entoure toujours un nom de colonne dans une formule DAX ?What always surrounds a column name in a DAX formula?

Les réponses sont fournies à la fin de cet article.Answers are provided at the end of this article.

FonctionsFunctions

Les fonctions sont des formules prédéfinies qui effectuent des calculs en utilisant des valeurs spécifiques, appelées arguments, dans un ordre particulier ou dans une structure particulière.Functions are predefined formulas that perform calculations by using specific values, called arguments, in a particular order or structure. Les arguments peuvent être des fonctions, une formule, une expression, des références de colonne, des nombres, du texte, des valeurs logiques telles que TRUE ou FALSE, ou des constantes.Arguments can be other functions, another formula, expression, column references, numbers, text, logical values such as TRUE or FALSE, or constants.

DAX inclut des fonctions de diverses catégories, telles que des fonctions de date et heure, Time Intelligence, d’informations, logiques, mathématiques, statistiques, texte, parent/enfant et d’autres fonctions.DAX includes the following categories of functions: Date and Time, Time Intelligence,Information, Logical,Mathematical, Statistical, Text, Parent/Child and Other functions. Si vous connaissez bien les fonctions dans les formules Excel, un grande nombre des fonctions DAX vous paraîtront similaires. Toutefois, les fonctions DAX sont uniques du fait des particularités suivantes :If you’re familiar with functions in Excel formulas, many of the functions in DAX will appear similar to you; however, DAX functions are unique in the following ways:

  • Une fonction DAX fait toujours référence à une colonne ou à une table entière.A DAX function always references a complete column or a table. Si vous souhaitez utiliser uniquement des valeurs particulières d’une table ou d’une colonne, vous pouvez ajouter des filtres à la formule.If you want to use only particular values from a table or column, you can add filters to the formula.
  • Si vous devez personnaliser des calculs ligne par ligne, DAX fournit des fonctions qui vous permettent d’utiliser la valeur de la ligne actuelle ou une valeur associée comme type d’argument, afin d’effectuer des calculs qui varient selon le contexte.If you need to customize calculations on a row-by-row basis, DAX provides functions that let you use the current row value or a related value as a kind of argument, to perform calculations that vary by context. Vous en apprendrez davantage sur le contexte ultérieurement.You will learn more about context later.
  • DAX inclut de nombreuses fonctions qui retournent une table plutôt qu’une valeur.DAX includes many functions that return a table rather than a value. Cette table n’est pas affichée, mais elle est utilisée comme entrée pour d’autres fonctions.The table is not displayed, but is used to provide input to other functions. Par exemple, vous pouvez récupérer une table et compter les valeurs distinctes qu’elle contient, ou calculer des sommes dynamiques sur l’ensemble des tables ou colonnes filtrées.For example, you can retrieve a table and then count the distinct values in it, or calculate dynamic sums across filtered tables or columns.
  • DAX inclut une large variété de fonctions Time Intelligence.DAX includes a variety of time intelligence functions. Ces fonctions vous permettent de définir ou de sélectionner des plages de dates, et d’effectuer des calculs dynamiques basés sur ces plages.These functions let you define or select date ranges, and perform dynamic calculations based on them. Par exemple, vous pouvez comparer des sommes sur des périodes parallèles.For example, you can compare sums across parallel periods.
  • Excel possède une fonction très populaire, RECHERCHEV.Excel has a very popular function, VLOOKUP. Les fonctions DAX n’acceptent pas une cellule ou une plage de cellules en tant que référence comme RECHERCHEV dans Excel.DAX functions don’t take a cell or cell range as a reference like VLOOKUP does in Excel. Les fonctions DAX acceptent une colonne ou une table comme référence.DAX functions take a column or a table as a reference. Gardez à l’esprit, dans Power BI Desktop, que vous utilisez un modèle de données relationnelles.Keep in-mind, in Power BI Desktop, you’re working with a relational data model. La recherche de valeurs dans une autre table est vraiment très simple et, dans la plupart des cas, vous n’avez pas besoin de créer de formule du tout.Looking up values in another table is really quite easy, and in most cases you don’t need to create any formula at all.

    Comme vous pouvez le voir, les fonctions DAX peuvent vous aider à créer des formules très puissantes.As you can see, functions in DAX can help you create very powerful formulas. Nous avons vraiment à peine abordé les principes élémentaires des fonctions.We really only touched on the basics of functions. Au fur et à mesure que vos compétences DAX se développeront, vous créerez des formules en utilisant de nombreuses fonctions différentes.As your DAX skills grow, you'll create formulas using many different functions. La page Informations de référence sur les fonctions DAX est l’une des meilleures ressources pour découvrir chaque fonction DAX en détail.One of the best places to learn details about each of DAX functions is in the DAX Function Reference.

Questionnaire rapide sur les fonctionsFunctions QuickQuiz

  1. À quoi une fonction fait-elle toujours référence ?What does a function always reference?
  2. Une formule peut-elle contenir plusieurs fonctions ?Can a formula contain more than one function?
  3. Quelle catégorie de fonctions utiliseriez-vous pour concaténer deux chaînes de texte en une seule chaîne ?What category of functions would you use to concatenate two text strings into one string?

Les réponses sont fournies à la fin de cet article.Answers are provided at the end of this article.

ContexteContext

Le contexte représente l’un des concepts DAX les plus importants.Context is one of the most important DAX concepts to understand. Il existe deux types de contexte dans DAX, le contexte de ligne et le contexte de filtre.There are two types of context in DAX; row context and filter context. Examinons tout d’abord le contexte de ligne.We’ll first look at row context.

Contexte de ligneRow context

La façon la plus simple de considérer le contexte de ligne est de penser à la ligne actuelle.Row context is most easily thought of as the current row. Ce contexte s’applique chaque fois qu’une formule a une fonction qui applique des filtres pour identifier une ligne unique dans une table.It applies whenever a formula has a function that applies filters to identify a single row in a table. La fonction applique de manière inhérente un contexte de ligne pour chaque ligne de la table qu’elle filtre.The function will inherently apply a row context for each row of the table over which it is filtering. Ce type de contexte de ligne s’applique généralement aux mesures.This type of row context most often applies to measures.

Contexte de filtreFilter context

Le contexte de filtre est un peu plus difficile à comprendre que le contexte de ligne.Filter context is a little more difficult to understand than row context. Vous pouvez aisément 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.You can most easily think of filter context as: One or more filters applied in a calculation that determines a result or value.

Le contexte de filtre ne se substitue pas au contexte de ligne. Il s’applique plutôt en plus du contexte de ligne.Filter context doesn’t exist in-place of row context; rather, it applies in addition to row context. Par exemple, pour limiter encore les valeurs à inclure dans un calcul, vous pouvez appliquer un contexte de filtre qui non seulement spécifie le contexte de ligne, mais spécifie également une valeur particulière (filtre) dans ce contexte de ligne.For example, to further narrow down the values to include in a calculation, you can apply a filter context which not only specifies the row context, but also specifies only a particular value (filter) in that row context.

Le contexte de filtre est facilement visible dans vos rapports.Filter context is easily seen in your reports. Par exemple, quand vous ajoutez TotalCost à une visualisation et ajoutez ensuite Year et Region, vous définissez un contexte de filtre qui sélectionne un sous-ensemble de données basées sur une année et une région données.For example, when you add TotalCost to a visualization, and then add Year and Region, you are defining a filter context that selects a subset of data based on a given year and region.

Pourquoi le contexte de filtre est-il si important dans DAX ?Why is filter context so important to DAX? Bien que le contexte de filtre puisse être appliqué aisément en ajoutant des champs à une visualisation, le contexte de filtre peut également être appliqué dans une formule DAX en définissant un filtre à l’aide de fonctions telles que ALL, RELATED, FILTER et CALCULATE, de relations et d’autres mesures et colonnes.Because while filter context can most easily be applied by adding fields to a visualization, filter context can also be applied in a DAX formula by defining a filter using functions such as ALL, RELATED, FILTER, CALCULATE, by relationships, and by other measures and columns. Par exemple, examinons la formule suivante dans une mesure nommée Store Sales :For example, let’s look at the following formula in a measure named Store Sales:

Pour mieux comprendre cette formule, vous pouvez la décomposer, comme d’autres formules.To better understand this formula, we can break it down, much like with other formulas.

Cette formule inclut les éléments syntaxiques suivants :This formula includes the following syntax elements:

A.A. Le nom de la mesure Store Sales.The measure name Store Sales.

B.B. L’opérateur signe égal (=) indique le début de la formule.The equals sign operator (=) indicates the beginning of the formula.

C.C. La fonction CALCULATE évalue une expression, en tant qu’argument, dans un contexte modifié par les filtres spécifiés.The CALCULATE function evaluates an expression, as an argument, in a context that is modified by the specified filters.

D.D. Des parenthèses () entourent une expression contenant un ou plusieurs arguments.Parenthesis () surround an expression containing one or more arguments.

E.E. Une mesure [Total Sales] dans la même table en tant qu’expression.A measure [Total Sales] in the same table as an expression. La mesure Total Sales possède la formule : =SUM(Sales[SalesAmount]).The Total Sales measure has the formula: =SUM(Sales[SalesAmount]).

F.F. Une virgule (,) sépare le premier argument d’expression de l’argument de filtre.A comma (,) separates the first expression argument from the filter argument.

G.G. La colonne complètement référencée, Channel[ChannelName].The fully qualified referenced column, Channel[ChannelName]. Il s’agit du contexte de ligne.This is our row context. Chaque ligne de cette colonne spécifie un canal : Store, Online, etc.Each row in this column specifies a channel: Store, Online, etc.

H.H. La valeur particulière, Store en tant que filtre.The particular value, Store as a filter. Il s’agit du contexte de filtre.This is our filter context.

Cette formule garantit que seuls les prix de vente définis par la mesure Total Sales (total des ventes) sont calculés uniquement pour les lignes de la colonne Channel[ChannelName] contenant la valeur « Store », en tant que filtre.This formula ensures only sales values defined by the Total Sales measure are calculated only for rows in the Channel[ChannelName] column with the value “Store”, as a filter.

Comme vous pouvez l’imaginer, la possibilité de définir le contexte de filtre dans une formule offre d’immenses opportunités et de puissantes fonctionnalités.As you can imagine, being able to define filter context within a formula has immense and powerful capabilities. Pouvoir référencer uniquement une valeur particulière dans une table liée en est un simple exemple.Being able to reference only a particular value in a related table is just one such example. Ne vous inquiétez pas si vous ne comprenez pas encore complètement le concept de contexte.Don’t worry if you do not completely understand context right away. Au fur et à mesure que vous créerez vos propres formules, vous comprendrez mieux le contexte et pourquoi il est si important dans DAX.As you create your own formulas, you will better understand context and why it’s so important in DAX.

Questionnaire rapide sur le contexteContext QuickQuiz

  1. Quels sont les deux types de contexte ?What are the two types of context?
  2. Qu’est-ce qu’un contexte de filtre ?What is filter context?
  3. Qu’est-ce qu’un contexte de ligne ?What is row context?

Les réponses sont fournies à la fin de cet article.Answers are provided at the end of this article.

RésuméSummary

Maintenant que vous avez acquis une compréhension élémentaire des concepts les plus importants de DAX, vous pouvez commencer à créer par vous-même des formules DAX pour des mesures.Now that you have a basic understanding of the most important concepts in DAX, you can begin creating DAX formulas for measures on your own. Le langage DAX peut en effet être un peu difficile à apprendre, mais de nombreuses ressources sont à votre disposition pour vous aider.DAX can indeed be a little tricky to learn, but there are many resources available to you. Après avoir lu cet article et essayé de créer quelques formules personnalisées, vous pouvez découvrir d’autres concepts et formules DAX qui pourront vous aider à résoudre des problèmes dans votre entreprise.After reading through this article and experimenting with a few of your own formulas, you can learn more about other DAX concepts and formulas that can help you solve your own business problems. De nombreuses ressources DAX sont à votre disposition. La page Informations de référence sur DAX (Data Analysis Expressions) est la plus importante.There are many DAX resources available to you; most important is the Data Analysis Expressions (DAX) Reference.

Le langage DAX est présent déjà depuis plusieurs années dans d’autres outils décisionnels de Microsoft, tels que Power Pivot et les modèles tabulaires Analysis Services, et ces outils fournissent des informations très utiles.DAX has been around for several years in other Microsoft BI tools such as Power Pivot and Analysis Services Tabular models, so there’s a lot of great information out there. Vous trouverez plus d’informations dans des manuels, des livres blancs et des blogs édités par Microsoft et par des professionnels de haut rang dans le secteur décisionnel.You can find more information in books, whitepapers, and blogs from both Microsoft and leading BI professionals. Le site Technet DAX Resource Center Wiki est également un excellent point de départ.The DAX Resource Center Wiki on TechNet is also a great place to start.

Réponses aux questionnaires rapidesQuickQuiz answers

Syntaxe :Syntax:

  1. Valide et entre la mesure dans le modèle.Validates and enters the measure into the model.
  2. Des crochets [].Brackets [].

Fonctions :Functions:

  1. Une table et une colonne.A table and a column.
  2. Oui.Yes. Une formule DAX peuvent contenir jusqu’à 64 fonctions imbriquées.A formula can contain up to 64 nested functions.
  3. Fonctions de texte.Text functions.

Contexte :Context:

  1. Le contexte de ligne et le contexte de filtre.Row context and filter context.
  2. Un ou plusieurs filtres dans un calcul qui déterminent une valeur unique.One or more filters in a calculation that determines a single value.
  3. La ligne actuelle.The current row.