Nozioni di DAX in Power BI DesktopDAX basics in Power BI Desktop

Questo articolo è destinato ai nuovi utenti di Power BI DesktopThis article is for users new to Power BI Desktop. e mira a offrire una rapida e semplice introduzione su come usare Data Analysis Expressions (DAX) per risolvere una serie di problemi basilari di calcolo e analisi dei dati.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. Verranno prese in esame alcune informazioni concettuali, una serie di attività che è possibile completare e alcuni quiz per verificare quanto appreso.We’ll go over some conceptual information, a series of tasks you can complete, and a few quizzes to test what you’ve learned. Dopo aver completato questo articolo, si dovrebbe avere una buona conoscenza dei concetti fondamentali più importanti in DAX.After completing this article, you should have a good understanding of the most important fundamental concepts in DAX.

Che cos'è DAX?What is DAX?

DAX è una raccolta di funzioni, operatori e costanti che possono essere usati in una formula o in un'espressione per calcolare e restituire uno o più valori.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. In parole povere, DAX consente di creare nuove informazioni in base ai dati già presenti nel modello.Stated more simply, DAX helps you create new information from data already in your model.

Perché DAX è così importante?Why is DAX so important?

È piuttosto semplice creare un nuovo file di Power BI Desktop e importarvi alcuni dati.It’s quite easy to create a new Power BI Desktop file and import some data into it. È persino possibile creare report che contengano informazioni preziose senza usare neanche una formula DAX.You can even create reports that show valuable insights without using any DAX formulas at all. Ma cosa accade se è necessario analizzare la percentuale di aumento delle categorie di prodotto e per diversi intervalli di date?But, what if you need to analyze growth percentage across product categories and for different date ranges? Oppure se è necessario calcolare la crescita anno dopo anno rispetto alle tendenze di mercato?Or, you need calculate year-over-year growth compared to market trends? Le formule DAX forniscono questa funzionalità e anche molte altre importanti funzionalità.DAX formulas provide this capability and many other important capabilities as well. Imparare a creare formule DAX efficaci consente di sfruttare al meglio i dati.Learning how to create effective DAX formulas will help you get the most out of your data. Quando si ottengono le informazioni necessarie, è possibile iniziare a risolvere problemi aziendali reali che interessano i profitti.When you get the information you need, you can begin to solve real business problems that affect your bottom line. Questa è la potenza di Power BI e DAX consente di sfruttarla.This is the power in Power BI, and DAX will help you get there.

PrerequisitiPrerequisites

È probabile che l'utente abbia già familiarità con la creazione di formule in Microsoft Excel.You might already be familiar with creating formulas in Microsoft Excel. Tali informazioni saranno utili per capire DAX, ma anche se non si ha alcuna esperienza con le formule di Excel, i concetti illustrati di seguito consentono immediatamente di iniziare a creare formule DAX e risolvere problemi BI reali.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.

L'attenzione sarà rivolta principalmente alla comprensione delle formule DAX usate nei calcoli; in maniera più specifica, nelle misure e nelle colonne calcolate.We’re going to focus on understanding DAX formulas used in calculations, more specifically, in measures and calculated columns. L'utente dovrebbe già conoscere Power BI Desktop, le operazioni di importazione dei dati e di aggiunta di campi a un report e i concetti fondamentali relativi a Misure e Colonne calcolate.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.

Cartella di lavoro di esempioExample Workbook

Il modo migliore per imparare a usare DAX consiste nel creare alcune formule di base, usarle con alcuni dati effettivi e visualizzare i risultati autonomamente.The best way to learn DAX is to create some basic formulas, use it with some actual data, and see the results for yourself. Per gli esempi e le attività qui illustrati verrà usato il file Contoso Sales Sample for Power BI Desktop Preview.The examples and tasks here use the Contoso Sales Sample for Power BI Desktop Preview file. Si tratta dello stesso file di esempio usato nell'articolo Esercitazione: Creare misure personalizzate in Power BI Desktop.This is the same sample file used in the Tutorial: Create your own measures in Power BI Desktop article. È possibile scaricarlo qui.You can download it here.

