Introduzione a DAX in Power BI

Questo articolo è pensato per coloro che sono nuovi a Power BI Desktop. Esplorerà i concetti di base di DAX in Power BI, mostrando come applicarli a comuni compiti di analisi matematica e dati. Approfondiremo alcuni concetti teorici lungo il percorso: scopriremo cos’è la formula DAX in Power BI e come scriverla, cos’è una funzione DAX e cos’è il contesto nelle formule DAX.

Cosa troverai in questo articolo

  • Cos’è DAX in Power BI
  • Perché usare DAX in Power BI
  • Cos’è la formula DAX in Power BI
  • Come scrivere una formula DAX in Power BI
  • Cos’è una funzione DAX in Power BI
  • Tipi di funzioni DAX in Power BI
  • Contesto nelle formule DAX
Introduzione a DAX in Power BI

Cos’è DAX in Power BI

I Data Analysis Expressions (DAX) sono formule specializzate utilizzate per analizzare e calcolare i dati. DAX alimenta tutti i calcoli in Power BI, fornendo un set di strumenti dinamico e versatile per creare nuovi campi e tabelle all'interno del modello dati. Sebbene DAX sia principalmente associato a Power BI, è utilizzato anche in Power Pivot per Excel e nei servizi di Analisi di SQL Server (SSAS).

Queste espressioni sono composte da vari componenti, tra cui funzioni, operatori e costanti, che vengono combinati in una singola formula per produrre un risultato (valore o valori). Power BI, e altri strumenti di business intelligence, sfruttano efficacemente i dati a loro disposizione, grazie principalmente alla potenza delle formule DAX in Power BI.

DAX è considerato un "linguaggio funzionale", il che significa che ogni segmento di codice al suo interno funziona come una funzione. Questo comprende dichiarazioni condizionali, funzioni nidificate, riferimenti a valori e altri elementi, tutti i quali possono essere incorporati in un'espressione DAX per l'esecuzione.

Le formule DAX possono operare con due principali tipi di dati: numerici e non numerici. I tipi di dati numerici includono interi, decimali e valute, mentre i tipi di dati non numerici consistono in stringhe e oggetti binari. L'evaluazione delle espressioni DAX inizia con la funzione più interna e procede verso l'esterno. Pertanto, la creazione di una formula DAX ben organizzata è cruciale.

Quando una formula DAX viene eseguita, converte automaticamente i valori di tipi di dati diversi per farli corrispondere al tipo per cui è stata progettata. La formula DAX casta automaticamente i valori risultanti al tipo di dato desiderato.

Le formule DAX sono composte da tre componenti fondamentali, e ne copriremo ciascuno nel dettaglio:

  • La sintassi in DAX si riferisce alla struttura corretta e agli elementi che compongono una formula, che sono generalmente coerenti tra tutte le formule.
  • Le funzioni in DAX sono operazioni predefinite che accettano parametri ed eseguono calcoli specifici basati su tali input.
  • Il contesto in DAX svolge un ruolo cruciale specificando quali righe o punti dati devono essere considerati durante l'esecuzione di un calcolo, influenzando così i risultati.

Perché usare DAX in Power BI

Le formule DAX in Power BI consentono agli utenti di sfruttare efficacemente i propri dati all'interno di Power BI, risolvendo sfide aziendali con precisione. Facilitano calcoli semplici come somme o medie e consentono la creazione di visualizzazioni senza richiedere una profonda conoscenza di DAX. Ad esempio, per generare un grafico di profitto di base, è sufficiente trascinare il campo profitto nella sezione Valori del grafico, dove calcola automaticamente la somma delle righe pertinenti.

Utilizzare una formula DAX diventa vantaggioso quando si desidera applicare lo stesso calcolo in vari contesti, come su diversi grafici o come parte di altre espressioni DAX. Questo approccio migliora l'efficienza del report e semplifica le modifiche future, in quanto è possibile apportare aggiustamenti a una sola formula anziché dover aggiornare formule multiple distribuite in diverse sezioni del report.

Se il problema aziendale richiede calcoli complessi o personalizzati oltre le semplici funzioni di SOMMA o MEDIA, la creazione di formule DAX diventa essenziale.

Sebbene una conoscenza di base dell'interfaccia di Power BI consenta di creare e condividere report online in modo efficace, comprendere come utilizzare le funzioni DAX in Power BI è cruciale per calcoli più complessi e per l'analisi dimensionale.

