Condividi tramite


Nozioni di DAX in Power BI Desktop

Gli utenti che non hanno familiarità con Power BI Desktop possono usare questo articolo come introduzione rapida e semplice su come usare DAX (Data Analysis Expressions) per risolvere molti calcoli di base e problemi di analisi dei dati. Verranno prese in esame alcune informazioni concettuali, una serie di attività che è possibile completare e una verifica delle conoscenze per testare quanto appreso. Dopo aver completato questo articolo, si dovrebbe avere una buona conoscenza dei concetti fondamentali più importanti in DAX.

Che cosa è 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 consente di creare nuove informazioni dai dati già presenti nel modello.

Perché DAX è così importante?

È semplice creare un nuovo file di Power BI Desktop e importarvi alcuni dati. È possibile anche creare report che mostrano informazioni preziose senza usare alcuna formula DAX. Ma cosa accade se è necessario analizzare la percentuale di aumento delle categorie di prodotto e per diversi intervalli di date? Oppure se è necessario calcolare la crescita anno dopo anno rispetto alle tendenze di mercato? Le formule DAX consentono di eseguire queste operazioni e dispongono di molte altre funzionalità importanti. Imparare a creare formule DAX efficaci aiuterà a ottenere il massimo dai dati in uso. Quando si acquisiscono le informazioni necessarie, è possibile iniziare a risolvere i problemi aziendali reali che incidono sui profitti.

Prerequisiti

È possibile che si abbia già familiarità con la creazione di formule in Microsoft Excel e che le informazioni siano utili per comprendere DAX. Tuttavia, anche se non si ha esperienza con le formule di Excel, i concetti descritti qui consentiranno di iniziare subito a creare formule DAX e risolvere i problemi di business intelligence reali.

L'attenzione sarà rivolta principalmente alla comprensione delle formule DAX usate nei calcoli; in maniera più specifica, nelle misure e nelle colonne calcolate. L'utente deve già avere familiarità con l'uso di Power BI Desktop per l'importazione di dati e l'aggiunta di campi a un report, nonché con i concetti fondamentali relativi a misure e colonne calcolate.

Cartella di lavoro di esempio

Il modo migliore per imparare a usare DAX consiste nel creare alcune formule di base, applicarle a dati effettivi e constatare personalmente i risultati. Gli esempi e le attività qui illustrati usano il file di esempio delle vendite di Contoso per Power BI Desktop. Questo file di esempio è lo stesso usato nell'articolo Esercitazione: Creare misure personalizzate in Power BI Desktop.

Introduzione

L'approfondimento di DAX è imperniato su tre concetti fondamentali: Sintassi, Funzioni e Contesto. 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.

Sintassi

Prima di creare formule personalizzate, verrà esaminata la sintassi della formula DAX. La sintassi include i diversi elementi che costituiscono una formula o, più semplicemente, il modo in cui la formula viene scritta. Ecco un esempio di una semplice formula DAX per una misura:

Screenshot di una formula DAX con puntatori a singoli elementi della sintassi.

La formula include gli elementi di sintassi seguenti:

R. Nome della misura, Vendite totali.

B. Operatore di uguaglianza (=), che indica l'inizio della formula. Quando viene calcolato, restituisce un risultato.

C. Funzione DAX SUM, che somma tutti i numeri nella colonna Sales[SalesAmount]. Verranno fornite altre informazioni sulle funzioni più avanti.

D. Parentesi () che racchiudono un'espressione che contiene uno o più argomenti. La maggior parte delle funzioni richiede almeno un argomento. ovvero un elemento che passa un valore a una funzione.

E. Tabella di riferimento, Sales.

F. Colonna di riferimento, [SalesAmount], nella tabella Sales. Grazie a questo argomento, la funzione SUM riconosce la colonna su cui aggregare una somma, ovvero il risultato dell'applicazione di SUM.

Quando si cerca di comprendere una formula DAX, è spesso utile dividere ciascuno degli elementi esprimendoli in un linguaggio comune. È possibile ad esempio leggere questa formula come:

Per la misura denominata Total Sales, calcolare (=) la SOMMA dei valori nella colonna [SalesAmount] nella tabella Sales.

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.

Si potrebbe ritenere che questa misura abbia lo stesso risultato della semplice aggiunta del campo SalesAmount al report, e in effetti è vero. 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. Questa soluzione potrebbe sembrare un po' confusa ora, ma man mano che le competenze delle formule DAX aumentano, conoscere questa misura renderà le formule e il modello più efficienti. In effetti, la misura Total Sales verrà visualizzata come argomento in altre formule più avanti.

