Uso degli operatori DAX
Le formule DAX possono usare gli operatori per creare espressioni che eseguono calcoli aritmetici, confrontano valori, usano stringhe o testano condizioni.
Suggerimento
Molti degli operatori DAX, così come l'ordine di precedenza, sono uguali a quelli presenti in Excel.
Operatori aritmetici
Nella tabella di seguito sono elencati gli operatori aritmetici.
Operatore | Descrizione |
---|---|
+ | Addizione |
- | Sottrazione |
* | Moltiplicazione |
/ | Divisione |
^ | Elevamento a potenza |
È importante ricordare che quando si dividono due espressioni oppure il denominatore restituisce zero o BLANK, è più efficiente e sicuro usare la funzione DAX DIVIDE
.
Operatori di confronto
Nella tabella di seguito sono elencati gli operatori di confronto usati per confrontare due valori. Il risultato è TRUE o FALSE.
Operatore | Descrizione |
---|---|
= | Uguale a |
== | Rigorosamente uguale a |
> | Maggiore di |
< | Minore di |
>= | Maggiore di o uguale a |
<= | Minore di o uguale a |
<> | Diverso da |
Tutti gli operatori di confronto, ad eccezione di rigorosamente uguale a (==), trattano BLANK come uguale al numero zero, a una stringa vuota (""), alla data 30 dicembre 1899 o a FALSE. Ciò significa che l'espressione [Revenue] = 0
sarà TRUE quando il valore di [Revenue]
è zero o BLANK. Al contrario, [Revenue] == 0
è TRUE solo quando il valore di [Revenue]
è zero.
Operatore di concatenazione di testo
Usare il carattere "e commerciale" (&) per connettere, o concatenare, due valori di testo per produrre un valore di testo continuo. Si consideri ad esempio la seguente definizione di colonna calcolata:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Operatori logici
Usare gli operatori logici per combinare le espressioni che producono un unico risultato. Nella tabella di seguito sono elencati tutti gli operatori logici.
Operatore | Descrizione |
---|---|
&& | Crea una condizione AND tra due espressioni, in cui ciascuna ha un risultato booleano. Se entrambe le espressioni restituiscono TRUE, anche la combinazione delle espressioni restituisce TRUE; in caso contrario, la combinazione restituisce FALSE. |
|| (doppia barra verticale) | Crea una condizione OR tra due espressioni logiche. Se una delle espressioni restituisce TRUE, il risultato è TRUE; solo quando entrambe le espressioni sono FALSE il risultato è FALSE. |
IN | Crea una condizione OR logica tra ogni riga confrontata con una tabella. Nota: la sintassi del costruttore di tabella usa le parentesi graffe. |
NOT | Inverte lo stato di un'espressione booleana (da FALSE a TRUE e viceversa). |
Un esempio di utilizzo dell'operatore logico IN
è la definizione della misura ANZ Revenue, che usa la funzione DAX CALCULATE
per applicare un filtro specifico di due Paesi/aree geografiche, Australia e New Zealand.
Nota
La potente funzione CALCULATE
verrà illustrata quando si apprenderà a modificare il contesto del filtro.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Precedenza degli operatori
Quando la formula DAX include più operatori, DAX usa le regole per determinare l'ordine di valutazione, noto come precedenza degli operatori. Le operazioni sono ordinate in base alla tabella seguente.
Operatore | Descrizione |
---|---|
^ | Elevamento a potenza |
- | Segno (come in -1) |
* e / | Moltiplicazione e divisione |
NOT | NOT |
+ e - | Addizione e sottrazione |
& | Concatenazione di due stringhe di testo |
=,==,<,>,<=,>=,<> | Confronto |
Quando gli operatori hanno lo stesso valore di precedenza, vengono ordinati da sinistra a destra.
In generale, la precedenza degli operatori è uguale a quella usata in Excel. Se c'è la necessità di sostituire l'ordine di valutazione, raggruppare le operazioni tra parentesi.
Si consideri ad esempio la seguente definizione di colonna calcolata:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Questa definizione di colonna calcolata di esempio produce un risultato errato perché la moltiplicazione avviene prima della sottrazione. La seguente definizione di colonna calcolata corretta usa le parentesi per garantire che le sottrazioni avvengano prima delle moltiplicazioni.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Suggerimento
Ricordare le regole di precedenza degli operatori può essere difficile, soprattutto per coloro che non hanno familiarità con DAX. Di conseguenza, si consiglia di testare accuratamente le formule. Quando le formule non producono il risultato corretto a causa di un ordine di valutazione errato, è possibile provare ad aggiungere parentesi per correggere l'ordine di valutazione. È anche possibile aggiungere parentesi per migliorare la leggibilità delle formule.
Per altre informazioni sugli operatori DAX e sull'ordine di precedenza, consultare Operatori DAX.
Conversione implicita
Quando si scrive una formula DAX che usa gli operatori per combinare diversi tipi di dati, non occorre convertire i tipi in modo esplicito. In genere, DAX identifica automaticamente i tipi di dati degli oggetti del modello a cui si fa riferimento ed esegue conversioni implicite laddove necessario per completare l'operazione specificata.
Tuttavia, potrebbero esistere alcune limitazioni sui valori che possono essere convertiti correttamente. Se un valore o una colonna presenta un tipo di dati incompatibile con l'operazione corrente, DAX restituisce un errore. Ad esempio, il tentativo di moltiplicare un valore di data creerà un errore perché non è logico.
BLANK viene gestito in modo diverso a seconda dell'operatore usato. Viene gestito in modo simile a come Excel tratta BLANK, ma in modo diverso al modo in cui i database (SQL) trattano NULL. BLANK viene considerato come zero quando usato da operatori aritmetici e come una stringa vuota quando viene concatenato a una stringa.
Suggerimento
Ricordare come viene gestito BLANK può essere difficile, soprattutto per coloro che non hanno familiarità con DAX. Di conseguenza, si consiglia di testare accuratamente le formule. Quando BLANK crea risultati imprevisti, prendere in considerazione l'uso delle funzioni DAX IF
e ISBLANK
per verificare la presenza di BLANK e quindi agire di conseguenza.