In ogni colonna di un modello di dati è disponibile un tipo di dati associati tramite cui viene specificato il tipo di dati utilizzabile nella colonna: numeri interi, numeri decimali, testo, dati di valuta, date e ore e così via. Tramite il tipo di dati vengono anche determinati i tipi di operazioni che è possibile effettuare nella colonna e la quantità di memoria necessaria per archiviare i valori nella colonna.
Se si usa il componente aggiuntivo Power Pivot, è possibile modificare il tipo di dati di una colonna. Potrebbe essere necessario effettuare questa operazione se una colonna di date è stata importata come stringa, ma anche per altre operazioni. Per altre informazioni, vedere Impostare il tipo di dati di una colonna in Power Pivot.
In questo articolo
Riepilogo dei tipi di dati
Nella tabella seguente sono elencati i tipi di dati supportati in un modello di dati. Quando si importano dati o si utilizza un valore in una formula, anche se nell'origine dati originale è contenuto un tipo di dati diverso, i dati vengono convertiti in uno di questi tipi. Anche per i valori risultanti dalle formule vengono utilizzati questi tipi di dati.
Tipo di dati in Excel |
Tipi di dati in DAX |
Descrizione |
---|---|---|
Numero intero |
Valore intero a 64 bit (otto byte) 1, 2 |
Numeri senza cifre decimali. I numeri interi possono essere positivi o negativi ma devono essere numeri interi compresi tra -9.223.372.036.854.775.808 (-2^63) e 9.223.372.036.854.775.807 (2^63-1). |
Numero decimale |
Numero reale a 64 bit (otto byte) 1, 2 |
I numeri reali sono numeri che possono contenere posizioni decimali. I numeri reali coprono un'ampia gamma di valori: Valori negativi compresi tra -1,79E +308 e -2,23E -308 Zero Valori positivi compresi tra 2,23E -308 e 1,79E + 308 Tuttavia, il numero di cifre significative è limitato a 15 cifre decimali. |
TRUE/FALSE |
Booleano |
Valore True o False. |
Text |
String |
Stringa di dati character Unicode. Può trattarsi di stringhe, numeri o date rappresentati in un formato di testo. La lunghezza massima della stringa è di 268.435.456 caratteri Unicode (256 Mega caratteri) cioè 536.870.912 byte. |
Data |
Data/ora |
Date e ore in una rappresentazione di data e ora valida. Le date valide sono tutte le date successive al 1° gennaio 1900. |
Valuta |
Valuta |
Il tipo di dati valuta consente valori compresi tra -922.337.203.685.477,5808 e 922.337.203.685.477,5807 con quattro cifre decimali di precisione fissa. |
N/D |
Blank |
Un tipo di dati blank in DAX rappresenta e sostituisce i valori Null di SQL. È possibile creare un tipo di dati blank utilizzando la funzione BLANK, nonché verificare la presenza di tipi di dati blank utilizzando la funzione logica ISBLANK. |
1 Le formule DAX non supportano tipi di dati più piccoli di quelli elencati nella tabella.
2 Se si tenta di importare dati in cui sono disponibili valori numerici molto grandi, l'importazione potrebbe non riuscire con l'errore seguente:
Errore del database in memoria: La colonna '<il nome della colonna>' della tabella '<nome della tabella>' contiene un valore, '1.7976931348623157e+308' che non è supportato. L'operazione è stata annullata.
Questo errore si verifica perché in Power Pivot usa questo valore per rappresentare valori Null. I valori nell'elenco seguente sono sinonimi del valore Null:
Valore |
|
---|---|
9223372036854775807 |
|
-9223372036854775808 |
|
1,7976931348623158e+308 |
|
2,2250738585072014e-308 |
Rimuovere il valore dai dati e ritentare l'importazione.
Tipo di dati table
IN DAX viene utilizzato un tipo di dati di tabella in molte funzioni, ad esempio aggregazioni e calcoli di Business Intelligence per le ore. Alcune funzioni richiedono un riferimento a una tabella; altre funzioni restituiscono una tabella che può quindi essere usata come input per altre funzioni. In alcune funzioni che richiedono una tabella come input, è possibile specificare un'espressione che restituisce una tabella; per alcune funzioni, è necessario un riferimento a una tabella di base. Per informazioni sui requisiti di funzioni specifiche, vedere Riferimenti alle funzioni DAX.
Conversione implicita ed esplicita del tipo di dati nelle formule DAX
Ogni funzione DAX ha requisiti specifici per quanto riguarda i tipi di dati usati come input e output. Ad esempio, alcune funzioni richiedono numeri interi per alcuni argomenti e date per altre; altre funzioni richiedono testo o tabelle.
Se i dati nella colonna specificata come argomento non sono compatibili con il tipo di dati richiesto dalla funzione, in molti casi viene restituito un errore da DAX. Quando possibile, tuttavia, in DAX viene eseguito un tentativo di conversione implicita dei dati nel tipo di dati richiesto. Ad esempio:
-
Se si digita una data come stringa, la stringa viene analizzata in DAX e viene fatto un tentativo di eseguirne il cast a uno dei formati di data e ora di Windows.
-
È possibile aggiungere TRUE + 1 e ottenere il risultato 2, in quanto TRUE viene convertito in modo implicito nel numero 1 e viene eseguita l'operazione 1+1.
-
Se si aggiungono valori in due colonne e un valore è rappresentato come testo ("12"), mentre l'altro come numero (12), in DAX la stringa viene convertita in modo implicito in un numero e quindi viene eseguita la somma per ottenere un risultato numerico. Tramite l'espressione seguente viene restituito 44: = "22" + 22
-
Se si tenta di concatenare due numeri, in Excel verranno visualizzati come stringhe e, successivamente, concatenati. Tramite l'espressione seguente viene restituito "1234": = 12 & 34
Nella tabella seguente vengono riepilogate le conversioni implicite dei tipi di dati eseguite nelle formule. Tramite Excel vengono eseguite conversioni implicite ogni volta che è possibile, come richiesto dall'operazione specificata.
Tabella delle conversioni implicite dei dati
Il tipo di conversione eseguito è determinato dall'operatore, che esegue il cast dei valori necessari prima di eseguire l'operazione richiesta. In queste tabelle sono elencati gli operatori e viene indicata la conversione eseguita per ogni tipo di dati nella colonna quando viene abbinato con il tipo di dati nella riga con cui avviene l'intersezione.
Nota: I tipi di dati di testo non sono inclusi in queste tabelle. Quando un numero viene rappresentato in un formato di testo, in alcuni casi Power Pivot tenterà di determinare il tipo di numero e rappresentarlo come numero.
Addizione (+)
Operatore (+) |
INTEGER |
CURRENCY |
REAL |
Date/time |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
Data/ora |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
Data/ora |
REAL |
REAL |
REAL |
REAL |
Data/ora |
Data/ora |
Data/ora |
Data/ora |
Data/ora |
Date/time |
Se, ad esempio, in un'operazione di addizione viene utilizzato un numero reale in combinazione con dati di valuta , entrambi i valori vengono convertiti nel tipo REAL e il risultato viene restituito come tipo REAL.
Sottrazione (-)
Nella tabella seguente l'intestazione di riga rappresenta il minuendo (lato sinistro) mentre l'intestazione di colonna il sottraendo (lato destro).
Operatore (-) |
INTEGER |
CURRENCY |
REAL |
Date/time |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
Data/ora |
Data/ora |
Data/ora |
Data/ora |
Data/ora |
Se, ad esempio, in un'operazione di sottrazione viene utilizzata una data con qualsiasi altro tipo di dati, entrambi i valori vengono convertiti in date e anche il valore restituito è una data.
Nota: I modelli di dati supportano inoltre l'operatore unario, - (segno negativo), ma tramite questo operatore non viene modificato il tipo di dati dell'operando.
Moltiplicazione (*)
Operatore (*) |
INTEGER |
CURRENCY |
REAL |
Date/time |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
INTEGER |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
CURRENCY |
REAL |
REAL |
CURRENCY |
REAL |
REAL |
Se, ad esempio, un intero viene combinato con un numero reale in un'operazione di moltiplicazione, entrambi i numeri vengono convertiti in numeri reali e anche il valore restituito è di tipo REAL.
Divisione (/)
Nella tabella seguente l'intestazione di riga rappresenta il numeratore mentre l'intestazione di colonna il denominatore.
Operatore (/) (Riga/Colonna) |
INTEGER |
CURRENCY |
REAL |
Date/time |
---|---|---|---|---|
INTEGER |
REAL |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
Data/ora |
REAL |
REAL |
REAL |
REAL |
Se, ad esempio, un numero intero viene combinato con un valore di valuta in un'operazione di divisione, entrambi i valori vengono convertiti in numeri reali e anche il risultato è un numero reale.
Operatori di confronto
Nelle espressioni di confronto i valori booleani sono considerati superiori ai valori stringa e i valori stringa superiori ai valori numerici o di data/ora; i numeri e i valori di data/ora vengono considerati dello stesso rango. Non viene eseguita alcuna conversione implicita per i valori booleani o di stringa; BLANK o un valore blank viene convertito in 0/""/false a seconda del tipo di dati dell'altro valore confrontato.
Nelle espressioni DAX seguenti viene illustrato questo comportamento:
=IF(FALSE()>"true","Expression is true", "Expression is false"), restituisce "Expression is true"
=IF("12">12,"Expression is true", "Expression is false"), restituisce "Expression is true".
=IF("12"=12,"Expression is true", "Expression is false"), restituisce "Expression is false"
Le conversioni vengono eseguite in modo implicito per i tipi numerici o di data/ora come descritto nella tabella seguente:
Operatore di confronto |
INTEGER |
CURRENCY |
REAL |
Date/time |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
Data/ora |
REAL |
REAL |
REAL |
Data/ora |
Gestione di valori vuoti, stringhe vuote e valori zero
In DAX un valore Null, un valore vuoto, una cella vuota o un valore mancante sono tutti rappresentati dallo stesso nuovo tipo di valore, cioè BLANK. È inoltre possibile generare tipi blank utilizzando la funzione BLANK, nonché verificare la presenza di tipi blank utilizzando la funzione ISBLANK.
La modalità di gestione dei tipi di dati blank nelle operazioni, ad esempio addizione o concatenazione, dipende dalla singola funzione. Nella tabella seguente vengono riepilogate le differenze tra le formule DAX e di Microsoft Excel per quanto riguarda la gestione dei valori vuoti.
Espressione |
DAX |
Excel |
---|---|---|
BLANK + BLANK |
BLANK |
0 (zero) |
BLANK +5 |
5 |
5 |
BLANK * 5 |
BLANK |
0 (zero) |
5/BLANK |
Infinito |
Errore |
0/BLANK |
Non un numero (NaN, Not a Number) |
Errore |
BLANK/BLANK |
BLANK |
Errore |
FALSE OR BLANK |
FALSE |
FALSE |
FALSE AND BLANK |
FALSE |
FALSE |
TRUE OR BLANK |
TRUE |
TRUE |
TRUE AND BLANK |
FALSE |
TRUE |
BLANK OR BLANK |
BLANK |
Errore |
BLANK AND BLANK |
BLANK |
Errore |
Per informazioni dettagliate sul modo in cui una determinata funzione o un operatore gestisce gli spazi vuoti, vedere i singoli argomenti per ogni funzione DAX nella sezione Riferimenti alle funzioni DAX.