Ad esempio, è possibile calcolare percentuali di crescita e rappresentarle visivamente in diverse regioni di un paese per analizzare le tendenze dei dati nel tempo. DAX in Power BI consente ai progettisti di definire nuove misure, aiutando le aziende a individuare problemi e ideare soluzioni adeguate.

Hai bisogno di una mano con i report di PowerBI?

Dev4Side Software è specializzata nell'elaborazione di report personalizzati tramite Microsoft Power BI, trasformando dati complessi in dashboard e report intuitivi per supportare decisioni aziendali informate.

Operando in maniera verticale sull'intero ecosistema Power Platform di Microsoft, abbiamo sviluppato una ottima competenza su PowerBI che ci permette di offrire soluzioni di business intelligence che evidenziano insight critici e promuovono l'efficienza operativa.

Scopri come possiamo aiutarti a sfruttare al meglio i tuoi dati: contattaci per trasformare le tue informazioni in azioni concrete.

Cos’è la formula DAX in Power BI

Le formule DAX svolgono un ruolo fondamentale in Power BI per creare calcoli sia nelle colonne calcolate che nelle misure. Inoltre, DAX è fondamentale per implementare misure di sicurezza a livello di riga per proteggere i dati nei report e nelle dashboard.

Decomporre una formula nei suoi elementi costitutivi facilita una comprensione più approfondita di qualsiasi linguaggio. È cruciale studiare attentamente la sintassi di queste espressioni per creare efficacemente nuove formule basate su requisiti specifici.

Per formulare colonne calcolate e misure, utilizza la barra delle formule situata nella parte superiore della finestra del modello di progettazione o sfrutta lo strumento DAX Editor. Per stabilire formule relative alla sicurezza a livello di riga, accedi al Role Manager o alla finestra di dialogo Gestione ruoli. Le informazioni presentate in questa sezione mirano a fornirti una comprensione di base delle formule DAX in Power BI.

Come scrivere una formula DAX in Power BI

Comprendere le formule DAX in Power BI è semplice grazie alla loro natura intuitiva e leggibile. Questo rende rapido apprendere i concetti di base di DAX e iniziare a creare le proprie formule. Esploriamo gli elementi fondamentali che costituiscono una corretta sintassi DAX:

  • Il nome della misura o della colonna calcolata
  • L'operatore di assegnazione ("=") che indica l'inizio della formula
  • Una funzione DAX
  • Parentesi aperta (e chiusa) ("()")
  • Riferimenti a colonne e/o tabelle

Si noti che ciascun parametro successivo in una funzione è separato da una virgola (",").

Quando si inserisce una formula in una colonna calcolata e questa viene convalidata con successo, la colonna viene istantaneamente popolata con i valori calcolati. Nel caso delle misure, premendo INVIO si salva la definizione della misura insieme alla tabella. Se c'è un errore nella formula, viene visualizzata una notifica di errore.

Le funzioni DAX in Power BI possono essere nidificate l'una dentro l'altra per eseguire più operazioni in modo efficiente, il che può notevolmente semplificare il processo di scrittura delle formule DAX. Ad esempio, nidificare più istruzioni IF o utilizzare funzioni come IFERROR per incapsulare un'altra funzione consente di gestire gli errori in modo elegante e personalizzare gli output degli errori secondo necessità. Questo approccio migliora la chiarezza delle formule e l'efficienza operativa in Power BI e ambienti simili.

Alcune delle funzioni DAX comunemente utilizzate nei report includono:

  • Calcoli semplici: COUNT, DISTINCTCOUNT, SUM, AVERAGE, MIN, MAX.
  • SUMMARIZE: Restituisce una tabella spesso utilizzata per eseguire ulteriori aggregazioni su diversi raggruppamenti o sottoinsiemi di dati.
  • CALCULATE: Esegue un'aggregazione applicando uno o più filtri. Quando sono specificati più filtri, la funzione esegue il calcolo specifico, solo quando tutti i filtri specificati sono soddisfatti. Permette di modificare il contesto di filtro, dando la possibilità di scegliere il filter contex.
  • IF: In base a una condizione logica, questa funzione fornisce un risultato diverso a seconda che la condizione valuti true o false. Funziona in modo simile all'operazione CASE WHEN comunemente vista nelle query SQL.
  • IFERROR: Controlla la presenza di errori all'interno di una funzione interna e restituisce un risultato specificato se viene trovato un errore.
  • ISBLANK: Verifica se le righe in una colonna sono vuote e restituisce vero o falso. Questa funzione è utile quando combinata con altre funzioni come IF per gestire condizionalmente i valori vuoti.
  • EOMONTH: Restituisce l'ultimo giorno del mese basato su una data fornita (indicata in una colonna formattata come data), guardando indietro o avanti per un numero specificato di mesi.
  • DATEDIFF: Restituisce la differenza tra due date, entrambe indicate come colonne in formato data, in termini di giorni, mesi, trimestri, anni o altre unità specificate.

