Scrivere formule DAX

Completato

Ogni tipo di calcolo del modello, tabella calcolata, colonna calcolata o misura, viene definito in base al nome, seguito dal simbolo di uguale (=), seguito da una formula DAX. Per creare un calcolo del modello, usare il modello seguente:

<Calculation name> = <DAX formula>

Ad esempio, la definizione della tabella calcolata Ship Date che duplica i dati della tabella Date è:

Ship Date = 'Date'

Una formula DAX è costituita da espressioni che restituiscono un risultato. Il risultato è un valore scalare o un oggetto della tabella. Le formule della tabella calcolata devono restituire un oggetto della tabella. Le formule delle misure e delle colonne calcolate devono restituire un valore scalare (valore singolo).

Le formule vengono create usando:

  • Funzioni DAX
  • Operatori DAX
  • Riferimenti agli oggetti del modello
  • Valori costanti, ad esempio il numero 24 o il testo "FY" (che è l'abbreviazione di anno fiscale)
  • Variabili DAX
  • Spazio vuoto

Suggerimento

Quando si immettono formule DAX in Power BI Desktop, è possibile sfruttare i vantaggi offerti da IntelliSense. IntelliSense è uno strumento di supporto per il completamento del codice che elenca le funzioni e le risorse del modello. Quando si seleziona una funzione DAX, vengono fornite anche una definizione e una descrizione. È consigliabile usare IntelliSense per creare rapidamente formule accurate.

Funzioni DAX

Analogamente a Microsoft Excel, DAX è un linguaggio funzionale, vale a dire che le formule si basano sulle funzioni per raggiungere obiettivi specifici. In genere, le funzioni DAX contengono argomenti che consentono di passare le variabili. Le formule possono usare numerose chiamate di funzione e spesso annidano le funzioni all'interno di altre funzioni.

In una formula i nomi di funzione devono essere seguiti da parentesi. All'interno delle parentesi, vengono passate le variabili.

Nota

Alcune funzioni non accettano argomenti oppure gli argomenti possono essere facoltativi.

L'uso delle funzioni DAX è descritto più avanti in questo modulo.

Operatori DAX

Le formule si basano anche sugli operatori, che possono eseguire calcoli aritmetici, confrontare valori, usare stringhe o testare condizioni.

Gli operatori DAX sono descritti in maggiore dettaglio più avanti nel modulo.

Riferimenti agli oggetti del modello

Le formule possono fare riferimento solo a tre tipi di oggetti del modello: tabelle, colonne o misure. Una formula non può fare riferimento a una gerarchia o a un livello gerarchia. Tenere presente che un livello gerarchia è basato su una colonna, quindi la formula può fare riferimento alla colonna di un livello gerarchia.

Riferimenti a tabelle

Quando si fa riferimento a una tabella in una formula, ufficialmente il nome della tabella è racchiuso tra virgolette singole. Nella definizione di tabella calcolata seguente si noti che la tabella Date è racchiusa tra virgolette singole.

Ship Date = 'Date'

Le virgolette singole, tuttavia, possono essere omesse quando si verificano entrambe le condizioni seguenti:

  1. Il nome della tabella non include spazi incorporati.
  2. Il nome della tabella non è una parola riservata usata da DAX. Tutti i nomi di funzione e gli operatori DAX sono parole riservate. Date è un nome di funzione DAX e per questo motivo quando si fa riferimento a una tabella denominata Date è necessario racchiudere il nome tra virgolette singole.

Nella definizione di tabella calcolata seguente è possibile omettere le virgolette singole quando si fa riferimento alla tabella Airport:

Arrival Airport = Airport

Riferimenti a colonne

Quando si fa riferimento a una colonna in una formula, il nome della colonna deve essere racchiuso tra parentesi quadre. Facoltativamente, può essere preceduto dal nome della tabella. La definizione di misura seguente, ad esempio, fa riferimento alla colonna Sales Amount.

Revenue = SUM([Sales Amount])

Poiché i nomi delle colonne sono univoci all'interno di una tabella, ma non sono necessariamente univoci all'interno del modello, è possibile evitare ambiguità nel riferimento alla colonna facendolo precedere dal nome della tabella. Questa colonna con disambiguazione è nota come colonna completa. Alcune funzioni DAX richiedono il passaggio di colonne complete.

Suggerimento

Per migliorare la leggibilità delle formule, è consigliabile far sempre precedere un riferimento a una colonna dal nome della tabella.

La definizione di misura dell'esempio precedente può essere riscritta come segue:

Revenue = SUM(Sales[Sales Amount])

Riferimenti a misure

Quando si fa riferimento a una misura in una formula, analogamente ai riferimenti ai nomi di colonna, il nome della misura deve essere racchiuso tra parentesi quadre. La definizione di misura seguente, ad esempio, fa riferimento alle misure Revenue e Cost.

Profit = [Revenue] - [Cost]

Se si ha poca familiarità con DAX, il fatto che i riferimenti a colonne e misure siano sempre racchiusi tra parentesi quadre può causare confusione al momento di leggere una formula. Una volta acquisita dimestichezza con i concetti fondamentali di DAX, tuttavia, sarà possibile determinare il tipo di oggetto perché nelle formule DAX le colonne e le misure vengono usate in modi diversi.

Suggerimento

È possibile far precedere un riferimento a una misura dal nome della tabella. Le misure, tuttavia, sono un oggetto a livello di modello. Sebbene siano assegnate a una tabella home, si tratta solo di una relazione cosmetica per organizzare le misure a livello logico nel riquadro Campi.

È quindi consigliabile far sempre precedere un riferimento a una colonna dal nome della tabella, mentre per le misure vale l'opposto: è consigliabile non far mai precedere un riferimento a una misura dal nome della tabella.

Per altre informazioni, vedere Riferimenti a colonne e misure.

Variabili DAX

Le formule possono dichiarare variabili DAX per archiviare i risultati.

Più avanti nel modulo viene descritto come e quando usare le variabili DAX.

Spazio vuoto

Uno spazio vuoto fa riferimento a caratteri che è possibile usare per formattare le formule in modo rapido e semplice da comprendere. I caratteri di spazio vuoto includono:

  • Spazi
  • Tabulazioni
  • Ritorni a capo

Lo spazio vuoto è facoltativo e non modifica la logica della formula né influisce negativamente sulle prestazioni. È consigliabile adottare uno stile di formato e applicarlo in modo coerente, prendendo in considerazione le raccomandazioni seguenti:

  • Usare spazi tra gli operatori.
  • Usare tabulazioni per impostare un rientro per le chiamate di funzione annidate.
  • Usare ritorni a capo per separare gli argomenti della funzione, in particolare quando sono troppo lunghi per essere disposti su una singola riga. Questo tipo di formattazione semplifica la risoluzione dei problemi, soprattutto quando nella formula manca una parentesi.
  • È sempre meglio usare troppi spazi vuoti piuttosto che troppo pochi.

Suggerimento

Nella barra della formula, per immettere un ritorno a capo premere MAIUSC+INVIO. Se si preme solo INVIO, viene eseguito il commit della formula.

Considerare la definizione di misura seguente, scritta in una singola riga e che include cinque chiamate di funzioni DAX:

Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))

L'esempio seguente è la stessa definizione di misura, ma questa volta formattata e quindi più facile da leggere e comprendere:

Revenue YoY % =
DIVIDE(
    [Revenue]
        - CALCULATE(
            [Revenue],
            SAMEPERIODLASTYEAR('Date'[Date])
    ),
    CALCULATE(
        [Revenue],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
)

Provare a formattare la misura autonomamente. Aprire il file Adventure Works DW 2020 M02.pbix di Power BI Desktop e quindi nel riquadro Campi espandere la tabella Sales e selezionare la misura Revenue YoY %. Nella barra della formula usare i caratteri di tabulazione e di ritorno a capo per produrre lo stesso risultato dell'esempio precedente. Quando si aggiunge un ritorno a capo, ricordarsi di premere MAIUSC+INVIO.

Questa definizione di misura può essere ulteriormente migliorata in termini di leggibilità e di prestazioni, come verrà illustrato più avanti in questo modulo.

Suggerimento

Un ottimo strumento di formattazione di un altro fornitore che consente di formattare i calcoli è DAX Formatter. Questo strumento consente di incollare il calcolo e di formattarlo. È quindi possibile copiare il calcolo formattato negli Appunti e incollarlo di nuovo in Power BI Desktop.