IntroduzioneLet's begin!

L'approfondimento di DAX è imperniato su tre concetti fondamentali: Sintassi, Funzioni e Contesto.We will frame our understanding of DAX around three fundamental concepts: Syntax, Functions, and Context. Naturalmente, esistono altri concetti importanti in DAX, ma la comprensione di questi tre concetti getterà la base più solida su cui fondare le proprie competenze 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.

SintassiSyntax

Prima di creare formule personalizzate, verrà esaminata la sintassi della formula DAX.Before you create your own formulas, let’s take a look at DAX formula syntax. La sintassi include i diversi elementi che costituiscono una formula o, più semplicemente, il modo in cui la formula viene scritta.Syntax includes the various elements that make up a formula, or more simply, how the formula is written. Ad esempio, verrà ora esaminata una semplice formula DAX per una misura.For example, let’s look at a simple DAX formula for a measure.

Questa formula include gli elementi di sintassi seguenti:This formula includes the following syntax elements:

A.A. Il nome della misura è Total Sales.The measure name Total Sales.

B.B. L'operatore di segno uguale (=) indica l'inizio della formula.The equals sign operator (=) indicates the beginning of the formula. Quando calcolata, restituirà un risultato.When calculated, it will return a result.

C.C. La funzione DAX SUM somma tutti i numeri nella colonna Sales[SalesAmount].The DAX function SUM adds up all of the numbers in the Sales[SalesAmount] column. Verranno fornite altre informazioni sulle funzioni più avanti.You’ll learn more about functions later.

D.D. Le parentesi () racchiudono un'espressione contenente uno o più argomenti.Parenthesis () surround an expression containing one or more arguments. Tutte le funzioni richiedono almeno un argomento.All functions require at least one argument. Un argomento passa un valore a una funzione.An argument passes a value to a function.

E.E. La tabella Sales di riferimento.The referenced table Sales.

F.F. La colonna di riferimento [SalesAmount] nella tabella Sales.The referenced column [SalesAmount] in the Sales table. Con questo argomento, la funzione SUM sa su quale colonna aggregare una SOMMA.With this argument, the SUM function knows on which column to aggregate a SUM.

Quando si prova a comprendere una formula DAX, è spesso utile suddividere ogni elemento in una lingua in cui si pensa e si parla tutti i giorni.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. Ad esempio, è possibile leggere la formula come:For example, you can read this formula as:

Per la misura denominata Total Sales, calcolare (=) la SOMMA dei valori nella colonna [SalesAmount] nella tabella Sales.For the measure named Total Sales, calculate (=) the SUM of values in the [SalesAmount ] column in the Sales table.

Quando viene aggiunta a un report, questa misura calcola e restituisce valori sommando gli importi delle vendite per ogni campo incluso, ad esempio telefoni cellulari negli Stati Uniti.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.

Si potrebbe ritenere che questa misura abbia lo stesso risultato della semplice aggiunta del campo SalesAmount al report,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?’ e in effetti è vero.Well, yes. Ma c'è un buon motivo per creare una misura personalizzata che sommi i valori del campo SalesAmount, e cioè che è possibile usarla come argomento in altre formule.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. Tutto ciò potrebbe sembrare poco chiaro al momento, ma con l'aumentare delle competenze sulle formule DAX questa nozione aumenterà l'efficienza di formule e modelli.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. In effetti, la misura Total Sales verrà visualizzata come argomento in altre formule più avanti.In-fact, you’ll see the Total Sales measure showing up as an argument in other formulas later on.

Verranno ora esaminati alcuni altri aspetti di questa formula.Let’s go over a few more things about this formula. In particolare, è stata introdotta una funzione, SUM.In particular, we introduced a function, SUM. Le funzioni sono formule pre-scritte che semplificano l'esecuzione di calcoli e modifiche complessi con numeri, date, ora, testo e altro.Functions are pre-written formulas that make it easier to do complex calculations and manipulations with numbers, dates, time, text, and more. Verranno fornite altre informazioni sulle funzioni più avanti.You will learn more about functions later.

