fx

Power Query (M)

Tipos de Dados M

Tipos primitivos, numéricos (.Type), modificadores e estruturados do Power Query M, e como cada um chega ao modelo do Power BI.

31 tipos

Primitivo

  • any

    Qualquer valor. É o tipo de parâmetros e retornos sem tipo declarado. Coluna any chega ao modelo como Texto.

    Exemplo: (x) => x // x é any

  • anynonnull

    Qualquer valor exceto null.

    Exemplo: x as anynonnull

  • none

    Nenhum valor. Usado como retorno de função que só gera erro.

    Exemplo: () as none => error "Não implementado"

  • null

    Só o valor null.

    Exemplo: null is null // true

  • logical

    true ou false. No modelo, vira Verdadeiro/falso.

    Exemplo: type logical

  • number

    Qualquer número. As operações usam precisão Double; para outro tipo numérico no modelo, use um dos tipos .Type abaixo.

    Exemplo: type number

  • text

    Texto Unicode. O Power Query diferencia maiúsculas de minúsculas; o modelo do Power BI não.

    Exemplo: type text

  • date

    Data sem hora. No modelo, vira Data/hora com hora zero.

    Exemplo: #date(2026, 9, 24)

  • time

    Hora sem data. No modelo, vira Data/hora.

    Exemplo: #time(14, 30, 0)

  • datetime

    Data e hora.

    Exemplo: #datetime(2026, 9, 24, 14, 30, 0)

  • datetimezone

    Data e hora com deslocamento de fuso. No modelo, vira Data/hora e o fuso é descartado.

    Exemplo: DateTimeZone.UtcNow()

  • duration

    Intervalo de tempo. No modelo, vira Número decimal (em dias).

    Exemplo: #duration(1, 2, 30, 0)

  • binary

    Dado binário (arquivo). Não é suportado no modelo do Power BI: converta ou remova a coluna antes de carregar.

    Exemplo: File.Contents("C:\dados\arquivo.csv")

  • type

    Um valor de tipo.

    Exemplo: Value.Type(10) // type number

  • list

    Lista ordenada de valores, entre chaves.

    Exemplo: {1, "dois", #date(2026, 1, 1)}

  • record

    Conjunto de campos nomeados, entre colchetes.

    Exemplo: [Nome = "Ana", UF = "SP"]

  • table

    Tabela: linhas com as mesmas colunas.

    Exemplo: #table({"A"}, {{1}, {2}})

  • function

    Função.

    Exemplo: (x) => x * 2

Numérico (.Type)

  • Int64.Type

    Inteiro de 64 bits. No modelo: Número inteiro. Use para chaves, códigos e contagens.

    Exemplo: Table.TransformColumnTypes(Vendas, {{"Quantidade", Int64.Type}})

  • Currency.Type

    Decimal fixo: 4 casas decimais, 19 dígitos, sem erro de arredondamento de ponto flutuante. No modelo: Número decimal fixo. Use para valores monetários.

    Exemplo: Table.TransformColumnTypes(Vendas, {{"Valor", Currency.Type}})

  • Decimal.Type

    Ponto flutuante de 64 bits, até 15 dígitos. No modelo: Número decimal. ⚠️ Apesar do nome, não é o decimal fixo — esse é o Currency.Type.

    Exemplo: Table.TransformColumnTypes(Medidas, {{"Taxa", Decimal.Type}})

  • Double.Type

    Ponto flutuante de 17 dígitos.

    Exemplo: Double.From("3.14159")

  • Percentage.Type

    Na prática, o mesmo Número decimal, com máscara de percentual na exibição.

    Exemplo: Table.TransformColumnTypes(Metas, {{"Atingido", Percentage.Type}})

  • Int32.Type · Int16.Type · Int8.Type · Byte.Type

    Inteiros de 32, 16 e 8 bits com sinal, e de 8 bits sem sinal (0 a 255).

    Exemplo: Int32.From("123")

  • Single.Type

    Ponto flutuante de 9 dígitos.

    Exemplo: Single.From(1.5)

Modificador

  • nullable T

    Aceita os valores de T e também null.

    Exemplo: type nullable number

  • optional

    Parâmetro de função que pode ser omitido, ou campo de registro que pode faltar no tipo.

    Exemplo: (valor as number, optional casas as nullable number) => Number.Round(valor, casas ?? 2)

Estruturado

  • type {T}

    Tipo de lista cujos itens são do tipo T.

    Exemplo: type {text}

  • type [ ... ]

    Tipo de registro. Com ... no fim, o registro é aberto (aceita outros campos).

    Exemplo: type [Nome = text, optional UF = text, ...]

  • type table [ ... ]

    Tipo de tabela com as colunas e seus tipos.

    Exemplo: type table [Produto = text, Valor = Currency.Type]

  • type function (...) as T

    Tipo de função: parâmetros e retorno. Base para documentar funções com Value.ReplaceType.

    Exemplo: type function (x as number) as number

Do Power Query para o modelo

1. Tipo no Power Query × tipo no modelo

Power QueryModelo do Power BI
Int64.Type (Número inteiro)Número inteiro
Currency.Type (Número decimal fixo)Número decimal fixo
type number, Decimal.Type, Double.TypeNúmero decimal
Percentage.TypeNúmero decimal (com máscara de percentual no Power Query)
type textTexto
type logicalVerdadeiro/falso
type date, type time, type datetimeData/hora
type datetimezoneData/hora (o fuso é descartado)
type durationNúmero decimal
type binaryNão suportado: converta ou remova
any (sem tipo)Texto

⚠️ Decimal.Type é ponto flutuante, apesar do nome. O decimal fixo é o Currency.Type.

2. Definir tipos

let
    Origem = Csv.Document(File.Contents("C:\dados\vendas.csv"), [Delimiter = ";"]),
    Cabecalhos = Table.PromoteHeaders(Origem),
    Tipos = Table.TransformColumnTypes(
        Cabecalhos,
        {
            {"Data da Venda", type date},
            {"Quantidade", Int64.Type},
            {"Valor Venda", Currency.Type},
            {"Produto", type text}
        },
        "pt-BR"   // cultura: lê "1.234,56" e "24/09/2026" no formato brasileiro
    )
in
    Tipos
  • A cultura ("pt-BR", "en-US") define como texto vira número e data. Sem ela, vale a configuração regional do arquivo — e a mesma consulta pode dar resultado diferente em outra máquina.
  • Table.TransformColumnTypes aceita tipos primitivos e os tipos .Type; não aceita list, record, table nem function.
  • Defina o tipo antes de filtrar e calcular: sem tipo, a interface não oferece os filtros e as transformações de data, número e texto.

3. nullable e optional

let
    // Arredonda um valor; casas é opcional e vale 2 quando omitido.
    Arredondar = (valor as number, optional casas as nullable number) as number =>
        Number.Round(valor, casas ?? 2)
in
    { Arredondar(3.14159), Arredondar(3.14159, 4) }   // {3.14, 3.1416}
  • nullable T aceita os valores de T e null.
  • optional permite omitir o parâmetro; ele chega como null, por isso costuma vir junto com nullable e ??.

Fontes