Compartilhar via


Tipos e conversão de tipo

O Power Query M usa tipos para classificar valores para ter um conjunto de dados mais estruturado. Este artigo descreve os tipos M mais usados e como converter um tipo em outro tipo.

Tipos comumente usados

Tipos de dados referem-se a qualquer tipo usado para esclarecer a estrutura de dados específicos. Os tipos de dados mais usados são tipos primitivos. Esses tipos incluem:

  • type any, que classifica qualquer valor.
  • type null, que classifica o valor nulo.
  • type logical, que classifica os valores true e false.
  • type number, que classifica valores numéricos.
  • type time, que classifica valores de tempo.
  • type date, que classifica valores de data.
  • type datetime, que classifica valores de datetime.
  • type datetimezone, que classifica valores de datetimezone.
  • type duration, que classifica valores de duração.
  • type text, que classifica valores de texto.
  • type binary, que classifica valores binários.
  • type type, que classifica valores de tipo.
  • type list, que classifica valores de lista.
  • type record, que classifica valores de registro.
  • type table, que classifica valores de tabela.
  • type function, que classifica valores de função.
  • type anynonnull, que classifica todos os valores, exceto por nulo.
  • type none, que classifica nenhum valor.

Para obter mais informações sobre esses tipos, acesse Tipos.

Além desses tipos de dados comuns, também há um conjunto de tipos de dados usando o formato *.Type. Os tipos de dados mais usados desse formato são:

  • Byte.Type, que classifica um valor numérico de 8 bits.
  • Int8.Type, que classifica um valor numérico de 8 bits.
  • Int16.Type, que classifica um valor numérico de 16 bits.
  • Int32.Type, que classifica um valor numérico de 32 bits.
  • Int64.Type, que classifica um valor numérico de 64 bits.
  • Single.Type, que classifica um valor de número flutuante de 9 dígitos.
  • Double.Type, que classifica um valor de número flutuante de 17 dígitos.
  • Decimal.Type, que classifica um valor de número flutuante de 15 dígitos.
  • Currency.Type, que classifica um valor numérico de 19 dígitos com quatro dígitos à direita do separador ".".
  • Percentage.Type, que classifica um valor numérico de 15 dígitos com uma máscara para formatar o valor como uma porcentagem.
  • Guid.Type, que classifica um valor de texto GUID.

Os tipos primitivos também podem ser gravados no *.Type formato. Portanto, você pode escrever number como Number.Type, record como Record.Type, e assim por diante.

Ao usar qualquer um desses tipos, lembre-se de que, como todos os códigos M, esses tipos diferenciam maiúsculas de minúsculas.

A tabela a seguir contém mais informações sobre cada um desses tipos.