Come si può osservare, la colonna [SalesAmount] è preceduta dalla tabella Sales a cui appartiene la colonna.You also see the column [SalesAmount] was preceded by the table Sales in which the column belongs. Questo è noto come nome di colonna completo perché include il nome della colonna preceduto dal nome della tabella.This is known as a fully qualified column name in that it includes the column name preceded by the table name. Le colonne a cui si fa riferimento nella stessa tabella non richiedono l'inclusione del nome della tabella nella formula.Columns referenced in the same table do not require the table name be included in the formula. Ciò può rendere le formule lunghe, che fanno riferimento a molte colonne, più brevi e facili da leggere.This can make long formulas that reference many columns shorter and easier to read. Tuttavia, è consigliabile includere il nome della tabella nelle formule della misura, anche quando si trovano nella stessa tabella.However, it's good practice to include the table name in your measure formulas, even when in the same table.

Nota

Se un nome di tabella contiene spazi, parole chiave riservate o caratteri non consentiti, sarà necessario racchiuderlo tra virgolette singole.If a table name contains spaces, reserved keywords, or disallowed characters, you’ll need to enclose the table name in single quotation marks. È anche necessario racchiudere i nomi di tabella tra virgolette se il nome contiene caratteri al di fuori dell'intervallo di caratteri alfanumerici ANSI, indipendentemente dal fatto che le impostazioni locali supportino il set di caratteri.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.

È importante che la sintassi delle formule sia corretta.It’s important your formulas have the correct syntax. Nella maggior parte dei casi, se la sintassi non è corretta, verrà restituito un errore di sintassi.In most cases, if the syntax is not correct, a syntax error will be returned. In altri casi, la sintassi può essere corretta, ma i valori restituiti potrebbero non essere quelli previsti.In other cases, the syntax may be correct, but the values returned might not be what you are expecting. L'editor DAX in Power BI Desktop include suggerimenti, una funzionalità che consente di creare formule sintatticamente corrette grazie alla possibilità di selezionare gli elementi corretti.The DAX editor in Power BI Desktop includes suggestions; a feature used to create syntactically correct formulas by helping you select the correct elements.

A questo punto verrà creata una semplice formula.Let’s create a simple formula. Questa operazione consentirà di comprendere ulteriormente la sintassi della formula e il modo in cui la funzionalità dei suggerimenti nella barra della formula può essere d'aiuto.This task will help you further understand formula syntax and how the suggestions feature in the formula bar can help you.

Attività: Creare una formula della misuraTask: Create a measure formula