Verranno ora esaminati alcuni altri aspetti di questa formula. In particolare, è stata introdotta una funzione, SUM. Le funzioni sono formule predefinite che semplificano l'esecuzione di calcoli e manipolazioni complessi con numeri, date, ore, testo e altro ancora. Si apprenderanno altre informazioni sulle funzioni più avanti.

Come si può osservare, il nome della colonna [SalesAmount] è preceduta dalla tabella Sales a cui appartiene la colonna. Si tratta di un nome di colonna completo poiché include il nome di colonna preceduto da quello della tabella. Le colonne a cui si fa riferimento nella stessa tabella non richiedono che il nome della tabella venga incluso nella formula. Questo può rendere più brevi e facili da leggere le formule lunghe che fanno riferimento a molte colonne. È tuttavia consigliabile includere il nome della tabella nelle formule della misura, anche quando si trovano nella stessa tabella.

Nota

Se un nome di tabella contiene spazi, parole chiave riservate o caratteri non consentiti, è necessario racchiuderlo tra virgolette singole. È 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.

È importante che la sintassi delle formule sia corretta. Nella maggior parte dei casi, se la sintassi non è corretta, viene restituito un errore, In altri casi, la sintassi può essere corretta, ma i valori restituiti potrebbero non essere quelli previsti. L'editor DAX in Power BI Desktop include una funzionalità per i suggerimenti, che consente di selezionare gli elementi giusti al fine di creare formule sintatticamente corrette.

Si creerà una formula di esempio. 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.

Attività: Creare una formula della misura

  1. Scaricare e aprire il file di esempio delle vendite di Contoso per Power BI Desktop.

  2. Nell'elenco dei campi della visualizzazione Report fare clic con il pulsante destro del mouse sulla tabella Sales e quindi selezionare Nuova misura.

  3. Nella barra della formula sostituire Misura immettendo un nuovo nome di misura, Previous Quarter Sales.

  4. Dopo il segno di uguale, digitare le prime lettere, CAL, e quindi fare doppio clic sulla funzione da usare. In questa formula, si deve usare la funzione CALCULATE.

    La funzione CALCULATE verrà usata per filtrare gli importi da sommare in base a un argomento che viene passato alla funzione CALCOLATE. Questo tipo di funzione viene definito "di annidamento". La funzione CALCULATE ha almeno due argomenti. Il primo è l'espressione da valutare e il secondo è un filtro.

  5. Dopo la parentesi aperta ( per la funzione CALCULATE, digitare SUM e quindi un'altra parentesi aperta (.

    Si passerà ora un argomento alla funzione SUM.

  6. Iniziare digitando Sal, selezionare Sales[SalesAmount] e quindi digitare una parentesi chiusa ).

    Questo passaggio crea il primo argomento di espressione per la funzione CALCULATE.

  7. Digitare una virgola (,) seguita da uno spazio per specificare il primo filtro e quindi digitare PREVIOUSQUARTER.

    Per filtrare i risultati SUM in base al trimestre precedente verrà usata la funzionalità di Business Intelligence per le gerarchie temporali PREVIOUSQUARTER.

  8. Dopo la parentesi aperta ( per la funzione PREVIOUSQUARTER, digitare Calendar[DateKey].

    La funzione PREVIOUSQUARTER ha un solo argomento, una colonna contenente un intervallo contiguo di date. In questo caso, si tratta della colonna DateKey della tabella Calendar.

  9. Chiudere entrambi gli argomenti passati alla funzione PREVIOUSQUARTER e alla funzione CALCULATE digitando due parentesi chiuse )).

    La formula a questo punto dovrebbe essere simile alla seguente:

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

  10. Selezionare il segno di spunta Icona Segno di spunta nella barra della formula o premere INVIO per convalidare la formula e aggiungerla alla tabella Sales.

Ce l'hai fatta! È stata appena creata una misura complessa usando DAX. Lo scopo di questa formula è calcolare le vendite totali per il trimestre precedente, in base ai filtri applicati a un report. Ad esempio, è possibile inserire SalesAmount e la nuova misura Previous Quarter Sales dalla tabella Sales in un istogramma a colonne cluster. Nella tabella Calendar aggiungere quindi Year come filtro dei dati e selezionare 2011. Successivamente, aggiungere QuarterOfYear come altro filtro dei dati e selezionare 4: si otterrà un grafico simile al seguente:

Grafico di Previous Quarter Sales e SalesAmount

Tenere presente che il modello di esempio contiene solo una piccola quantità di dati sulle vendite dall'1/1/2011 al 19/1/2013. Se si seleziona un anno o un trimestre in cui SalesAmount non può essere sommato o la nuova misura non può calcolare i dati sulle vendite per il trimestre corrente o precedente, non vengono visualizzati dati per tale periodo. Ad esempio, se si seleziona 2011 per Year e 1 per QuarterOfYear, non vengono visualizzati dati per Previous Quarter Sales perché non sono presenti dati per il quarto trimestre del 2010.

Sono stati introdotti diversi aspetti importanti delle formule DAX:

  • Questa formula includeva due funzioni. PREVIOUSQUARTER, una funzionalità di Business Intelligence per le gerarchie temporali, è annidata come argomento passato a CALCULATE, una funzione di filtro.

    Le formule DAX possono contenere fino a 64 funzioni annidate. È improbabile che una formula contenga così tante funzioni annidate. In effetti, sarebbe difficile creare ed eseguire il debug di tale formula e probabilmente non sarebbe neanche veloce.

  • In questa formula, sono stati usati anche dei filtri. I filtri limitano ciò che verrà calcolato. In questo caso, è stato selezionato un filtro come argomento, che è effettivamente il risultato di un'altra funzione. Altre informazioni sui filtri verranno fornite più avanti.

  • È stata usata la funzione CALCULATE. Questa è una delle funzioni più potenti di DAX. Nel creare modelli e formule più complesse, è probabile che si usi questa funzione molte volte. Anche se la trattazione della funzione CALCULATE esula dall'ambito di questo articolo, con l'aumentare della conoscenza di DAX occorre prestarvi particolare attenzione.

Quiz veloce sulla sintassi

  1. Qual è lo scopo di questo pulsante sulla barra della formula?

    Selezione pulsante

  2. Cosa racchiude sempre un nome di colonna in una formula DAX?

Le risposte vengono fornite alla fine di questo articolo.

Funzioni

Le funzioni sono formule predefinite che eseguono calcoli usando valori specifici, detti argomenti, in una struttura o un ordine particolare. Gli argomenti possono essere altre funzioni, un'altra formula, un'espressione, riferimenti di colonna, numeri, testo, valori logici quali TRUE o FALSE o costanti.

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. 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:

  • Una funzione DAX fa sempre riferimento a una colonna completa o una tabella. Se si desidera utilizzare solo particolari valori di una tabella o colonna, è possibile aggiungere filtri alla 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 in base al contesto. Si apprenderanno altre informazioni sul contesto più avanti.

  • DAX include numerose funzioni che restituiscono una tabella anziché un valore. La tabella non viene visualizzata, ma viene usata per fornire input ad altre funzioni. Ad esempio, è possibile recuperare una tabella e contare i valori distinti in essa contenuti o calcolare somme dinamiche nelle tabelle o colonne filtrate.

  • DAX include varie funzioni di Business Intelligence per le gerarchie temporali. Queste funzioni consentono di definire o selezionare intervalli di date ed eseguire calcoli dinamici basati su di essi. Ad esempio, è possibile confrontare somme in periodi paralleli.

  • Excel offre una funzione diffusa, VLOOKUP. Le funzioni DAX non prendono come riferimento una cella o un intervallo di celle così come fa VLOOKUP in Excel, ma una colonna o una tabella. Tenere presente che in Power BI Desktop si lavora con un modello dati relazionale. La ricerca di valori in un'altra tabella è semplice e, nella maggior parte dei casi, non è affatto necessario creare alcuna formula.

    Come si può vedere, le funzioni in DAX consentono di creare formule molto potenti. Sono stati toccati solo i concetti di base delle funzioni. Con l'aumentare delle competenze in DAX, si creeranno formule usando molte funzioni diverse. Uno dei migliori articoli da consultare, che contiene informazioni su ciascuna delle funzioni DAX, è Riferimento a Data Analysis Expressions (DAX).

Quiz veloce sulle funzioni

  1. A che cosa fa sempre riferimento una funzione?
  2. Una formula può contenere più di una funzione?
  3. Quale categoria di funzioni usereste per concatenare due stringhe di testo in un'unica stringa?

