Tipi e conversione dei tipi
Power Query M usa i tipi per classificare i valori per avere un set di dati più strutturato. Questo articolo descrive i tipi M più usati e come convertire un tipo in un altro tipo.
Tipi comunemente usati
I tipi di dati fanno riferimento a qualsiasi tipo usato per chiarire la struttura di dati specifici. I tipi di dati usati più comunemente sono tipi primitivi. Questi tipi includono:
-
type any
, che classifica qualsiasi valore. -
type null
, che classifica il valore Null. -
type logical
, che classifica i valori true e false. -
type number
, che classifica i valori numerici. -
type time
, che classifica i valori temporali. -
type date
, che classifica i valori di data. -
type datetime
, che classifica i valori di data e ora. -
type datetimezone
, che classifica i valori di data e ora con fuso orario. -
type duration
, che classifica i valori di durata. -
type text
, che classifica i valori di testo. -
type binary
, che classifica i valori binari. -
type type
, che classifica i tipi di valori. -
type list
, che classifica i valori dell'elenco. -
type record
, che classifica i valori dei record. -
type table
, che classifica i valori della tabella. -
type function
, che classifica i valori della funzione. -
type anynonnull
, che classifica tutti i valori esclusi null. -
type none
, che non classifica alcun valore.
Per altre informazioni su questi tipi, vedere Tipi.
Oltre a questi tipi di dati comuni, è disponibile anche un set di tipi di dati che usano il formato *.Type
. I tipi di dati usati più di frequente di questo formato sono:
-
Byte.Type
, che classifica un valore numerico a 8 bit. -
Int8.Type
, che classifica un valore numerico a 8 bit. -
Int16.Type
, che classifica un valore numerico a 16 bit. -
Int32.Type
, che classifica un valore numerico a 32 bit. -
Int64.Type
, che classifica un valore numerico a 64 bit. -
Single.Type
, che classifica un valore numerico mobile a 9 cifre. -
Double.Type
, che classifica un valore numerico mobile a 17 cifre. -
Decimal.Type
, che classifica un valore numerico mobile a 15 cifre. -
Currency.Type
, che classifica un valore numerico a 19 cifre con quattro cifre a destra del separatore ".". -
Percentage.Type
, che classifica un valore numerico a 15 cifre con una maschera per formattare il valore come percentuale. -
Guid.Type
, che classifica un valore di testo GUID.
I tipi primitivi possono anche essere scritti nel formato *.Type
. Pertanto, è possibile scrivere number
come Number.Type
, record
come Record.Type
e così via.
Quando si usa uno di questi tipi, tenere presente che, come tutto il codice M, questi tipi fanno distinzione tra maiuscole e minuscole.
La tabella seguente contiene altre informazioni su ognuno di questi tipi.
Tipo di dati | Descrizione |
---|---|
any |
Il tipo di dati any è specificato come stato quando un valore non ha una definizione esplicita del tipo di dati. Il tipo any è il tipo di dati che classifica tutti i valori. |
binary |
Il tipo di dati binary può essere usato per rappresentare qualsiasi altro dato con un formato binario. |
type |
Valore che classifica altri valori. Per ulteriori informazioni, consultare Tipi. |
null |
Rappresenta l'assenza di un valore o un valore di stato indeterminato o sconosciuto. |
anynonnull |
Rappresenta qualsiasi tipo non annullabile. |
date |
Rappresenta solo una data (senza l'elemento temporale). |
time |
Rappresenta solo l'ora (senza la parte relativa alla data). |
datetime |
Rappresenta sia un valore di data sia di ora. La parte relativa all'ora di una data viene archiviata come frazione di multipli interi di 1/300 di secondo (3,33 ms). Sono supportate le date comprese tra gli anni 1900 e 9999. |
datetimezone |
Rappresenta una data e un'ora UTC con una differenza di fuso orario. |
duration |
Rappresenta un intervallo di tempo. Questo tipo può essere aggiunto o sottratto da un campo datetime con risultati corretti. Per altre informazioni, vedere Durata. |
text |
Stringa di dati di tipo carattere Unicode. Può essere costituito da stringhe, numeri o date rappresentate in formato testo. La lunghezza massima della stringa è di 268.435.456 caratteri Unicode (dove ogni carattere Unicode è di due byte) o 536.870.912 byte. |
logical |
Valore booleano di true o di false . |
list |
Valore che produce una sequenza di valori durante l'enumerazione. Per ulteriori informazioni, vedere Tipi di lista e Valori di lista. |
record |
Sequenza ordinata di campi. Ogni campo contiene un nome di campo e un valore di campo. Per altre informazioni, consultare Tipi di record e Valori record. |
table |
Sequenza ordinata di righe suddivise in colonne. Per ulteriori informazioni, vedere i Tipi di tabella e i Valori della tabella. |
function |
Valore che mappa un set di argomenti a un singolo valore. Per maggiori informazioni, consultare Funzioni e Tipi di funzione. |
number |
Rappresenta un numero qualsiasi utilizzato per operazioni numeriche e aritmetiche. Per altre informazioni, vedere Numero. |
Decimal.Type |
Un numero in virgola mobile a 64 bit (otto byte) è rappresentato. È il tipo di numero più comune e corrisponde ai numeri, come si pensa di solito. Anche se progettato per gestire i numeri con valori frazionari, gestisce anche numeri interi. Il Decimal.Type può gestire valori negativi da –1,79E +308 a –2,23E –308, 0 e valori positivi da 2,23E -308 a 1,79E + 308. Ad esempio, i numeri come 34, 34.01 e 34.000367063 sono numeri decimali validi. La massima precisione che può essere rappresentata in un Decimal.Type è di 15 cifre. Il separatore decimale può verificarsi in qualsiasi punto del numero. Il Decimal.Type corrisponde alla modalità di archiviazione dei numeri di Excel. Si noti che un numero a virgola mobile binaria non può rappresentare tutti i numeri all'interno dell'intervallo supportato con 100% accuratezza. Di conseguenza, possono verificarsi piccole differenze di precisione quando si rappresentano determinati numeri decimali. |
Currency.Type |
Questo tipo di dati ha una posizione fissa per il separatore decimale. Il separatore decimale ha sempre quattro cifre a destra e consente 19 cifre di significato. Il valore più grande che può rappresentare è 922.337.203.685.477.5807 (positivo o negativo). A differenza di Decimal.Type , il Currency.Type è sempre preciso ed è quindi utile nei casi in cui l'imprecisione della notazione a virgola mobile potrebbe introdurre errori. |
Percentage.Type |
Fondamentalmente uguale a un Decimal.Type , ma ha una maschera per formattare i valori come valore percentuale. |
Int8.Type |
Rappresenta un valore intero con segno a 8 bit (un byte). Poiché si tratta di un numero intero, non ha cifre a destra della posizione decimale. Consente 3 cifre; un numero intero positivo o negativo compreso tra -128 e 127. Come per il Currency.Type , il Int8.Type può essere utile all'occorrenza in cui è necessario controllare l'arrotondamento. |
Int16.Type |
Rappresenta un valore intero con segno a 16 bit (a due byte). Poiché si tratta di un numero intero, non ha cifre a destra della posizione decimale. Consente 6 cifre; numero intero positivo o negativo compreso tra –32.768 (–2^15) e 32.767 (2^15-1). Come per il Currency.Type , il Int16.Type può essere utile all'occorrenza in cui è necessario controllare l'arrotondamento. |
Int32.Type |
Rappresenta un valore intero con segno a 32 bit (a quattro byte). Poiché si tratta di un numero intero, non ha cifre a destra della posizione decimale. Consente 10 cifre; numero intero positivo o negativo compreso tra –2.147.483.648 (–2^31) e 2.147.483.647 (2^31-1). Come per il Currency.Type , il Int32.Type può essere utile all'occorrenza in cui è necessario controllare l'arrotondamento. |
Int64.Type |
Rappresenta un valore intero con segno a 64 bit (otto byte). Poiché si tratta di un numero intero, non ha cifre a destra della posizione decimale. Consente 19 cifre; numero intero positivo o negativo compreso tra –9.223.372.036.854.775.808 (–2^63) e 9.223.372.036.854.775.807 (2^63-1). Può rappresentare la massima precisione possibile dei vari tipi di dati numerici. Come per il Currency.Type , il Int64.Type può essere utile all'occorrenza in cui è necessario controllare l'arrotondamento. |
Byte.Type |
Rappresenta un valore intero senza segno a 8 bit (un byte). Poiché si tratta di un intero senza segno, non ha cifre a destra della posizione decimale e può contenere solo valori positivi. Consente 3 cifre; un numero positivo compreso tra 0 e 255. |
Single.Type |
Rappresenta un numero a virgola mobile a precisione singola. Ha un intervallo approssimativo da –3,99 X 1038 a 3,99 X 1038 e offre circa 9 cifre di precisione. Può anche rappresentare un infinito positivo e negativo e NaN (Non un numero). |
Double.Type |
Rappresenta un numero in virgola mobile a doppia precisione. Ha un intervallo approssimativo di –1,7976931348623158 X 10307 a 1,7976931348623158 X 10307 e supporta circa 17 cifre di precisione. Può anche rappresentare un infinito positivo e negativo e NaN (Non un numero). |
Guid.Type |
Rappresenta un valore di testo a 128 bit costituito da 32 valori esadecimali usando il fattore di forma di <8 valori esadecimali>-<4 valori esadecimali>-<4 valori esadecimali>-<4 valori esadecimali>-<12 valori esadecimali>, che costituiscono il valore GUID. |
none |
Il tipo di dato che non classifica alcun valore. |
Gli unici valori di *.Type
comunemente usati sono enumerazioni. Per ulteriori informazioni, vedere Enumerazioni.
Conversione di tipo
Il linguaggio delle formule M di Power Query include formule per la conversione tra tipi. Di seguito è riportato un riepilogo delle formule di conversione in M.
Numero
Conversione di tipo | Descrizione |
---|---|
Number.FromText(testo come testo) come numero | Restituisce un valore numerico da un valore di testo. |
Number.ToText(numero come numero) come testo scritto | Restituisce un valore di testo da un valore numerico. |
Number.From(valore qualsiasi) come numero | Restituisce un valore numerico da un valore. |
Byte.From(valore qualsiasi) come numero | Restituisce un valore intero a 8 bit dal valore specificato. |
Int8.From(valore qualsiasi) come numero | Restituisce un valore intero a 8 bit dal valore specificato. |
Int16.From(valore qualsiasi) come numero | Restituisce un valore intero a 16 bit dal valore specificato. |
Int32.From(valore qualsiasi) come numero | Restituisce un valore intero a 32 bit dal valore specificato. |
Int64.From(valore qualsiasi) come numero | Restituisce un valore intero a 64 bit dal valore specificato. |
Single.From(valore qualsiasi) come numero | Restituisce un valore numerico Single dal valore specificato. |
Double.From(valore qualsiasi) come numero | Restituisce un valore numerico Double dal valore specificato. |
Decimal.From(valore qualsiasi) come numero | Restituisce un valore numerico Decimal dal valore specificato. |
Currency.From(valore qualsiasi) come numero | Restituisce un valore numerico Currency dal valore specificato. |
Percentage.From(valore qualsiasi) come numero | Restituisce un valore Di numero percentuale dal valore specificato. |
Testo
Conversione di tipo | Descrizione |
---|---|
Text.From(valore qualsiasi) come testo | Restituisce la rappresentazione testuale di un valore number, date, time, datetime, datetimezone, logical, duration o binary. |
Guid.From(valore come testo) come testo | Restituisce la rappresentazione GUID del testo specificato. |
Logico
Conversione di tipo | Descrizione |
---|---|
Logical.FromText(testo come testo) come logico | Restituisce un valore logico true o false da un valore di testo. |
Logical.ToText(logicamente) come testo | Restituisce un valore di testo da un valore logico. |
Logical.From(valore come qualsiasi) come logico | Restituisce un valore logico da un valore. |
Date, Time, DateTime e DateTimeZone
Conversione di tipo | Descrizione |
---|---|
.FromText(text as text) as date, time, datetime, or datetimezone | Restituisce un valore date, time, datetime o datetimezone da un set di formati di data e di un valore di impostazioni cultura. |
. ToText(date, time, dateTime o dateTimeZone come date, time, datetime o datetimezone) come testo | Restituisce un valore di testo da un valore date, time, datetime o datetimezone. |
.From(value as any) | Restituisce un valore date, time, datetime o datetimezone da un valore. |
.ToRecord(date, time, dateTime, or dateTimeZone as date, time, datetime, or datetimezone) | Restituisce un record contenente parti di un valore date, time, datetime o datetimezone. |