Tipo de dados Descrição
any O any tipo de dados é o status fornecido quando um valor não tem uma definição de tipo de dados explícita. O any tipo é o tipo de dados que classifica todos os valores.
binary O binary tipo de dados pode ser usado para representar outros dados com um formato binário.
type Um valor que classifica outros valores. Para obter mais informações, acesse Tipos.
null Representa a ausência de um valor ou um valor de estado indeterminado ou desconhecido.
anynonnull Representa qualquer tipo que não seja anulável.
date Representa apenas uma data (sem parte de hora).
time Representa apenas a hora (nenhuma parte da data).
datetime Representa um valor de data e hora. A parte de tempo de uma data é armazenada como uma fração para múltiplos inteiros de 1/300 segundos (3,33 ms). Há suporte para datas entre os anos 1900 e 9999.
datetimezone Representa uma data e hora UTC com um deslocamento de fuso horário.
duration Representa um período de tempo. Esse tipo pode ser adicionado ou subtraído de um datetime campo com resultados corretos. Para obter mais informações, acesse Duração.
text Uma cadeia de dados de caractere Unicode. Pode ser cadeias de caracteres, números ou datas representadas em um formato de texto. O comprimento máximo da cadeia de caracteres é de 268.435.456 caracteres Unicode (em que cada caractere Unicode é de dois bytes) ou 536.870.912 bytes.
logical Um valor booliano de ou truefalse.
list Um valor que produz uma sequência de valores quando enumerado. Para obter mais informações, acesse tipos de lista e valores de lista.
record Uma sequência ordenada de campos. Cada campo contém um nome de campo e um valor de campo. Para obter mais informações, acesse tipos de registro e valores de registro.
table Uma sequência ordenada de linhas divididas em colunas. Para obter mais informações, acesse tipos de tabela e valores de tabela.
function Um valor que mapeia um conjunto de argumentos para um único valor. Para obter mais informações, vá para funções e tipos de função.
number Representa qualquer número usado para operações numéricas e aritméticas. Para obter mais informações, vá para Número.
Decimal.Type Representa um número de ponto flutuante de 64 bits (oito bytes). É o tipo de número mais comum e corresponde a números como você costuma pensar neles. Embora projetado para lidar com números com valores fracionários, ele também manipula números inteiros. Ele Decimal.Type pode lidar com valores negativos de –1,79E +308 a –2,23E –308, 0 e valores positivos de 2,23E –308 a 1,79E + 308. Por exemplo, números como 34, 34,01 e 34,000367063 são números decimais válidos. A maior precisão que pode ser representada em um Decimal.Type tem 15 dígitos. O separador decimal pode ocorrer em qualquer lugar no número. Corresponde Decimal.Type a como o Excel armazena seus números. Observe que um número de ponto flutuante binário não pode representar todos os números em seu intervalo com suporte com 100% precisão. Portanto, pequenas diferenças na precisão podem ocorrer ao representar determinados números decimais.
Currency.Type Esse tipo de dados tem um local fixo para o separador decimal. O separador decimal sempre tem quatro dígitos à direita e permite 19 dígitos de significância. O maior valor que ele pode representar é 922.337.203.685.477.5807 (positivo ou negativo). Ao contrário Decimal.Typede , o Currency.Type é sempre preciso e, portanto, é útil em casos em que a imprecisão da notação de ponto flutuante pode introduzir erros.
Percentage.Type Fundamentalmente o mesmo que um Decimal.Type, mas ele tem uma máscara para formatar os valores como um valor percentual.
Int8.Type Representa um valor inteiro com sinal de 8 bits (um byte). Como é um inteiro, não tem dígitos à direita do local decimal. Ele permite três dígitos; um número inteiro positivo ou negativo entre –128 e 127. Assim como acontece com o Currency.TypeInt8.Type . pode ser útil em casos em que você precisa controlar o arredondamento.
Int16.Type Representa um valor inteiro com sinal de 16 bits (dois bytes). Como é um inteiro, não tem dígitos à direita do local decimal. Ele permite seis dígitos; um número inteiro positivo ou negativo entre –32.768 (–2^15) e 32.767 (2^15-1). Assim como acontece com o Currency.TypeInt16.Type . pode ser útil em casos em que você precisa controlar o arredondamento.
Int32.Type Representa um valor inteiro com sinal de 32 bits (quatro bytes). Como é um inteiro, não tem dígitos à direita do local decimal. Ele permite 10 dígitos; um número inteiro positivo ou negativo entre –2.147.483.648 (–2^31) e 2.147.483.647 (2^31–1). Assim como acontece com o Currency.TypeInt32.Type . pode ser útil em casos em que você precisa controlar o arredondamento.
Int64.Type Representa um valor inteiro com sinal de 64 bits (oito bytes). Como é um inteiro, não tem dígitos à direita do local decimal. Ele permite 19 dígitos; um número inteiro positivo ou negativo entre –9.223.372.036.854.775.808 (–2^63) e 9.223.372.036.854.775.807 (2^63–1). Ele pode representar a maior precisão possível dos vários tipos de dados numéricos. Assim como acontece com o Currency.TypeInt64.Type . pode ser útil em casos em que você precisa controlar o arredondamento.
Byte.Type Representa um valor inteiro sem sinal de 8 bits (um byte). Como é um inteiro sem sinal, ele não tem dígitos à direita do local decimal e só pode conter valores positivos. Ele permite três dígitos; um número positivo entre 0 e 255.
Single.Type Representa um número de ponto flutuante de precisão única. Ele tem um intervalo aproximado de –3,99 X 1038 a 3,99 X 1038 e dá suporte a aproximadamente 9 dígitos de precisão. Ele também pode representar infinito positivo e negativo e NaN (Não um Número).
Double.Type Representa um número de ponto flutuante de precisão dupla. Ele tem um intervalo aproximado de –1,7976931348623158 X 10307 a 1,7976931348623158 X 10307 e dá suporte a aproximadamente 17 dígitos de precisão. Ele também pode representar infinito positivo e negativo e NaN (Não um Número).
Guid.Type Representa um valor de texto de 128 bits que consiste em 32 valores hexadecimal usando o fator forma de 8 valores> hex-4< hex values-4<> hex values-4<> hex values-12>< hex values>, que compõem o valor GUID.<
none O tipo de dados que não classifica nenhum valor.