Facciamo ora un esempio pratico di una formula e scomponiamola passo per passo. La formula in questione è chiamata "Giorni nel trimestre corrente”:

Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))

Questa misura calcola un rapporto di confronto tra un periodo parziale e il periodo precedente. La formula si adatta alla porzione del periodo che è trascorsa e la confronta con la corrispondente porzione nel periodo precedente. Nello specifico, divide [Days Current Quarter to Date] per [Days in Current Quarter] per determinare la proporzione trascorsa del periodo corrente.

Cos’è una funzione DAX in Power BI

Una funzione in un'espressione è una formula definita con un nome specifico. Le funzioni includono tipicamente argomenti obbligatori e opzionali, detti anche parametri, che servono come input. Questi parametri possono essere valori numerici, costanti, stringhe di testo, altre funzioni o formule, e valori logici come Vero o Falso. Quando una funzione viene eseguita, produce un valore come risultato. DAX comprende una varietà di funzioni progettate per eseguire calcoli che coinvolgono date e orari, generare valori condizionali, manipolare stringhe, eseguire ricerche basate su relazioni e iterare su tabelle per eseguire calcoli ricorsivi.

Sebbene le formule di Excel possano sembrare familiari, le funzioni DAX differiscono significativamente in due aspetti chiave:

  1. Le funzioni DAX fanno sempre riferimento a intere colonne o tabelle. Se sono necessari valori specifici da una tabella o colonna, è possibile aggiungere filtri alla formula per ottenere questa granularità.
  2. Per calcoli personalizzati a livello di riga, DAX offre funzioni che consentono l'uso dei valori della riga corrente o dei valori correlati, simili ai parametri. Questa flessibilità permette di eseguire calcoli sensibili al contesto che si adattano a condizioni variabili.

DAX comprende numerose funzioni che restituiscono una tabella anziché un singolo valore. Queste tabelle non vengono generalmente visualizzate direttamente in un client di reportistica, ma servono come input per funzioni successive. Ad esempio, è possibile recuperare una tabella e poi calcolare il conteggio dei valori distinti al suo interno, oppure sommare dinamicamente i valori attraverso tabelle o colonne filtrate.

Le funzioni DAX includono una gamma di capacità di intelligenza temporale. Queste funzioni consentono di definire o selezionare intervalli di date e facilitano i calcoli dinamici basati su queste date o intervalli. Ad esempio, è possibile confrontare somme tra periodi corrispondenti.

Tipi di funzioni DAX in Power BI

Guardiamo insieme alcuni tipi di funzioni DAX in Power BI e alcuni esempi con relativa sintassi.

Funzione di data e ora

Sebbene le funzioni di data e ora in DAX somiglino a quelle presenti in Microsoft Excel, esse operano utilizzando un tipo di dato datetime che inizia dal 1° marzo 1900. Questa distinzione differenzia le funzioni DAX in termini di gestione dei dati e calcoli che coinvolgono date e orari. Ecco alcuni esempi di funzione data e ora.

Funzione DAX calendar

Gli argomenti start-date e end-date possono accettare qualsiasi valore DateTime. La funzione restituisce una tabella composta da una singola colonna contenente una sequenza di date all'interno dell'intervallo specificato.

Sintassi:

CALENDAR(<StartDate>,<EndDate>)

Esempio:

COUTDAYS(CALENDAR(DATE(2020,4,1), DATE(2020,6,5))) //returns 65

Funzione DAX datediff

La funzione DATEDIFF calcola la differenza tra due date basata sulle unità di intervallo specificate dall'utente.

Sintassi:

DATEDIFF(<StartDate>,<EndDate>,<Interval>)

Esempi:

DATEDIFF(DATE(2020,1,1), DATE(2020,1,31), HOUR)  //returns 720
DATEDIFF(DATE(2020,1,1), DATE(2020,3,31), DAYS)  //returns 90
DATEDIFF(DATE(2020,1,1), DATE(2020,4,31), MONTH) //returns 3

Funzione DAX now