Per completare questa attività, è necessario aprire il file Contoso Sales Sample Power BI Desktop.To complete this task, you’ll need to open the Contoso Sales Sample Power BI Desktop file.

  1. Nell'elenco dei campi della visualizzazione Report fare clic con il pulsante destro del mouse sulla tabella Sales e quindi fare clic su Nuova misura.In Report view, in the field list, right-click on the Sales table, and then click New Measure.

  2. Nella barra della formula sostituire Misura digitando un nuovo nome di misura, Previous Quarter Sales.In the formula bar, replace Measure by typing a new measure name, Previous Quarter Sales.

  3. Dopo il segno di uguale digitare SUM seguito da una parentesi aperta.After the equals sign, type SUM followed by an opening parenthesis.

    Invece di digitare un nome di colonna da sommare immediatamente, verrà immessa un'altra funzione, per filtrare i dati che si vogliono sommare.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. Tra le parentesi, digitare CALCULATE, seguito da una parentesi aperta.Between the parentheses, type CALCULATE, followed by an opening parenthesis.

    La funzione CALCULATE verrà usata per filtrare gli importi da sommare in base a un argomento che viene passato alla funzione CALCOLATE.You’ll use the CALCULATE function to filter the amounts we want to sum by an argument we pass to the CALCULATE function. Questo è ciò che viene definita funzione di annidamento.This is what’s referred to as nesting functions. La funzione CALCULATE ha almeno due argomenti.The CALCULATE function has at least two arguments. Il primo è l'espressione da valutare e il secondo è un filtro.The first is the expression to be evaluated, and second, a filter.

  5. Tra parentesi () per la funzione CALCULATE, digitare Sales[SalesAmount].Between the parenthesis () for the CALCULATE function, type Sales[SalesAmount]. Questo è il primo argomento di espressione per la funzione CALCULATE.This is the first expression argument for our CALCULATE function.

  6. Digitare una virgola (,) per specificare il primo filtro, quindi digitare PREVIOUSQUARTER seguito da una parentesi aperta.Type a comma (,) to specify the first filter, then type PREVIOUSQUARTER followed by an opening parenthesis..

    Verrà usata la funzionalità di Business Intelligence per le gerarchie temporali PREVIOUSQUARTER per filtrare i risultati SUM in base al trimestre precedente.You’ll use the PREVIOUSQUARTER time intelligence function to filter our SUM results by the previous quarter.

  7. Tra le parentesi () per la funzione PREVIOUSQUARTER, digitare Calendar[DateKey].Between the parenthesis () for the PREVIOUSQUARTER function, type Calendar[DateKey].

    La funzione PREVIOUSQUARTER ha un solo argomento, una colonna contenente un intervallo contiguo di date.The PREVIOUSQUARTER function has one argument, a column containing a contiguous range of dates. >

  8. Verificare che entrambi gli argomenti passati alla funzione PREVIOUSQUARTER e alla funzione CALCULATE siano chiusi da due parentesi chiuse )).Make sure both the arguments being passed to the PREVIOUSQUARTER function and the CALCULATE function are closed by two closing parentheses )).

    La formula a questo punto dovrebbe essere simile alla seguente: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. Fare clic sul segno di spunta nella barra della formula o premere INVIO per convalidare la formula e aggiungerla al modello.Click the checkmark in the formula bar or press Enter to validate the formula and add it to the model.

L'operazione è stata completata.You did it! È stata creata una misura complessa usando DAX.You just created a measure using DAX, and not an easy one at that. Lo scopo di questa formula è calcolare le vendite totali per il trimestre precedente, in base ai filtri applicati a un report.What this formula will do is calculate the total sales for the previous quarter, depending on the filters applied in a report. Ad esempio, inserendo SalesAmount e la nuova misura Previous Quarter Sales in un grafico e aggiungendo Year e QuarterOfYear come filtri dei dati, si otterrebbe un risultato simile al seguente: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:

Sono stati appena introdotti diversi importanti aspetti delle formule DAX.You were just introduced to several important aspects of DAX formulas. In primo luogo, questa formula includeva due funzioni.First, this formula included two functions. Si noti che PREVIOUSQUARTER, una funzionalità di Business Intelligence per le gerarchie temporali, è annidata come argomento passato a CALCULATE, una funzione di filtro.Notice PREVIOUSQUARTER, a time intelligence, function is nested as an argument passed to CALCULATE, a filter function. Le formule DAX possono contenere fino a 64 funzioni annidate.DAX formulas can contain up to 64 nested functions. È improbabile che una formula contenga così tante funzioni annidate.It’s unlikely a formula would ever contain so many nested functions. In effetti, sarebbe molto difficile creare ed eseguire il debug di tale formula e probabilmente non sarebbe neanche molto veloce.In fact, such a formula would be very difficult to create and debug, and it probably wouldn’t be very fast either.

In questa formula, sono stati usati anche dei filtri.In this formula, you also used filters. I filtri limitano ciò che verrà calcolato.Filters narrow down what will be calculated. In questo caso, è stato selezionato un filtro come argomento, che è effettivamente il risultato di un'altra funzione.In this case, you selected one filter as an argument, which is actually the result of another function. Verranno fornite altre informazioni sui filtri più avanti.You will learn more about filters later.

Infine, è stata usata la funzione CALCULATE.Finally, you used the CALCULATE function. Si tratta di una delle funzioni più potenti di DAX.This is one of the most powerful functions in DAX. Nel creare modelli e formule più complesse, è probabile che si usi questa funzione molte volte.As you author models and create more complex formulas, you will likely use this function many times. La discussione della funzione CALCULATE esula dall'ambito di questo articolo, ma con l'aumentare della conoscenza di DAX occorre prestarvi particolare attenzione.Discussing the CALCULATE function is outside the scope of this article, but as your knowledge of DAX grows, pay special attention to this one.