Os únicos outros valores comumente usados *.Type são enumerações. Para obter mais informações, vá para Enumerações.

Conversão de tipos

A linguagem de fórmula do Power Query M tem fórmulas para converter entre tipos. A seguir está um resumo de fórmulas de conversão em M.

Número

Conversão de tipos Descrição
Number.FromText(texto como texto) como número Retorna um valor numérico de um valor de texto.
Number.ToText(número como número) como texto Retorna um valor de texto de um valor numérico.
Number.From(valor como qualquer um) como número Retorna um valor numérico de um valor.
Byte.From(valor como qualquer um) como número Retorna um valor numérico de inteiro de 8 bits do valor especificado.
Int8.From(valor como qualquer um) como número Retorna um valor numérico de inteiro de 8 bits do valor especificado.
Int16.From(valor como qualquer um) como número Retorna um valor numérico de inteiro de 16 bits do valor especificado.
Int32.From(valor como qualquer um) como número Retorna um valor numérico de inteiro de 32 bits do valor especificado.
Int64.From(valor como qualquer um) como número Retorna um valor numérico de inteiro de 64 bits do valor especificado.
Single.From(valor como qualquer um) como número Retorna um valor numérico único do valor especificado.
Double.From(valor como qualquer um) como número Retorna um valor de número duplo do valor especificado.
Decimal.From(valor como qualquer um) como número Retorna um valor numérico Decimal do valor especificado.
Currency.From(valor como qualquer um) como número Retorna um valor de número Currency do valor especificado.
Percentage.From(valor como qualquer um) como número Retorna um valor de número de porcentagem do valor fornecido.

Texto

Conversão de tipos Descrição
Text.From(valor como qualquer outro) como texto Retorna a representação de texto de um valor de número, data, time, datetime, datetimezone, lógico, duração ou binário.
Guid.From(valor como texto) como texto Retorna a representação GUID do texto especificado.

Lógico

Conversão de tipos Descrição
Logical.FromText(texto como texto) como lógico Retorna um valor lógico de true ou false de um valor de texto.
Logical.ToText(lógico como lógico) como texto Retorna um valor de texto de um valor lógico.
Logical.From(valor como qualquer um) como lógico Retorna um valor lógico de um valor.

Date, Time, DateTime e DateTimeZone

Conversão de tipos Descrição
.FromText(texto como texto) como date, time, datetime ou datetimezone Retorna um valor de date, time, datetime ou datetimezone de um conjunto de formatos de data e valor de cultura.
. ToText(date, time, dateTime ou dateTimeZone como data, hora, datetime ou datetimezone) como texto Retorna um valor de texto de um valor date, time, datetime ou datetimezone.
. From(value as any) Retorna um valor date, time, datetime ou datetimezone de um valor.
.ToRecord(date, time, dateTime ou dateTimeZone como date, time, datetime ou datetimezone) Retorna um registro que contém partes de um valordate, time, datetime ou datetimezone.