Tipi di dati supportati nei modelli tabulari
Si applica a: SQL Server Analysis Services Azure Analysis Services
Fabric/Power BI Premium
In questo articolo vengono descritti i tipi di dati che possono essere utilizzati nei modelli tabulari e viene illustrata la conversione implicita dei tipi di dati quando i dati vengono calcolati o utilizzati in una formula DAX (Data Analysis Expressions).
Tipi di dati usati nei modelli tabulari
Quando si importano i dati o si utilizza un valore in una formula, anche se nell'origine dati originale è contenuto un tipo di dati diverso, viene eseguita la conversione dei dati in uno dei tipi seguenti. Anche per i valori risultanti dalle formule vengono utilizzati questi tipi di dati.
In generale, questi tipi di dati vengono implementati per consentire l'esecuzione di calcoli accurati nelle colonne calcolate e le stesse restrizioni si applicano al resto dei dati nei modelli per garantire coerenza.
I formati utilizzati per i numeri, la valuta, le date e le ore devono seguire il formato delle impostazioni locali specificato nel client in uso per l'utilizzo dei dati del modello. È possibile utilizzare le opzioni di formattazione nel modello per controllare la modalità di visualizzazione del valore.
Tipo di dati nel modello | Tipi di dati in DAX | Descrizione |
---|---|---|
Numero intero | Valore intero a 64 bit (otto byte)* Nota: Le formule DAX non supportano i tipi di dati troppo piccoli per contenere il valore minimo indicato nella descrizione. |
Numeri senza cifre decimali. I numeri interi possono essere numeri positivi o negativi, ma devono essere numeri interi compresi tra -9.223.372.036.854.775.807 (-2^63+1) e 9.223.372.036.854.775.806 (2^63-2). |
Numero decimale | Numero reale a 64 bit (otto byte)* Nota: Le formule DAX non supportano i tipi di dati troppo piccoli per contenere il valore minimo indicato nella descrizione. |
I numeri reali sono numeri che possono avere cifre decimali e coprono un ampio intervallo 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. |
Boolean | Boolean | Valore True o False. |
Testo | Stringa | Stringa di dati di tipo carattere Unicode. Può trattatasi di stringhe, numeri o date rappresentati in un formato di testo. |
Data | Data/ora | Date e ore in una rappresentazione di data e ora valida. Le date valide sono tutte le date successive al 1 marzo del 1900. |
Valuta | Valuta | Il tipo di dati Currency consente valori compresi tra -922.337.203.685.477.5807 e 922.337.203.685.477.5806 con quattro cifre decimali di precisione fissa. |
N/D | Vuoto | 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. |
* Se si tenta di importare dati con valori numerici di grandi dimensioni, l'importazione potrebbe non riuscire con l'errore seguente:
Errore del database in memoria: la colonna '<column name' della tabella '<table name>>' contiene un valore, '1.7976931348623157e+308', che non è supportato. L'operazione è stata annullata.
Questo errore si verifica perché in Progettazione modelli viene utilizzato questo valore per rappresentare valori Null. I valori nell'elenco seguente sono sinonimi del già menzionato valore Null:
Valore |
---|
9223372036854775807 |
-9223372036854775808 |
1,7976931348623158e+308 |
-1.7976931348623158e+308 |
Rimuovere il valore dai dati e riprovare a eseguire l'importazione.
Nota
Non è possibile importare da una colonna varchar(max) con una lunghezza di stringa superiore a 131.072 caratteri.
Tipo di dati tabella
In DAX viene inoltre usato un tipo di dati table . Questo tipo di dati viene utilizzato da DAX in numerose funzioni, ad esempio aggregazioni e calcoli della funzionalità di Business Intelligence per le gerarchie temporali. Alcune funzioni richiedono un riferimento a una tabella, mentre altre 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 Riferimento alle funzioni DAX.
Conversione implicita ed esplicita dei tipi di dati nelle formule DAX
Ogni funzione DAX prevede requisiti specifici relativi ai tipi di dati usati come input e output. Alcune funzioni, ad esempio, richiedono numeri interi per determinati argomenti e date per altri. 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, DAX in molti casi restituisce un errore. Tuttavia, laddove possibile, DAX tenta di convertire in modo implicito i dati nel tipo di dati richiesto. Ad esempio:
È possibile digitare un numero, ad esempio "123", come stringa. DAX analizza la stringa e tenta di specificarla come tipo di dati numerico.
È 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), DAX converte la stringa in modo implicito in un numero e quindi esegue la somma per ottenere un risultato numerico. L'espressione seguente restituisce 44: = "22" + 22
Se si tenta di concatenare due numeri, vengono presentati come stringhe e quindi concatenati. L'espressione seguente restituisce "1234": = 12 & 34
Nella tabella seguente vengono riepilogate le conversioni implicite dei tipi di dati eseguite nelle formule. In generale, il comportamento della progettazione dei modelli semantici è analogo a quello di Microsoft Excel, in quanto vengono eseguite conversioni implicite ogni volta che è possibile, quando necessario per l'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. Queste tabelle elencano gli operatori e indicano 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 come in un formato di testo, in alcuni casi, progettazione modelli tenta di determinare il tipo di numero e di rappresentarlo come numero.
Addizione (+)
INTEGER | CURRENCY | REAL | Data/Ora | |
---|---|---|---|---|
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 | Data/Ora |
Se, ad esempio, in un'operazione di addizione viene usato 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 della riga è minuend (lato sinistro) e l'intestazione di colonna è il sottrazione (lato destro):
INTEGER | CURRENCY | REAL | Data/Ora | |
---|---|---|---|---|
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 usata 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 tabulari supportano inoltre l'operatore unario, - (segno negativo), ma questo operatore non consente di modificare il tipo di dati dell'operando.
Moltiplicazione (*)
INTEGER | CURRENCY | REAL | Data/Ora | |
---|---|---|---|---|
INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
REAL | REAL | CURRENCY | REAL | REAL |
Se, ad esempio, un numero 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 della riga è il numeratore e l'intestazione della colonna è il denominatore: (Riga/Colonna)
INTEGER | CURRENCY | REAL | Data/Ora | |
---|---|---|---|---|
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
È supportato solo un set limitato di combinazioni di tipi di dati misti per le operazioni di confronto. Per altre informazioni, vedere Guida di riferimento agli operatori DAX.
Gestione di valori blank, stringhe vuote e valori zero
Nella tabella seguente vengono riepilogate le differenze tra DAX e In Microsoft Excel, nel modo in cui vengono gestiti gli spazi vuoti:
Espressione | DAX | Excel |
---|---|---|
BLANK + BLANK | BLANK | 0 (zero) |
BLANK +5 | 5 | 5 |
BLANK * 5 | BLANK | 0 (zero) |
5/BLANK | Infinito | Errore |
0/BLANK | NaN | 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 sulla gestione dei valori vuoti da parte di una funzione o un operatore specifico, vedere i singoli argomenti per ogni funzione DAX nella sezione Riferimento alle funzioni DAX.