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.Type
e 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. |