Le risposte vengono fornite alla fine di questo articolo.

Contesto

Il contesto è uno dei concetti DAX più importanti da comprendere. Esistono due tipi di contesto in DAX: contesto di riga e contesto di filtro. Verrà esaminato prima il contesto di riga.

Contesto di riga

Il contesto di riga può essere pensato come la riga corrente e si applica ogni volta che in una formula è presente una funzione che specifica i filtri per identificare una singola riga in una tabella. La funzione applicherà intrinsecamente un contesto di riga per ogni riga della tabella su cui viene filtrata. Questo tipo di contesto di riga si applica più spesso alle misure.

Contesto di filtro

Il contesto di filtro è un po' più difficile da capire rispetto al contesto di riga. 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.

Il contesto di filtro non sostituisce il contesto di riga, ma si applica in aggiunta a quest'ultimo. Per restringere ulteriormente i valori da includere in un calcolo, ad esempio, è possibile applicare un contesto di filtro, che specifica non solo il contesto di riga, ma anche un particolare valore (filtro) in tale contesto.

Il contesto del filtro è facilmente visibile nei report. 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.

Il contesto di filtro è estremamente importante per DAX Si è visto che il contesto di filtro può essere applicato aggiungendo campi a una visualizzazione. Il contesto di filtro può essere applicato anche in una formula DAX definendo un filtro con funzioni quali ALL, RELATED, FILTER, CALCULATE, by relationships e da altre misure e colonne. Ad esempio, verrà ora esaminata la seguente formula in una misura denominata Store Sales:

Misura Store Sales

Per comprendere meglio questa formula, possiamo scomporla, in modo analogo ad altre formule.

La formula include gli elementi di sintassi seguenti:

R. Nome della misura, Store Sales.

B. Operatore di uguaglianza (=), che indica l'inizio della formula.

C. Funzione CALCULATE, che valuta un'espressione, come argomento, in un contesto modificato dai filtri specificati.

D. Parentesi () che racchiudono un'espressione contenente uno o più argomenti.

E. Una misura [Total Sales] nella stessa tabella come espressione. La misura Total Sales ha la formula: =SUM(Sales[SalesAmount]).

F. Virgola (,) che separa il primo argomento di espressione dall'argomento di filtro.

G. La colonna di riferimento completa Channel[ChannelName]. Questo è il contesto di riga. Ogni riga in questa colonna specifica un canale, ad esempio Store o Online.

H. Valore particolare, Store, come filtro. Questo è il contesto di filtro.

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.

Come si immagina, la possibilità di definire il contesto di filtro all'interno di una formula implica potenzialità straordinarie. La capacità di fare riferimento solo a un valore particolare in una tabella correlata è solo uno di questi esempi. Non preoccuparsi se non il contesto non appare subito chiaro. Man mano che si creano formule personalizzate, è possibile comprendere meglio il contesto e perché è così importante in DAX.

Quiz veloce sul contesto

  1. Quali sono i due tipi di contesto?
  2. Che cos'è il contesto di filtro?
  3. Che cos'è il contesto di riga?

Le risposte vengono fornite alla fine di questo articolo.

Riepilogo

Ora che si possiede una conoscenza di base dei concetti più importanti in DAX, è possibile iniziare a creare formule DAX per le misure in modo autonomo. Sebbene l'apprendimento di DAX possa sembrare complesso, è possibile sfruttare le numerose risorse disponibili. 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. Sono disponibili molte risorse DAX, la più importante delle quali è l'articolo Riferimento a Data Analysis Expressions (DAX).

Poiché DAX è in giro da diversi anni in altri strumenti di Microsoft BI, ad esempio i modelli tabulari di Power Pivot e Analysis Services, sono disponibili molte informazioni di grande utilità. È possibile trovare altre informazioni in libri, white paper e blog pubblicati da Microsoft e dai principali professionisti di Business Intelligence. Anche il Centro risorse DAX è un ottimo punto di partenza.

Risposte del quiz veloce

Sintassi:

  1. Convalida e immette la misura nel modello.
  2. Le parentesi quadre [].

Funzioni:

  1. Una tabella e una colonna.
  2. Sì. Una formula può contenere fino a 64 funzioni annidate.
  3. Funzioni di testo.

Contesto:

  1. Contesto di riga e contesto di filtro.
  2. Uno o più filtri in un calcolo che determina un singolo valore.
  3. La riga corrente.