La funzione restituisce il valore corrente della data e dell'ora nel formato standard.

Sintassi:

NOW()

Esempio:

HOUR(NOW()) //returns 12:00:00AM

Funzione DAX datevalue

Converte la data fornita in un formato testuale data-ora.

Sintassi:

DATEVALUE(<DateText>)

Esempi:

DATEVALUE(“1/7/2020”) //returns
DATEVALUE(“20-3-2020”) //returns 1/20/3/2020 12:00:00AM
DATEVALUE(“1-Jul-2020”) //returns 1/07/2020 12:00:00 AM

Funzioni di aggregazione

Le funzioni DAX di aggregazione calcolano un valore scalare, come conteggio, somma, media, minimo o massimo, su tutte le righe in una colonna o tabella come determinato dall'espressione specificata.

Funzioni di intelligenza temporale

Le funzionalità di intelligenza temporale disponibili in DAX consentono la creazione di calcoli che sfruttano le capacità integrate relative a calendari e date. Utilizzando intervalli temporali e date insieme a aggregazioni o calcoli, è possibile costruire confronti significativi tra periodi temporali equivalenti, come tendenze delle vendite e analisi dell'inventario.

Queste funzioni sono principalmente utilizzate per calcolare aggregazioni, manipolare dati e sviluppare soluzioni di Business Intelligence utilizzando una tabella di date come input.

Funzioni filtro

Le funzioni di filtro in DAX sono progettate per recuperare tipologie di dati specifiche, eseguire operazioni di ricerca tra tabelle correlate e filtrare i dati in base ai valori associati. Questi meccanismi di ricerca operano in modo simile alle query di database, sfruttando le strutture delle tabelle e le relazioni definite. Le funzioni di filtro sono cruciali per gli analisti di dati, poiché consentono loro di regolare dinamicamente il contesto dei dati e facilitare calcoli complessi secondo i requisiti dell'analisi.

Funzoni finanziarie

DAX offre una serie di funzioni finanziarie progettate per eseguire calcoli come il valore attuale netto e il tasso di rendimento. Queste funzioni riflettono gli strumenti finanziari presenti in Microsoft Excel, fornendo capacità robuste per l'analisi finanziaria all'interno di Power BI e altri ambienti correlati.

Funzioni logiche

In Power BI, le funzioni logiche valutano le espressioni per fornire informazioni sui valori all'interno dell'espressione. Ad esempio, la funzione TRUE determina se l'espressione valutata produce un valore TRUE. Alcune di queste funzioni includono: DAX AND, DAX OR, DAX IF, DAX SWITCH.

Funzioni informative

Una funzione di informazione esamina la cella o la riga specificata e indica se il valore corrisponde al tipo atteso. Ad esempio, la funzione ISERROR restituisce TRUE quando il valore di riferimento contiene un errore.

Funzioni matematiche e trigonometriche

Le funzioni matematiche in DAX sono molto simili alle funzioni matematiche e trigonometriche di Excel, con leggere variazioni nei tipi di dati numerici. Queste funzioni sono essenziali per eseguire una varietà di calcoli all'interno di Power BI.

Funzioni statistiche

Le funzioni statistiche in DAX calcolano valori associati a distribuzioni statistiche e probabilità, come la deviazione standard e le permutazioni. Queste funzioni sono fondamentali per eseguire espressioni DAX all'interno di modelli statistici e aggregazioni.

Funzioni di manipolazione della tabella

Queste funzioni possono generare una nuova tabella o modificare tabelle esistenti. Ad esempio, la funzione ADDCOLUMNS consente di aggiungere colonne calcolate a una tabella designata, mentre la funzione SUMMARIZECOLUMNS produce una tabella di riepilogo attraverso gruppi specificati.

Contesto nelle formule DAX

Le formule DAX in Power BI sono reattive e si adattano in base al contesto di origine. Comprendere come il contesto funziona in DAX è cruciale per risolvere errori nelle formule e garantire calcoli accurati.

DAX opera all'interno di due contesti principali: il contesto di riga (row context) e il contesto di filtro (filter context). La familiarità con questi contesti è essenziale per gestire efficacemente le relazioni tra i dati e ottimizzare i risultati delle formule.

Contesto di riga

Questo concetto si riferisce alla "riga corrente", che include tutte le colonne all'interno di una tabella e si estende anche alle tabelle correlate. Questo contesto informa la formula DAX riguardo alle righe specifiche da includere durante l'esecuzione di una formula.

