Partilhar via


Tipos e conversão de tipos

O Power Query M utiliza 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 para outro.

Tipos mais 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. Estes tipos incluem:

  • type any, que classifica qualquer valor.
  • type null, que classifica o valor nulo.
  • type logical, que classifica os valores verdadeiro e falso.
  • type number, que classifica os valores numéricos.
  • type time, que classifica os valores de tempo.
  • type date, que classifica os valores de data.
  • type datetime, que classifica os valores de data e hora.
  • type datetimezone, que classifica os valores de fuso datatempo.
  • type duration, que classifica os valores de duração.
  • type text, que classifica valores de texto.
  • type binary, que classifica valores binários.
  • type type, que classifica os valores de tipo.
  • type list, que classifica os valores da lista.
  • type record, que classifica os valores de registro.
  • type table, que classifica os valores da tabela.
  • type function, que classifica valores de função.
  • type anynonnull, que classifica todos os valores, excluindo null.
  • type none, que não classifica valores.

Para obter mais informações sobre esses tipos, vá para Tipos.

Além desses tipos de dados comuns, há também um conjunto de tipos de dados usando o formato *.Type. Os tipos de dados mais utilizados neste 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 escritos no formato *.Type. Portanto, você pode escrever number como Number.Type, record como Record.Typee assim por diante.

Quando utilizar qualquer um destes tipos, esteja ciente de que, como todo o código M, estes tipos fazem distinção entre maiúsculas e minúsculas.

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

Tipo de dados Description
any O tipo de dados any é o status fornecido quando um valor não tem uma definição explícita de tipo de dados. O tipo any é o tipo de dados que classifica todos os valores.
binary O tipo de dados binary pode ser usado para representar quaisquer outros dados com um formato binário.
type Um valor que classifica outros valores. Para obter mais informações, vá para 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 tempo).
time Representa apenas a hora (sem parte da data).
datetime Representa um valor de data e hora. A componente temporal de uma data é armazenada como uma fração de múltiplos inteiros de 1/300 de segundos (3,33 ms). São suportadas datas entre os anos de 1900 e 9999.
datetimezone Representa uma data e hora UTC com um deslocamento de fuso horário.
duration Representa um período de tempo. Este tipo pode ser adicionado ou subtraído de um campo datetime com resultados corretos. Para obter mais informações, vá para Duração.
text Uma cadeia de dados de caracteres Unicode. Podem 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 (onde cada caractere Unicode é de dois bytes) ou 536.870.912 bytes.
logical Um valor booleano de true ou false.
list Um valor que produz uma sequência de valores quando enumerado. Para obter mais informações, vá para Tipos de lista e Valores de lista.
record Uma sequência ordenada de campos. Cada campo contém um nome e um valor de campo. Para obter mais informações, vá para Tipos de registro e Valores de registro.
table Uma sequência ordenada de linhas divididas em colunas. Para obter mais informações, vá para Tipos de tabela e Valores de tabela.
function Um valor que mapeia um conjunto de argumentos para um único valor. Para mais informações, consulte 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, consulte o 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 aos números como você costuma pensar neles. Embora projetado para lidar com números com valores fracionários, ele também lida com números inteiros. O Decimal.Type pode lidar com valores negativos de –1,79E +308 até –2,23E –308, 0, e valores positivos de 2,23E –308 até 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 parte do número. O Decimal.Type corresponde à forma como o Excel armazena os seus números. Observe que um número binário de vírgula flutuante não pode representar todos os números dentro de seu intervalo suportado com precisão de 100%. Assim, pequenas diferenças na precisão podem ocorrer ao representar certos números decimais.
Currency.Type Esse tipo de dados tem um local fixo para o separador decimal. O separador decimal tem sempre quatro dígitos à sua direita e permite 19 dígitos de significância. O maior valor que pode representar é 922.337.203.685.477,5807 (positivo ou negativo). Ao contrário Decimal.Type, o Currency.Type é sempre preciso e, portanto, é útil nos casos em que a imprecisão da notação de vírgula flutuante pode introduzir erros.
Percentage.Type Fundamentalmente o mesmo que um Decimal.Type, mas tem uma máscara para formatar os valores como um valor percentual.
Int8.Type Representa um valor inteiro assinado de 8 bits (um byte). Por ser um número inteiro, não tem dígitos à direita da vírgula decimal. Permite 3 dígitos; um número inteiro positivo ou negativo entre –128 e 127. Tal como acontece com o Currency.Type, o Int8.Type pode ser útil nos casos em que é necessário controlar os arredondamentos.
Int16.Type Representa um valor inteiro assinado de 16 bits (dois bytes). Por ser um número inteiro, não tem dígitos à direita da vírgula decimal. Permite 6 dígitos; um número inteiro positivo ou negativo entre –32.768 (–2^15) e 32.767 (2^15-1). Tal como acontece com o Currency.Type, o Int16.Type pode ser útil nos casos em que é necessário controlar os arredondamentos.
Int32.Type Representa um valor inteiro assinado de 32 bits (quatro bytes). Por ser um número inteiro, não tem dígitos à direita da vírgula decimal. 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). Tal como acontece com o Currency.Type, o Int32.Type pode ser útil nos casos em que é necessário controlar os arredondamentos.
Int64.Type Representa um valor inteiro assinado de 64 bits (oito bytes). Por ser um número inteiro, não tem dígitos à direita da vírgula decimal. 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. Tal como acontece com o Currency.Type, o Int64.Type pode ser útil nos casos em que é necessário controlar os arredondamentos.
Byte.Type Representa um valor inteiro não assinado de 8 bits (um byte). Por ser um número inteiro não assinado, ele não tem dígitos à direita da casa decimal e só pode conter valores positivos. Permite 3 dígitos; um número positivo entre 0 e 255.
Single.Type Representa um número de ponto flutuante de precisão única. Tem um intervalo aproximado de –3,99 X 1038 a 3,99 X 1038 e suporta aproximadamente 9 dígitos de precisão. 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. Tem um intervalo aproximado de –1,7976931348623158 X 10307 a 1,7976931348623158 X 10307 e suporta aproximadamente 17 dígitos de precisão. 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 hexadecimais usando o fator de forma de <valores hexadecimais de 8>-<valores hexadecimais de 4>-<valores hexadecimais de 4>-<valores hexadecimais de 4>-<valores hexadecimais de 12>, que compõem o valor GUID.
none O tipo de dados que não classifica valores.

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

