Condividi tramite


Guida di riferimento agli operatori DAX per PowerPivot

Nel linguaggio DAX (Data Analysis Expression) vengono utilizzati operatori per creare espressioni che consentono di confrontare valori, eseguire calcoli aritmetici o utilizzare stringhe. In questa sezione viene descritto l'utilizzo di ogni operatore.

Tipi di operatori

Vi sono quattro tipi diversi di operatori di calcolo, ovvero aritmetici, di confronto, di concatenazione di testo e logici.

Operatori aritmetici

Per eseguire operazioni matematiche di base, ad esempio addizione, sottrazione o moltiplicazione, combinare numeri e ottenere risultati numerici, utilizzare gli operatori aritmetici seguenti.

Operatore aritmetico

Descrizione

Esempio

+ (segno di addizione)

Addizione

3+3

– (segno di sottrazione)

Sottrazione/segno

3–1–1

* (asterisco)

Moltiplicazione

3*3

/ (barra)

Divisione

3/3

^ (accento circonflesso)

Elevamento a potenza

16^4

Nota

Il segno più può fungere sia da operatore binario che da operatore unario. Un operatore binario richiede numeri da entrambi i lati dell'operatore ed esegue un'addizione. Quando si utilizzano valori in una formula DAX su entrambi lati dell'operatore binario, DAX tenta di eseguire il cast dei valori in tipi di dati numerici, qualora non si tratti già di numeri. L'operatore unario può invece essere applicato a qualsiasi tipo di argomento. Il simbolo più non influisce sul tipo o sul valore e viene semplicemente ignorato, mentre l'operatore meno crea un valore negativo, se applicato a un valore numerico.

Operatori di confronto

È possibile confrontare due valori utilizzando gli operatori seguenti. Quando vengono messi a confronto due valori tramite questi operatori, il risultato corrisponde a un valore logico, ovvero TRUE o FALSE.

Operatori di confronto

Descrizione

Esempio

=

Uguale a

[Region] = "USA"

>

Maggiore di

[Sales Date] > "Jan 2009"

<

Minore di

[Sales Date] < "Jan 1 2009"

>=

Maggiore o uguale a

[Amount] >= 20000

<=

Minore o uguale a

[Amount] <= 100

<>

Diverso da

[Region] <> "USA"

Operatore di concatenazione del testo

Utilizzare la e commerciale (&) per unire o concatenare due o più stringhe di testo al fine di restituire un'unica stringa.

Operatore di testo

Descrizione

Esempio

& (e commerciale)

Connette o concatena, due valori per produrre un valore di testo continuo

[Region] & ", " & [City]

Operatori logici

Utilizzare gli operatori logici (&&) e (||) per combinare espressioni e produrre un singolo risultato.

Operatore di testo

Descrizione

Esempi

&& (e commerciale doppia)

Crea una condizione AND tra due espressioni che prevedono ognuna un risultato booleano. Se entrambe le espressioni restituiscono TRUE, anche la combinazione delle espressioni restituisce TRUE; in caso contrario, la combinazione restituisce FALSE.

([Region] = "France") && ([BikeBuyer] = "yes"))

|| (barra verticale doppia)

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.

(([Region] = "France") || ([BikeBuyer] = "yes"))

Operatori e ordine di precedenza

In alcuni casi, l'ordine con cui viene eseguito il calcolo può influire sul valore restituito, pertanto è importante comprendere in che modo viene determinato l'ordine e come è possibile modificarlo per ottenere i risultati desiderati.

Ordine di calcolo

In un'espressione gli operatori e i valori vengono valutati in base a un ordine specifico. Tutte le espressioni iniziano sempre con un segno di uguale (=). Il segno di uguale indica che i caratteri seguenti costituiscono un'espressione.

Dopo il segno di uguale vi sono gli elementi da calcolare (gli operandi), che sono separati dagli operatori di calcolo. Le espressioni vengono sempre lette da sinistra verso destra, ma l'ordine con cui vengono raggruppati gli elementi può essere in parte controllato tramite l'utilizzo di parentesi.

Ordine di precedenza degli operatori

Se si combinano diversi operatori in una singola formula, le operazioni vengono ordinate in base alla tabella seguente. Se gli operatori hanno lo stesso valore di precedenza, vengono ordinati da sinistra verso destra. Se, ad esempio, un'espressione contiene sia un operatore di moltiplicazione che uno di divisione, vengono valutati nell'ordine con cui appaiono nell'espressione, da sinistra verso destra.