Prendiamo come esempio la seguente formula:

Cost Price Per Unit = financials[COGS] / financials[Units Sold]

Nel calcolo del Cost Price Per Unit, DAX opera su base riga per riga. Ciò significa che DAX deve identificare la riga corrente mentre itera attraverso il dataset, eseguendo il calcolo e popolando la nuova colonna con i valori risultanti.

Il contesto di riga (row context) è intrinseco nelle colonne calcolate perché i calcoli vengono eseguiti individualmente per ogni riga, stabilendo automaticamente il contesto di riga. Tuttavia, ciò è diverso per le misure (measures) dove le aggregazioni si applicano a tutte le righe della tabella. Nelle misure, non c'è concetto di riga corrente poiché i calcoli aggregano tutte le righe collettivamente.

Vediamo adesso un esempio di formula DAX di misura:

Profit margin = SUM ( financials[Profit] ) / SUM ( financials[Sales] )

In questo caso, viene derivata una singola cifra sommando la colonna Profit e poi dividendo per la somma della colonna Sales. Poiché DAX esegue un'aggregazione, non richiede informazioni specifiche sulla riga, il che significa che questa misura non ha un contesto di riga.

Per stabilire un contesto di riga all'interno di una misura, è necessario utilizzare funzioni specializzate note come iteratori. Esempi di questi includono SUMX, AVERAGEX, COUNTX. Questi iteratori calcolano le operazioni riga per riga e aggregano i risultati (come somma, media, conteggio, ecc.). Questo approccio definisce esplicitamente il contesto di riga tramite l'uso di queste funzioni iteratrici.

Questo di seguito è un sempio di funzione iteratore:

Average Cost Per Unit = AVERAGEX ( financials, financials[COGS] / financials[Units Sold] )

In questo esempio vengono eseguiti due calcoli: innanzitutto, l'espressione viene valutata riga per riga e successivamente il risultato viene utilizzato nella funzione AVERAGE (media). Un metodo alternativo per ottenere lo stesso risultato è prima creare una colonna calcolata chiamata 'Cost Price Per Unit', come mostrato in precedenza, e poi stabilire una misura separata di MEDIA per quella colonna. L'uso efficace delle funzioni iteratrici non solo migliora l'efficienza dei tuoi report, ma ottimizza anche l'uso della memoria consentendo di eseguire due calcoli con una sola formula.

Contesto di filtro

Il contesto di filtro integra un contesto di riga specificando un sottoinsieme di righe o colonne come filtri all'interno del report. Questi filtri possono essere applicati in diversi modi:

  1. Direttamente in una formula DAX
  2. Utilizzando il riquadro dei filtri
  3. Utilizzando un visualizzatore slicer
  4. Attraverso i campi che compongono un visual (come le righe e le colonne in una matrice)

Un metodo efficace per introdurre un contesto di filtro in una formula DAX è l'uso della funzione CALCULATE. Questa funzione consente di aggiungere uno o più parametri di filtro a una misura. Ad esempio, nell'esempio seguente creiamo una misura di margine di profitto filtrata specificamente per l'Italia:

ITA Profit Margin =
CALCULATE ( SUM ( financials[Profit] ) / SUM ( financials[Sales] ),  financials[Country] = "Italy")

Conclusioni

In sintesi, DAX in Power BI si distingue come un linguaggio di formule robusto in grado di gestire la modellazione dei dati, migliorare le intuizioni sui dati e presentare misure in modo efficace all'interno delle visualizzazioni di Power BI.

Abbiamo esaminato cosa sia una formula DAX in Power BI e la sua sintassi, così come le funzioni DAX e alcuni esempi di esse. Abbiamo anche discusso dell'importanza del contesto nelle formule DAX. Ora, dotati di questi strumenti fondamentali di DAX, stiamo solo grattando la superficie di ciò che DAX può realizzare.

Armarsi di queste tecniche di base di DAX significa iniziare a scoprire le immense capacità di questo linguaggio. Con una ricchezza di 250 funzioni in attesa di essere esplorate, padroneggiare DAX rappresenta una sfida formidabile e un viaggio estremamente gratificante.

Entra in contatto con il team

Modern Apps

Il team Modern Apps è specializzato nello sviluppo e nell'integrazione all'interno dell'intero ecosistema Microsoft 365. Progettiamo applicazioni native per le piattaforme Microsoft ed Azure e implementiamo processi aziendali che si integrano e massimizzano l'investimento aziendale effettuato con Microsoft 365.