Quiz veloce sulla sintassiSyntax QuickQuiz

  1. Qual è lo scopo di questo pulsante sulla barra della formula?What does this button on the formula bar do?

  2. Cosa racchiude sempre un nome di colonna in una formula DAX?What always surrounds a column name in a DAX formula?

Le risposte vengono fornite alla fine di questo articolo.Answers are provided at the end of this article.

FunzioniFunctions

Le funzioni sono formule predefinite che eseguono calcoli usando valori specifici, detti argomenti, in una struttura o un ordine particolare.Functions are predefined formulas that perform calculations by using specific values, called arguments, in a particular order or structure. Gli argomenti possono essere altre funzioni, un'altra formula, un'espressione, riferimenti di colonna, numeri, testo, valori logici quali TRUE o FALSE o costanti.Arguments can be other functions, another formula, expression, column references, numbers, text, logical values such as TRUE or FALSE, or constants.

DAX include le seguenti categorie di funzioni: data e ora, Business Intelligence per le gerarchie temporali, informative, logiche, matematiche, statistiche, testuali, padre-figlio e altre.DAX includes the following categories of functions: Date and Time, Time Intelligence,Information, Logical,Mathematical, Statistical, Text, Parent/Child and Other functions. Se si ha familiarità con le funzioni nelle formule di Excel, molte delle funzioni in DAX appariranno simili. Tuttavia, le funzioni DAX sono univoche nei modi seguenti: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:

  • Una funzione DAX fa sempre riferimento a una colonna o una tabella completa.A DAX function always references a complete column or a table. Se si vogliono usare solo particolari valori di una tabella o colonna, è possibile aggiungere filtri alla formula.If you want to use only particular values from a table or column, you can add filters to the formula.
  • Se è necessario personalizzare i calcoli riga per riga, in DAX sono disponibili funzioni che consentono di usare il valore della riga corrente o un valore correlato come un tipo di argomento, per eseguire calcoli che variano in base al contesto.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. Verranno fornite altre informazioni sul contesto più avanti.You will learn more about context later.
  • DAX include numerose funzioni che restituiscono una tabella anziché un valore.DAX includes many functions that return a table rather than a value. La tabella non viene visualizzata, ma viene usata per fornire input ad altre funzioni.The table is not displayed, but is used to provide input to other functions. Ad esempio, è possibile recuperare una tabella e quindi contare i valori distinti in essa contenuti o calcolare somme dinamiche nelle tabelle o colonne filtrate.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 include varie funzionalità di Business Intelligence per le gerarchie temporali.DAX includes a variety of time intelligence functions. Queste funzioni consentono di definire o selezionare intervalli di date ed eseguire calcoli dinamici basati su di essi.These functions let you define or select date ranges, and perform dynamic calculations based on them. Ad esempio, è possibile confrontare somme in periodi paralleli.For example, you can compare sums across parallel periods.
  • Excel offre una funzione molto diffusa, VLOOKUP.Excel has a very popular function, VLOOKUP. Le funzioni DAX non prendono come riferimento una cella o un intervallo di celle così come fa VLOOKUP in Excel,DAX functions don’t take a cell or cell range as a reference like VLOOKUP does in Excel. ma una colonna o una tabella.DAX functions take a column or a table as a reference. Tenere presente, in Power BI Desktop, che si lavora con un modello dati relazionale.Keep in-mind, in Power BI Desktop, you’re working with a relational data model. La ricerca di valori in un'altra tabella è davvero molto semplice e, nella maggior parte dei casi, non è affatto necessario creare alcuna formula.Looking up values in another table is really quite easy, and in most cases you don’t need to create any formula at all.

    Come si può vedere, le funzioni in DAX consentono di creare formule molto potenti.As you can see, functions in DAX can help you create very powerful formulas. Finora sono state illustrate solo le nozioni di base delle funzioni.We really only touched on the basics of functions. Con l'aumentare delle competenze DAX, si creeranno le formule usando diverse funzioni.As your DAX skills grow, you'll create formulas using many different functions. Uno dei migliori articoli da consultare, che contiene informazioni su ciascuna delle funzioni DAX, è Riferimento a Data Analysis Expressions (DAX).One of the best places to learn details about each of DAX functions is in the DAX Function Reference.