Operatore

Descrizione

^

Elevamento a potenza

Segno (come in –1)

* e /

Moltiplicazione e divisione

+ e –

Addizione e sottrazione

&

Connette due stringhe di testo (concatenazione)

=< ><=>=<>

Confronto

Utilizzo di parentesi per controllare l'ordine di calcolo

Per modificare l'ordine di valutazione, è necessario racchiudere tra parentesi la parte della formula che deve essere calcolata per prima. Il risultato della formula seguente è ad esempio 11 in quanto la moltiplicazione viene calcolata prima dell'addizione. La formula moltiplica 2 per 3, quindi aggiunge 5 al risultato.

=5+2*3

Se invece si utilizzano parentesi per modificare la sintassi, l'ordine viene modificato in modo che vengano sommati 5 e 2 e il risultato venga moltiplicato per 3, restituendo 21.

=(5+2)*3

Nell'esempio seguente le parentesi che racchiudono la prima parte della formula forzano la valutazione dell'espressione (3 + 0.25) come prima operazione e quindi la divisione del risultato per il risultato dell'espressione, (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)

Nell'esempio seguente viene applicato per primo l'operatore dell'elevamento a potenza, in base alle regole di precedenza per gli operatori, quindi viene applicato l'operatore di segno. Il risultato per questa espressione è -4.

=-2^2

Per assicurarsi che l'operatore di segno venga applicato per primo al valore numerico, è possibile utilizzare parentesi per controllare gli operatori, come illustrato nell'esempio seguente. Il risultato per questa espressione è 4.

= (-2)^2

Note relative alla compatibilità

DAX consente di gestire e confrontare in modo semplice diversi tipi di dati, con aspetti molto simili a quelli di Microsoft Excel. Il motore di calcolo sottostante è tuttavia basato su SQL Server Analysis Services e fornisce caratteristiche avanzate aggiuntive di un archivio dati relazionale, incluso il supporto avanzato per i tipi di data e ora. In alcuni casi, pertanto, è possibile che i risultati dei calcoli o il comportamento delle funzioni non corrispondano a quelli di Excel. DAX supporta inoltre una quantità maggiore di tipi di dati rispetto a Excel. In questa sezione vengono illustrate le differenze principali.

Coercizione dei tipi di dati degli operandi

In generale, i due operandi a sinistra e a destra di un operatore devono essere dello stesso tipo di dati. Se tuttavia i tipi di dati sono diversi, in DAX vengono convertiti in un tipo di dati comune per il confronto, come indicato di seguito:

  1. Entrambi gli operandi vengono innanzitutto convertiti nel tipo di dati comune più grande possibile.

  2. Quindi vengono confrontati.

Si supponga, ad esempio, che vi siano due numeri che si desidera combinare. Un numero è il risultato di una formula, ad esempio =[Price] * .20 e tale risultato potrebbe contenere numerose posizioni decimali. L'altro numero è un numero intero fornito come valore stringa.

In questo caso, entrambi i numeri vengono convertiti da DAX in numeri reali in un formato numerico, utilizzando il formato numerico più grande in grado di archiviare entrambi i tipi di numeri. Quindi i valori vengono confrontati.

In Excel viene invece eseguito un tentativo di confrontare valori di tipi diversi senza prima convertirli in un tipo comune. Per questo motivo, in DAX e in Excel è possibile ottenere risultati diversi per la stessa espressione di confronto.

Tipi di dati utilizzati in DAX

Tipi di dati utilizzati in Excel

Numeri (I8, R8)

Boolean

String

DateTime

Currency

Numeri (R8)

Boolean

String

Variant

Currency

Per ulteriori informazioni sulla conversione implicita dei tipi di dati, vedere Tipi di dati supportati nelle cartelle di lavoro di PowerPivot.

Differenze nell'ordine di precedenza

L'ordine di precedenza delle operazioni nelle formule DAX è fondamentalmente uguale a quello utilizzato da Microsoft Excel, ma alcuni operatori di Excel non sono supportati, ad esempio l'operatore percento. Gli intervalli non sono inoltre supportati.

Quando si copiano e si incollano formule da Excel, assicurarsi pertanto di analizzare la formula attentamente, in quanto alcuni operatori o elementi nelle formule potrebbero non essere validi. In caso di dubbi relativamente all'ordine con cui vengono eseguite le operazioni, è consigliabile utilizzare parentesi per controllare tale ordine e rimuovere qualsiasi ambiguità nel risultato.