Conversão de tipo

A linguagem de fórmulas do Power Query M tem fórmulas para converter entre tipos. Segue-se um resumo das fórmulas de conversão em M.

Número

Conversão de tipo Description
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) como número Devolve um valor numérico de um valor.
Byte.From(valor como qualquer) como número Retorna um valor de número inteiro de 8 bits do valor fornecido.
Int8.From(valor como qualquer) como número Retorna um valor de número inteiro de 8 bits do valor fornecido.
Int16.From(valor como qualquer) como número Retorna um valor de número inteiro de 16 bits do valor fornecido.
Int32.From(valor como qualquer) como número Retorna um valor de número inteiro de 32 bits do valor fornecido.
Int64.From(valor como qualquer) como número Retorna um valor de número inteiro de 64 bits do valor fornecido.
Single.From(valor como qualquer) como número Devolve um valor de número único a partir do valor fornecido.
Double.From(valor como qualquer) como número Retorna um valor de número duplo do valor fornecido.
Decimal.From(valor como qualquer) como número Devolve um valor de número decimal a partir do valor fornecido.
Currency.From(valor como qualquer) como número Retorna um valor de número de moeda do valor fornecido.
Percentage.From(valor como qualquer) como número Devolve um valor de número de percentagem do valor fornecido.

Texto

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

Lógico

Conversão de tipo Description
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(qualquer valor) como lógico Retorna um valor lógico de um valor.

Data, Hora, DateTime e DateTimeZone

Conversão de tipo Description
. FromText(texto como texto) como data, hora, datetime ou datetimezone Retorna um valor de data, hora, 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.
. De(valor como qualquer) Retorna um valor de data, hora, datetime ou datetimezone de um valor.
. ToRecord (data, hora, dateTime ou dateTimeZone como data, hora, datetime ou datetimezone) Retorna um registro contendo partes de um valor de data, hora, datetime ou datetimezone.