Quiz veloce sulle funzioniFunctions QuickQuiz

  1. A che cosa fa sempre riferimento una funzione?What does a function always reference?
  2. Una formula può contenere più di una funzione?Can a formula contain more than one function?
  3. Quale categoria di funzioni usereste per concatenare due stringhe di testo in un'unica stringa?What category of functions would you use to concatenate two text strings into one string?

Le risposte vengono fornite alla fine di questo articolo.Answers are provided at the end of this article.

ContestoContext

Il contesto è uno dei principali concetti DAX da comprendere.Context is one of the most important DAX concepts to understand. Esistono due tipi di contesto in DAX: contesto di riga e contesto di filtro.There are two types of context in DAX; row context and filter context. Verrà esaminato prima il contesto di riga.We’ll first look at row context.

Contesto di rigaRow context

Il contesto di riga è più facilmente considerato come riga corrente.Row context is most easily thought of as the current row. Si applica ogni volta che una formula ha una funzione che applica i filtri per identificare una singola riga in una tabella.It applies whenever a formula has a function that applies filters to identify a single row in a table. La funzione applicherà intrinsecamente un contesto di riga per ogni riga della tabella su cui viene filtrata.The function will inherently apply a row context for each row of the table over which it is filtering. Questo tipo di contesto di riga si applica più spesso alle misure.This type of row context most often applies to measures.

Contesto di filtroFilter context

Il contesto di filtro è un po' più difficile da comprendere rispetto al contesto di riga.Filter context is a little more difficult to understand than row context. Per facilitare la comprensione, pensare al contesto di filtro come a uno o più filtri applicati in un calcolo che determina un risultato o valore.You can most easily think of filter context as: One or more filters applied in a calculation that determines a result or value.

Il contesto di filtro non esiste al posto del contesto di riga, ma si applica in aggiunta al contesto di riga.Filter context doesn’t exist in-place of row context; rather, it applies in addition to row context. Ad esempio, per restringere ulteriormente i valori da includere in un calcolo, è possibile applicare un contesto di filtro che non solo specifica il contesto di riga, ma anche un solo determinato valore (filtro) in tale contesto di riga.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.

Il contesto di filtro è facilmente visibile nei report.Filter context is easily seen in your reports. Ad esempio, quando si aggiunge TotalCost a una visualizzazione e quindi si aggiungono Year e Region, si definisce un contesto di filtro che consente di selezionare un sottoinsieme di dati basati su un determinato anno e area.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.

Perché il contesto di filtro è così importante per DAX?Why is filter context so important to DAX? Anche se il contesto di filtro può essere applicato più facilmente aggiungendo campi a una visualizzazione, può anche essere applicato in una formula DAX con la definizione di un filtro che usa funzioni quali ALL, RELATED, FILTER, CALCULATE, in base alle relazioni e ad altre misure e colonne.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. Ad esempio, verrà ora esaminata la seguente formula in una misura denominata Store Sales:For example, let’s look at the following formula in a measure named Store Sales:

Per meglio comprendere questa formula, è possibile suddividerla, proprio come con altre formule.To better understand this formula, we can break it down, much like with other formulas.

Questa formula include gli elementi di sintassi seguenti:This formula includes the following syntax elements:

A.A. Il nome della misura è Store Sales.The measure name Store Sales.

B.B. L'operatore di segno uguale (=) indica l'inizio della formula.The equals sign operator (=) indicates the beginning of the formula.

C.C. La funzione CALCULATE valuta un'espressione come argomento in un contesto modificato dai filtri specificati.The CALCULATE function evaluates an expression, as an argument, in a context that is modified by the specified filters.

D.D. Le parentesi () racchiudono un'espressione contenente uno o più argomenti.Parenthesis () surround an expression containing one or more arguments.

