Condividi tramite


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.Typee 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.