Specifica della sintassi DAX per PowerPivot
Data Analysis Expressions (DAX) è una libreria di funzioni, operatori e costanti che è possibile combinare per compilare formule ed espressioni in PowerPivot per Excel. In questa sezione vengono fornite informazioni dettagliate sulla sintassi e sui requisiti del linguaggio DAX.
Per esempi relativi ai tipi di formule che è possibile compilare e a come utilizzare espressioni per filtrare le tabelle e modificare il contesto, vedere Panoramica di Data Analysis Expressions (DAX). In questo argomento sono contenute le sezioni seguenti:
Requisiti di sintassi
Requisiti per la denominazione
Funzioni
Operatori e costanti
Tipi di dati
Requisiti di sintassi
Le formule DAX sono molto simili alle formule digitate nelle tabelle di Excel, ma vi sono alcune differenze importanti.
In Microsoft Excel è possibile fare riferimento a singole celle o matrici, mentre in PowerPivot è possibile fare riferimento solo a tabelle o colonne di dati complete. Se è tuttavia necessario utilizzare solo parte di una colonna o valori univoci da una colonna, è possibile ottenere un comportamento simile tramite l'utilizzo di funzioni DAX che filtrano la colonna o restituiscono valori univoci.
Le formule DAX non supportano esattamente gli stessi tipi di dati di Microsoft Excel. In generale, DAX fornisce più tipi di dati rispetto a Excel ed esegue le conversioni implicite de tipi su determinati dati durante l'importazione. Per ulteriori informazioni, vedere Panoramica di Data Analysis Expressions (DAX).
Una formula DAX inizia sempre con un segno di uguale (=). Dopo il segno di uguale è possibile specificare qualsiasi espressione che restituisce un valore scalare o un'espressione che può essere convertita in un valore scalare, tra cui:
Una costante scalare o un'espressione che utilizza un operatore scalare (+,-,*,/,>=,...,&&, ...)
Riferimenti a colonne o tabelle. Nel linguaggio DAX come input per le funzioni vengono utilizzate sempre tabelle e colonne e mai una matrice o un set arbitrario di valori.
Operatori, costanti e valori forniti come parte di un'espressione.
Risultato di una funzione e relativi argomenti obbligatori. Alcune funzioni DAX restituiscono una tabella anziché un valore scalare e devono essere racchiuse in una funzione che valuta la tabella e restituisce un valore scalare. A meno che non sia una singola colonna, tabella di riga singola, la tabella viene considerata come valore scalare.
La maggior parte delle funzioni di PowerPivot richiede uno o più argomenti che possono includere tabelle, colonne, espressioni e valori. Alcune funzioni, tuttavia, ad esempio PI, non richiedono argomenti, sebbene sia sempre necessario aggiungere le parentesi per indicare l'argomento Null. È ad esempio necessario digitare sempre PI() e non PI. È anche possibile annidare funzioni all'interno di altre funzioni.
Espressioni. Un'espressione può contenere operatori e costanti o riferimenti a colonne.
Le formule seguenti, ad esempio, sono tutte valide:
Formula |
Risultato |
---|---|
=3 |
3 |
="Sales" |
Sales |
='Sales'[Amount] |
Se si utilizza tale 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] |
3% 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 greco. |
Nota
Le formule possono avere un comportamento diverso a seconda se vengono utilizzate in una colonna calcolata o in una misura all'interno di una tabella pivot. È necessario tenere sempre presente il contesto e in che modo i dati utilizzati nella formula sono correlati ad altri dati che possono essere utilizzati nel calcolo. Per ulteriori informazioni, vedere Contesto nelle formule DAX.
Requisiti per la denominazione
In una finestra di PowerPivot possono essere contenute più tabelle, ognuna in una scheda. Le tabelle e le colonne costituiscono, insieme, un database archiviato nel motore VertiPaq di PowerPivot. All'interno di tale database tutte le tabelle devono avere nomi univoci. I nomi delle colonne devono inoltre essere univoci all'interno di ciascuna tabella. Per i nomi degli oggetti non viene fatta distinzione tra maiuscole e minuscole. I nomi SALES e Sales rappresenterebbero ad esempio la stessa tabella.
Ognuna delle colonne e delle misure aggiunte a un database di PowerPivot esistente deve appartenere a una tabella specifica. È possibile specificare la tabella in cui è contenuta la colonna in modo implicito, quando si crea una colonna calcolata all'interno di una tabella, oppure 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 utilizza una tabella o una colonna come input per una funzione, in genere è necessario qualificare il nome di colonna. Il nome completo di una colonna è il nome della tabella, seguito dal nome della colonna tra parentesi quadre, ad esempio 'U.S. Sales'[Products]. Un nome completo è sempre obbligatorio quando si fa riferimento a una colonna nei seguenti contesti:
Come argomento della funzione, VALUES.
Come argomento delle funzioni, ALL o ALLEXCEPT
In un argomento di filtro per le funzioni, CALCULATE o CALCULATETABLE
Come argomento della funzione, RELATEDTABLE
Come argomento in qualsiasi funzione di Business Intelligence per le gerarchie temporali
Un nome di colonna non qualificato è semplicemente il nome della colonna, racchiuso tra parentesi, ad esempio [Sales Amount]. Quando si fa riferimento ad esempio a un valore scalare dalla stessa riga della tabella corrente, si può utilizzare il nome di colonna non qualificato.
Se nel nome di una tabella sono presenti spazi, parole chiave riservate o caratteri non consentiti, è necessario racchiuderlo tra virgolette singole. I nomi delle tabelle devono essere racchiusi tra virgolette anche se nel nome sono presenti caratteri che non fanno parte dell'intervallo di caratteri alfanumerico ANSI, indipendentemente dal fatto che le impostazioni locali supportino il set di caratteri. Ad esempio se si apre una cartella di lavoro contenente nomi di tabelle scritti in caratteri cirillici, ad esempio 'Таблица', il nome della tabella deve essere racchiuso tra virgolette, anche se non contiene spazi.
Nota
Per semplificare l'immissione di nomi completi di colonne, è consigliabile utilizzare la caratteristica Completamento automatico formule nel client.
Tabelle
I nomi delle tabelle sono necessari ogni volta che la colonna è inclusa in una tabella diversa da quella 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 qualsiasi carattere alfanumerico non inglese.
Misure
I nomi delle misure devono essere sempre racchiusi tra parentesi.
I nomi delle misure possono contenere spazi.
Ogni nome di misura deve essere univoco all'interno di un database. Il nome della tabella è pertanto facoltativo davanti a un nome di misura quando si fa riferimento a una misura esistente. Quando tuttavia si crea una misura, è necessario specificare sempre una tabella in cui verrà archiviata la definizione della misura.
Colonne
I nomi delle colonne devono essere univoci nel contesto di una tabella; tuttavia, più tabelle possono disporre di colonne con gli stessi nomi (la risoluzione dell'ambiguità proviene dal nome di tabella).
In generale, può essere fatto riferimento alle colonne senza fare riferimento alla tabella di base alla quale appartengono, salvo in presenza di un eventuale conflitto di nomi da risolvere o con determinate funzioni che richiedono nomi di colonne completi.
Parole chiave riservate
Se il nome utilizzato per una tabella corrisponde a una parola chiave riservata di Analysis Services, viene generato un errore ed è necessario rinominare la tabella. È tuttavia possibile utilizzare parole chiave nei nomi degli oggetti se tali nomi vengono racchiusi tra parentesi (per le colonne) o tra virgolette (per le tabelle).
Nota
Si noti che le virgolette possono essere rappresentate da molti caratteri diversi, a seconda dell'applicazione. Se si incollano formule da un documento esterno o una pagina Web, assicurarsi di controllare il codice ASCII del carattere utilizzato per le virgolette di apertura e chiusura per verificare che siano uguali. In caso contrario, DAX potrebbe non essere in grado di riconoscere i simboli come virgolette, rendendo non valido il riferimento.
Caratteri speciali
I caratteri e i tipi di carattere seguenti non sono validi in nomi di tabelle, colonne o misure:
Spazi iniziali o finali; a meno che gli spazi non siano racchiusi tra delimitatori di nomi, parentesi o apostrofi singoli.
Caratteri di controllo
I caratteri seguenti che non sono validi nei nomi di oggetti PowerPivot:
.,;':/\*|?&%$!+=()[]{}<>
Esempi di nomi degli oggetti
Nella tabella seguente sono illustrati esempi di nomi di oggetti:
Tipi di oggetti |
Esempi |
Commento |
Nome tabella |
Sales |
Se il nome della tabella non contiene spazi o altri caratteri speciali, non deve essere racchiuso tra virgolette. |
Nome tabella |
'Canada Sales' |
Se nel nome sono presenti spazi, tabulazioni o altri caratteri speciali, racchiuderlo tra virgolette singole. |
Nome di colonna completo |
Sales[Amount] |
Il nome della tabella precede quello della colonna e il nome della colonna è racchiuso tra parentesi. |
Nome di misura completo |
Sales[Profit] |
Il nome della tabella precede quello della misura e il nome della misura è racchiuso tra parentesi. In determinati contesti, un nome completo è sempre obbligatorio. |
Nome di colonna non qualificato |
[Amount] |
Il nome non qualificato è il solo nome della colonna, in parentesi. I contesti in cui è possibile utilizzare il nome non qualificato includono formule in una colonna calcolata all'interno della stessa tabella o in una funzione di aggregazione che esegue la scansione nella stessa tabella. |
Nome di colonna completo in una tabella con spazi |
‘Canada Sales’[Qty] |
Il nome della tabella contiene spazi, pertanto deve essere racchiuso tra virgolette singole. |
Nota
Per semplificare l'immissione di nomi completi di colonne, è consigliabile utilizzare la caratteristica Completamento automatico formule durante la compilazione delle formule. Per ulteriori informazioni, vedere Compilare formule per i calcoli.
Restrizioni varie
La sintassi richiesta per ogni funzione e il tipo di operazione che è possibile eseguire variano notevolmente a seconda della funzione. In generale, tuttavia, le regole seguenti si applicano a tutte le formule e le espressioni:
Tramite formule ed espressioni DAX non è possibile modificare o inserire singoli valori nelle tabelle.
Non è possibile creare righe calcolate tramite DAX. È possibile creare solo colonne e misure calcolate.
Quando si definiscono colonne calcolate, è possibile nidificare le funzioni a qualsiasi livello.
In DAX sono presenti numerose funzioni che restituiscono una tabella. In genere, i valori restituiti da queste funzioni vengono utilizzati come input per altre funzioni che richiedono una tabella come input.
Funzioni in DAX
In DAX sono disponibili i tipi di funzioni seguenti.
Operatori e costanti DAX
Nella tabella seguente sono elencati gli operatori supportati da DAX. In generale, gli operatori in DAX hanno un comportamento analogo a quello in Microsoft Excel, con alcune piccole eccezioni. Per ulteriori informazioni sulla sintassi dei singoli operatori, vedere Guida di riferimento agli operatori DAX per PowerPivot.
Tipo di operatore |
Simbolo e utilizzo |
---|---|
Operatore parentesi |
() ordine di precedenza e raggruppamento di argomenti |
Operatori aritmetici |
+ (addizione) - (sottrazione/segno) * (moltiplicazione) / (divisione) ^ (elevamento a potenza) |
Operatori di confronto |
= (uguale a) > (maggiore di) < (minore di) >= (maggiore o uguale a) <= (minore o uguale a) <> (diverso da) |
Operatore di concatenazione del testo |
& (concatenazione) |
Operatori logici |
&& (e) || (o) |
Tipi di dati in DAX
Non è necessario eseguire il cast o la conversione oppure specificare in altro modo il tipo di dati di una colonna o un valore utilizzato in una formula DAX. Quando si utilizzano dati in una formula DAX, i tipi di dati nelle colonne a cui si fa riferimento e dei valori digitati vengono identificati automaticamente da DAX e, quando necessario, vengono eseguite conversioni implicite per consentire il completamento dell'operazione specificata.
Se, ad esempio, si tenta di aggiungere un numero a un valore di data, in PowerPivot l'operazione viene interpretata nel contesto della funzione e, come in Excel, i numeri vengono convertiti in un tipo di dati comune, quindi il risultato viene visualizzato nel formato previsto, ovvero una data.
Vi sono tuttavia alcune limitazioni relative ai valori che è possibile convertire correttamente. Se il tipo di dati di un valore o di una colonna non è compatibile con l'operazione corrente, viene restituito un errore da DAX. DAX non fornisce inoltre funzioni che consentono di eseguire il cast, convertire o modificare in modo esplicito il tipo di dati esistenti di cui è stata eseguita l'importazione in una cartella di lavoro di PowerPivot.
Importante |
---|
PowerPivot non supporta l'utilizzo del tipo di dati Variant utilizzato in Excel. Quando si caricano o si importano dati, si presuppone pertanto che i dati di ogni colonna siano, in genere, di tipo coerente. |
Alcune funzioni restituiscono valori scalari, incluse stringhe, mentre altre funzioni utilizzano numeri, sia interi che reali, oppure date e ore. Il tipo di dati richiesto per ogni funzione è descritto nella sezione Guida di riferimento alle funzioni DAX per PowerPivot.
Le tabelle rappresentano un nuovo tipo di dati in PowerPivot. È possibile utilizzare tabelle che contengono più colonne e più righe di dati come argomento di una funzione. Alcune funzioni restituiscono inoltre tabelle, che vengono archiviate in memoria e possono essere utilizzate come argomenti di altre funzioni.
Per ulteriori informazioni sui diversi tipi di dati numerici e di data/ora e per informazioni dettagliate sulla gestione di stringhe Null e vuote, vedere Tipi di dati supportati nelle cartelle di lavoro di PowerPivot.