E.E. Una misura [Total Sales] nella stessa tabella come espressione.A measure [Total Sales] in the same table as an expression. La misura Total Sales ha la formula: =SUM(Sales[SalesAmount]).The Total Sales measure has the formula: =SUM(Sales[SalesAmount]).

F.F. Una virgola (,) separa il primo argomento di espressione dall'argomento di filtro.A comma (,) separates the first expression argument from the filter argument.

G.G. La colonna di riferimento completa Channel[ChannelName].The fully qualified referenced column, Channel[ChannelName]. Questo è il contesto di riga.This is our row context. Ogni riga in questa colonna specifica un canale: Store, Online e così via.Each row in this column specifies a channel: Store, Online, etc.

H.H. Il valore particolare, Store, come filtro.The particular value, Store as a filter. Questo è il contesto di filtro.This is our filter context.

Questa formula garantisce che solo i valori di vendita definiti dalla misura Total Sales vengano calcolati solo per le righe nella colonna Channel[ChannelName] con il valore "Store", come filtro.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.

Come è facile immaginare, la possibilità di definire il contesto di filtro all'interno della formula è enorme e ha grandi potenzialità.As you can imagine, being able to define filter context within a formula has immense and powerful capabilities. La possibilità di fare riferimento solo a un determinato valore in una tabella correlata è solo un esempio di questo tipo.Being able to reference only a particular value in a related table is just one such example. Non occorre preoccuparsi se il contesto non è completamente chiaro sin da subito.Don’t worry if you do not completely understand context right away. Quando si creano formule personalizzate, è possibile comprendere meglio il contesto e perché è così importante in DAX.As you create your own formulas, you will better understand context and why it’s so important in DAX.

Quiz veloce sul contestoContext QuickQuiz

  1. Quali sono i due tipi di contesto?What are the two types of context?
  2. Che cos'è il contesto di filtro?What is filter context?
  3. Che cos'è il contesto di riga?What is row context?

Le risposte vengono fornite alla fine di questo articolo.Answers are provided at the end of this article.

RiepilogoSummary

Ora che sono state apprese le nozioni di base dei concetti più importanti in DAX, è possibile iniziare a creare formule DAX per misure personalizzate.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. DAX può essere effettivamente un po' complesso da apprendere, ma sono disponibili molte risorse di approfondimento.DAX can indeed be a little tricky to learn, but there are many resources available to you. Dopo aver letto questo articolo e sperimentato con alcune delle formule personalizzate, sarà possibile apprendere altri concetti e formule DAX che consentono di risolvere altri problemi aziendali.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. Sono disponibili molte risorse DAX, la più importante delle quali è l'articolo Riferimento a Data Analysis Expressions (DAX).There are many DAX resources available to you; most important is the Data Analysis Expressions (DAX) Reference.

DAX è stato rilasciato da diversi anni in altri strumenti BI di Microsoft, come ad esempio Power Pivot e i modelli tabulari di Analysis Services, quindi esiste molta disponibilità di informazioni.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. È possibile trovare altre informazioni in libri, white paper e blog pubblicati da Microsoft e dai principali professionisti di Business Intelligence.You can find more information in books, whitepapers, and blogs from both Microsoft and leading BI professionals. Anche la pagina Wiki del centro risorse DAX su TechNet è un ottimo punto di partenza.The DAX Resource Center Wiki on TechNet is also a great place to start.

Risposte del quiz veloceQuickQuiz answers

Sintassi:Syntax:

  1. Convalida e immette la misura nel modello.Validates and enters the measure into the model.
  2. Le parentesi quadre [].Brackets [].

Funzioni:Functions:

  1. Una tabella e una colonna.A table and a column.
  2. Sì.Yes. Una formula può contenere fino a 64 funzioni annidate.A formula can contain up to 64 nested functions.
  3. Funzioni di testo.Text functions.

Contesto:Context:

  1. Contesto di riga e contesto di filtro.Row context and filter context.
  2. Uno o più filtri in un calcolo che determina un singolo valore.One or more filters in a calculation that determines a single value.
  3. La riga corrente.The current row.