Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Questo articolo descrive la sintassi e i requisiti per il linguaggio di espressione della formula DAX.
Requisiti di sintassi
Una DAX formula inizia sempre con un segno di uguale (=). Dopo il segno di uguale, è possibile fornire qualsiasi espressione che restituisca un valore scalare o un'espressione che può essere convertita in scalare. Questi includono:
Costante scalare o espressione che usa un operatore scalare (
+,-,*,/,>=,...,&&, ...)Riferimenti a colonne o tabelle. Il DAX linguaggio usa sempre tabelle e colonne come input per le funzioni, mai una matrice o un set arbitrario di valori.
Operatori, costanti e valori forniti come parte di un'espressione.
Risultato di una funzione e dei relativi argomenti obbligatori. Alcune DAX funzioni restituiscono una tabella anziché una tabella scalare e devono essere incluse in una funzione che valuta la tabella e restituisce un valore scalare, a meno che la tabella non sia una singola colonna, una singola tabella di righe, quindi venga considerata come un valore scalare.
La maggior parte delle DAX funzioni richiede uno o più argomenti, che possono includere tabelle, colonne, espressioni e valori. Tuttavia, alcune funzioni, ad esempio PI, non richiedono argomenti, ma richiedono sempre parentesi per indicare l'argomento Null. Ad esempio, è necessario digitare PIsempre (), non PI. È anche possibile annidare funzioni all'interno di altre funzioni.
Expressions. Un'espressione può contenere uno o tutti gli operatori, le costanti o i riferimenti alle colonne seguenti.
Ad esempio, di seguito sono riportate tutte le formule valide.
| Formula | Result |
|---|---|
= 3 |
3 |
= "Sales" |
Sales |
= 'Sales'[Amount] |
Se si utilizza questa formula all'interno della tabella Sales, si otterrà il valore della colonna Amount nella tabella Sales per la riga corrente. |
= (0.03 *[Amount])=0.03 * [Amount] |
Tre% del valore nella colonna Amount della tabella corrente. Sebbene questa formula possa essere utilizzata per calcolare una percentuale, il risultato non viene visualizzato come percentuale a meno che non si applichi la formattazione nella tabella. |
= PI() |
Valore della costante pi. |
Le formule possono comportarsi in modo diverso a seconda della modalità di utilizzo. È necessario essere sempre consapevoli del contesto e del modo in cui i dati usati nella formula sono correlati ad altri dati che potrebbero essere usati nel calcolo.
Requisiti di denominazione
Un modello di dati spesso contiene più tabelle. Insieme le tabelle e le relative colonne costituiscono un database archiviato nel motore di analisi in memoria (VertiPaq). All'interno di tale database, tutte le tabelle devono avere nomi univoci. Anche i nomi delle colonne devono essere univoci all'interno di ogni tabella. Tutti i nomi degli oggetti non fanno distinzione tra maiuscole e minuscole; Ad esempio, i nomi SALES e Sales rappresentano la stessa tabella.
Ogni colonna e misura aggiunta a un modello di dati esistente deve appartenere a una tabella specifica. Specificare la tabella che contiene la colonna in modo implicito, quando si crea una colonna calcolata all'interno di una tabella o in modo esplicito, quando si crea una misura e si specifica il nome della tabella in cui deve essere archiviata la definizione della misura.
Quando si usa una tabella o una colonna come input per una funzione, è in genere necessario qualificare il nome della colonna. Il nome qualificato completamente di una colonna è il nome della tabella, seguito dal nome della colonna tra parentesi quadre: ad esempio, 'U.S. Sales'[Products]. Quando si fa riferimento a una colonna nei contesti seguenti, è sempre necessario un nome completo:
Come argomento della funzione,
VALUESCome argomento per le funzioni
ALLoALLEXCEPTIn un argomento di filtro per le funzioni
CALCULATEoCALCULATETABLECome argomento della funzione,
RELATEDTABLECome argomento per qualsiasi funzione di intelligenza temporale
Un nome di colonna non qualificato è solo il nome della colonna, racchiuso tra parentesi quadre, ad esempio [Sales Amount]. Ad esempio, quando si fa riferimento a un valore scalare dalla stessa riga della tabella corrente, è possibile usare il nome di colonna non qualificato.
Se il nome di una tabella contiene spazi, parole chiave riservate o caratteri non consentiti, è necessario racchiudere il nome della tabella tra virgolette singole. È inoltre necessario racchiudere i nomi di tabella tra virgolette se il nome contiene caratteri esterni all'intervallo di caratteri alfanumerici ANSI, indipendentemente dal fatto che le impostazioni locali supportino o meno il set di caratteri. Ad esempio, se si apre una cartella di lavoro contenente nomi di tabella scritti in caratteri cirilici, ad esempio "Таблица", il nome della tabella deve essere racchiuso tra virgolette, anche se non contiene spazi.
Note
Per semplificare l'immissione dei nomi completi delle colonne, usare la funzionalità Completamento automatico nell'editor di formule.
Tables
I nomi delle tabelle sono necessari ogni volta che la colonna proviene da una tabella diversa rispetto alla tabella corrente. I nomi delle tabelle devono essere univoci all'interno del database.
I nomi delle tabelle devono essere racchiusi tra virgolette singole se contengono spazi, altri caratteri speciali o caratteri alfanumerici non inglesi.
Measures
I nomi delle misure devono essere sempre racchiusi tra parentesi quadre.
I nomi delle misure possono contenere spazi.
Ogni nome di misura deve essere univoco all'interno di un modello. Pertanto, il nome della tabella è facoltativo davanti a un nome di misura quando si fa riferimento a una misura esistente. Tuttavia, quando si crea una misura è necessario specificare sempre una tabella in cui verrà archiviata la definizione della misura.
Columns
I nomi delle colonne devono essere univoci nel contesto di una tabella; Tuttavia, più tabelle possono avere colonne con gli stessi nomi (la disambiguazione include il nome della tabella).
In generale, è possibile fare riferimento alle colonne senza fare riferimento alla tabella di base a cui appartengono, tranne quando potrebbe verificarsi un conflitto di nomi da risolvere o con determinate funzioni che richiedono che i nomi delle colonne siano completi.
Parole chiave riservate
Se il nome usato per una tabella corrisponde a una parola chiave riservata di Analysis Services, viene generato un errore e è necessario rinominare la tabella. Tuttavia, è possibile usare parole chiave nei nomi degli oggetti se il nome dell'oggetto è racchiuso tra parentesi quadre (per le colonne) o virgolette (per le tabelle).
Note
Le virgolette possono essere rappresentate da diversi caratteri, a seconda dell'applicazione. Se si incollano formule da un documento esterno o da una pagina Web, assicurarsi di controllare il codice ASCII del carattere utilizzato per l'apertura e la chiusura delle virgolette, per assicurarsi che siano uguali. In caso contrario, DAX potrebbe non essere in grado di riconoscere i simboli tra virgolette, rendendo il riferimento non valido.
Caratteri speciali
I caratteri e i tipi di carattere seguenti non sono validi nei nomi di tabelle, colonne o misure:
Spazi iniziali o finali; a meno che gli spazi non siano racchiusi da delimitatori di nome, parentesi o apostrofi singoli.
Caratteri di controllo
I caratteri seguenti non validi nei nomi degli oggetti:
.,;':/\\*|?&%$!+=()[]{}<>
Esempi di nomi di oggetti
La tabella seguente mostra alcuni esempi di nomi di oggetti:
| Tipi di oggetto | Examples | Comment |
|---|---|---|
| Nome della tabella | Sales | Se il nome della tabella non contiene spazi o altri caratteri speciali, il nome non deve essere racchiuso tra virgolette. |
| Nome della tabella | 'Canada Sales' | Se il nome contiene spazi, schede o altri caratteri speciali, racchiudere il nome tra virgolette singole. |
| Nome completo qualificato della colonna | Sales[Amount] | Il nome della tabella precede il nome della colonna e il nome della colonna è racchiuso tra parentesi quadre. |
| Nome completamente qualificato della misura | Sales[Profit] | Il nome della tabella precede il nome della misura e il nome della misura è racchiuso tra parentesi quadre. In alcuni contesti, è sempre necessario un nome qualificato completo. |
| Nome non qualificato di colonna | [Amount] | Il nome non qualificato è semplicemente il nome della colonna, tra parentesi quadre. I contesti in cui è possibile usare il nome non qualificato includono formule in una colonna calcolata all'interno della stessa tabella o in una funzione di aggregazione che esegue l'analisi sulla stessa tabella. |
| Colonna completamente qualificata in una tabella il cui nome include spazi | 'Canada Sales'[Quantità] | Il nome della tabella contiene spazi, pertanto deve essere racchiuso tra virgolette singole. |
Altre limitazioni
La sintassi necessaria per ogni funzione e il tipo di operazione che può eseguire varia notevolmente a seconda della funzione. In generale, tuttavia, le regole seguenti si applicano a tutte le formule ed espressioni:
DAX le formule e le espressioni non possono modificare o inserire singoli valori nelle tabelle.
Non è possibile creare righe calcolate utilizzando DAX. È possibile creare solo colonne e misure calcolate.
Quando si definiscono colonne calcolate, è possibile annidare le funzioni a qualsiasi livello.
DAX include diverse funzioni che restituiscono una tabella. In genere, si usano i valori restituiti da queste funzioni come input per altre funzioni, che richiedono una tabella come input.
DAX operatori e costanti
Nella tabella seguente sono elencati gli operatori supportati da DAX. Per altre informazioni sulla sintassi dei singoli operatori, vedere DAX Operatori.
| Tipo di operatore | Simbolo e uso |
|---|---|
| Operatore parentesi |
() ordine di precedenza e raggruppamento di argomenti |
| Operatori aritmetici |
+ (addizione)- (sottrazione)* (moltiplicazione)/ (divisione)^ (esponenziazione) |
| Operatori di confronto |
= (uguale a)> (maggiore di)< (minore di)>= (maggiore o uguale a)<= (minore o uguale a)<> (diverso da) |
| Operatore di concatenazione di testo |
& (concatenazione) |
| Operatori logici |
&& (e)|| (o) |
Tipi di dati
Non è necessario eseguire il cast, la conversione o specificare in altro modo il tipo di dati di una colonna o di un valore utilizzato in una DAX formula. Quando si usano dati in una DAX formula, DAX identifica automaticamente i tipi di dati nelle colonne a cui si fa riferimento e i valori digitati ed esegue conversioni implicite, se necessario per completare l'operazione specificata.
Ad esempio, se si tenta di aggiungere un numero a un valore di data, il motore interpreterà l'operazione nel contesto della funzione e convertirà i numeri in un tipo di dati comune e quindi presenterà il risultato nel formato previsto, una data.
Esistono tuttavia alcune limitazioni sui valori che possono essere convertiti correttamente. Se un valore o una colonna ha un tipo di dati non compatibile con l'operazione corrente, DAX restituisce un errore. Inoltre, DAX non fornisce funzioni che consentono di modificare, convertire o eseguire il cast in modo esplicito del tipo di dati esistenti importati in un modello di dati.
Important
DAX non supporta l'uso del tipo di dati Variant. Pertanto, quando si caricano o si importano dati in un modello di dati, è previsto che i dati in ogni colonna in genere corrispondano a un tipo di dati coerente.
Alcune funzioni restituiscono valori scalari, incluse le stringhe, mentre altre funzioni funzionano con numeri, numeri interi e numeri reali o date e ore. Il tipo di dati necessario per ogni funzione è descritto nella sezione DAX funzioni.
È possibile usare tabelle contenenti più colonne e più righe di dati come argomento di una funzione. Alcune funzioni restituiscono anche tabelle, che vengono archiviate in memoria e possono essere usate come argomenti per altre funzioni.
Data e ora
DAX archivia i valori di data e ora usando il tipo di dati datetime usato da Microsoft SQL Server. Il formato Datetime usa un numero a virgola mobile in cui i valori date corrispondono alla parte integer che rappresenta il numero di giorni dal 30 dicembre 1899. I valori di ora corrispondono alla parte decimale di un valore di data in cui ore, minuti e secondi sono rappresentati da frazioni decimali di un giorno. DAX Le funzioni di data e ora convertono in modo implicito gli argomenti in un tipo di dati datetime.
Note
Il valore DateTime massimo esatto supportato da DAX è 31 dicembre 9999 00:00:00.
Valore letterale data e ora
A partire dalla versione di agosto 2021 di Power BI Desktop, DAX i valori date e datetime possono essere specificati come valore letterale nel formato dt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss"o dt"YYYY-MM-DD hh:mm:ss". Se specificato come valore letterale, l'uso di DATE, TIMEDATEVALUE, , TIMEVALUE le funzioni nell'espressione non sono necessarie.
Ad esempio, l'espressione seguente usa le funzioni DATE e TIME per filtrare su OrderDate:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)
La stessa espressione di filtro può essere specificata come valore letterale:
EVALUATE
FILTER (
FactInternetSales,
[OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)
Note
Il formato letterale di tipo date e datetime non è supportato in tutte le versioni di Power BI Desktop, Analysis Services e Power Pivot in Excel. Le funzionalità nuove e aggiornate DAX vengono in genere introdotte in Power BI Desktop e quindi incluse in Analysis Services e Power Pivot in Excel.