📊 Documentação Oficial da Linguagem M
| # | Comando / Função / Parâmetro | O que faz | Exemplo |
|---|---|---|---|
| 1 | Instalação (SDK) | Linguagem nativa, mas para dev usa-se o SDK no VS Code | pip install powerquery-sdk |
| 2 | let ... in | Estrutura básica de qualquer consulta M | let Fonte = ... in Fonte |
| 3 | Text.From() | Converte um valor para texto | Text.From(123) |
| 4 | Text.Upper() | Converte texto para maiúsculas | Text.Upper("m") |
| 5 | Text.Lower() | Converte texto para minúsculas | Text.Lower("M") |
| 6 | Text.Proper() | Primeira letra de cada palavra em maiúscula | Text.Proper("ola mundo") |
| 7 | Text.Trim() | Remove espaços no início e fim | Text.Trim(" texto ") |
| 8 | Text.Length() | Retorna o número de caracteres | Text.Length("Power") |
| 9 | Text.Contains() | Verifica se um texto existe dentro de outro | Text.Contains([Col], "Erro") |
| 10 | Text.Combine() | Concatena uma lista de textos | Text.Combine({"A", "B"}, "-") |
| 11 | Text.Start() | Extrai N caracteres do início | Text.Start("Brasil", 3) |
| 12 | Text.End() | Extrai N caracteres do fim | Text.End("Brasil", 2) |
| 13 | Text.Replace() | Substitui um texto por outro | Text.Replace("A-B", "-", "/") |
| 14 | Text.BetweenDelimiters() | Extrai texto entre delimitadores | Text.BetweenDelimiters("x[y]z", "[", "]") |
| 15 | Table.SelectColumns() | Mantém apenas as colunas especificadas | Table.SelectColumns(Tab, {"ID"}) |
| 16 | Table.RemoveColumns() | Exclui colunas específicas | Table.RemoveColumns(Tab, {"Obs"}) |
| 17 | Table.RenameColumns() | Renomeia colunas (lista de listas) | Table.RenameColumns(T, {{"De", "Para"}}) |
| 18 | Table.FilterRows() | Filtra linhas baseado em condição | Table.FilterRows(T, each [Venda] > 10) |
| 19 | Table.AddColumn() | Adiciona uma nova coluna personalizada | Table.AddColumn(T, "Nova", each [A] + [B]) |
| 20 | Table.TransformColumnTypes() | Define o tipo de dados das colunas | Table.TransformColumnTypes(T, {{"Qtd", Int64.Type}}) |
| 21 | Table.Sort() | Ordena a tabela por colunas | Table.Sort(T, {{"Data", Order.Ascending}}) |
| 22 | Table.Group() | Agrupa linhas (o "Group By" do SQL) | Table.Group(T, {"Ano"}, {{"Total", each List.Sum([V])}}) |
| 23 | Table.Pivot() | Transforma linhas em colunas (Dinâmica) | Table.Pivot(T, {"Jan", "Fev"}, "Mes", "Valor") |
| 24 | Table.Unpivot() | Transforma colunas em linhas | Table.UnpivotOtherColumns(T, {"ID"}, "Atrib", "Val") |
| 25 | Table.Distinct() | Remove linhas duplicadas | Table.Distinct(T) |
| 26 | Table.FirstN() | Retorna as primeiras N linhas | Table.FirstN(T, 10) |
| 27 | Table.LastN() | Retorna as últimas N linhas | Table.LastN(T, 5) |
| 28 | Table.Buffer() | Carrega a tabela em memória para performance | Table.Buffer(Fonte) |
| 29 | Table.Join() | Une duas tabelas (Merge) | Table.Join(T1, "ID", T2, "ID") |
| 30 | Table.NestedJoin() | Merge que resulta em colunas de tabela | Table.NestedJoin(T1, "ID", T2, "ID", "New") |
| 31 | Table.ExpandTableColumn() | Expande uma coluna de tabela aninhada | Table.ExpandTableColumn(T, "Col", {"Sub"}) |
| 32 | List.Sum() | Soma todos os itens de uma lista | List.Sum({1, 2, 3}) |
| 33 | List.Average() | Calcula a média de uma lista | List.Average({10, 20}) |
| 34 | List.Max() | Retorna o valor máximo | List.Max([Preço]) |
| 35 | List.Min() | Retorna o valor mínimo | List.Min([Data]) |
| 36 | List.Count() | Conta o número de itens | List.Count(Tabela[ID]) |
| 37 | List.Distinct() | Valores únicos de uma lista | List.Distinct({1, 1, 2}) |
| 38 | List.Generate() | Gera lista baseada em loop/condição | List.Generate(()=>1, each _ < 10, each _ + 1) |
| 39 | List.Dates() | Cria lista de datas sequenciais | List.Dates(#date(2023,1,1), 365, #duration(1,0,0,0)) |
| 40 | Date.From() | Converte valor para Data | Date.From("2023-01-01") |
| 41 | Date.AddDays() | Adiciona dias a uma data | Date.AddDays([Data], 7) |
| 42 | Date.Year() | Extrai o ano da data | Date.Year(DateTime.LocalNow()) |
| 43 | Date.Month() | Extrai o mês da data | Date.Month([Data]) |
| 44 | Date.EndOfMonth() | Retorna o último dia do mês | Date.EndOfMonth([Data]) |
| 45 | Date.ToText() | Formata data como texto | Date.ToText([Data], "dd/MM/yyyy") |
| 46 | DateTime.LocalNow() | Data e hora atual do sistema | DateTime.LocalNow() |
| 47 | Duration.Days() | Extrai apenas os dias de uma duração | Duration.Days([Fim] - [Início]) |
| 48 | if ... then ... else | Estrutura condicional | if [V] > 0 then "OK" else "Erro" |
| 49 | try ... otherwise | Tratamento de erros | try Number.From("A") otherwise 0 |
| 50 | and / or / not | Operadores lógicos | if [A]=1 and [B]=2 then true else false |
| 51 | Excel.Workbook() | Acessa dados de um arquivo Excel | Excel.Workbook(File.Contents("C:\a.xlsx")) |
| 52 | Sql.Database() | Conecta ao SQL Server | Sql.Database("Servidor", "Banco") |
| 53 | Csv.Document() | Lê documentos CSV | Csv.Document(Fonte, [Delimiter=","]) |
| 54 | Web.Contents() | Acessa uma URL ou API | Web.Contents("https://api.exemplo.com") |
| 55 | Json.Document() | Converte conteúdo JSON em M | Json.Document(Web.Contents(url)) |
| 56 | Number.Round() | Arredonda valores numéricos | Number.Round(1.234, 2) |
| 57 | Number.FromText() | Converte texto para número | Number.FromText("100") |
| 58 | Table.FillDown() | Preenche valores nulos com o anterior | Table.FillDown(T, {"Coluna"}) |
| 59 | Table.FillUp() | Preenche valores nulos com o próximo | Table.FillUp(T, {"Coluna"}) |
| 60 | Table.ReplaceValue() | Substitui valores específicos na tabela | Table.ReplaceValue(T, "A", "B", replacer, {"Col"}) |
| 61 | Table.Transpose() | Inverte linhas e colunas | Table.Transpose(Tabela) |
| 62 | Table.DemoteHeaders() | Transforma o cabeçalho na primeira linha | Table.DemoteHeaders(T) |
| 63 | Table.PromoteHeaders() | Transforma a primeira linha em cabeçalho | Table.PromoteHeaders(T) |
| 64 | Table.Repeat() | Repete a tabela N vezes | Table.Repeat(T, 2) |
| 65 | Table.Skip() | Pula N linhas iniciais | Table.Skip(T, 1) |
| 66 | Table.ReverseRows() | Inverte a ordem das linhas | Table.ReverseRows(T) |
| 67 | Table.Sample() | Retorna amostra aleatória de linhas | Table.Sample(T, 10) |
| 68 | Table.TransformRows() | Aplica função em cada linha (gera lista) | Table.TransformRows(T, each [V]*2) |
| 69 | Record.Field() | Acessa campo de um registro | Record.Field(Reg, "Nome") |
| 70 | Value.Type() | Retorna o tipo de um valor | Value.Type(1) |
| 71 | Type.Is() | Verifica se um tipo é compatível | Type.Is(Value.Type(1), type number) |
| 72 | Binary.Decompress() | Descompacta arquivos (GZip) | Binary.Decompress(Bin, Compression.GZip) |
| 73 | Splitter.SplitTextByDelimiter() | Divide texto por delimitador | Splitter.SplitTextByDelimiter(",")("a,b") |
| 74 | Number.Abs() | Valor absoluto (módulo) | Number.Abs(-10) |
| 75 | Number.Mod() | Resto da divisão | Number.Mod(10, 3) |
| 76 | Number.Power() | Potenciação | Number.Power(2, 3) |
| 77 | Text.Repeat() | Repete um texto N vezes | Text.Repeat("*", 5) |
| 78 | Text.PositionOf() | Posição de um caractere | Text.PositionOf("Abc", "b") |
| 79 | Date.DayOfWeek() | Número do dia da semana | Date.DayOfWeek([Data]) |
| 80 | Date.WeekOfYear() | Número da semana no ano | Date.WeekOfYear([Data]) |
| 81 | Date.IsLeapYear() | Verifica se o ano é bissexto | Date.IsLeapYear([Data]) |
| 82 | Time.Hour() | Extrai a hora | Time.Hour(DateTime.LocalNow()) |
| 83 | Time.Minute() | Extrai o minuto | Time.Minute([Hora]) |
| 84 | Table.Buffer() | Melhora performance de Joins repetidos | Table.Buffer(Tabela) |
| 85 | Expression.Evaluate() | Executa código M dinâmico (texto) | Expression.Evaluate("1+1") |
| 86 | Diagnostics.Trace() | Gera logs de depuração | Diagnostics.Trace(TraceLevel.Info, "Msg", Val) |
| 87 | List.First() | Primeiro item da lista | List.First({1,2}) |
| 88 | List.Last() | Último item da lista | List.Last({1,2}) |
| 89 | List.PositionOf() | Índice de um item na lista | List.PositionOf({"A","B"}, "B") |
| 90 | List.Zip() | Combina listas por posição | List.Zip({{1,2}, {"a","b"}}) |
| 91 | List.Transform() | Aplica função a todos itens da lista | List.Transform({1,2}, each _ + 1) |
| 92 | List.Select() | Filtra itens da lista | List.Select({1..10}, each _ > 5) |
| 93 | List.RemoveMatchingItems() | Remove itens específicos da lista | List.RemoveMatchingItems({1,2,3}, {2}) |
| 94 | Table.ColumnNames() | Lista com nomes das colunas | Table.ColumnNames(T) |
| 95 | Table.RowCount() | Total de linhas da tabela | Table.RowCount(T) |
| 96 | Table.ColumnCount() | Total de colunas da tabela | Table.ColumnCount(T) |
| 97 | Int64.Type | Tipo de dado: Inteiro 64 bits | type number |
| 98 | Currency.Type | Tipo de dado: Moeda | type number |
| 99 | Function.Invoke() | Chama uma função dinamicamente | Function.Invoke(MinhaFn, {arg1}) |
| 100 | Table.Schema() | Retorna informações detalhadas sobre a estrutura da tabela | Table.Schema(Tabela) |
| 101 | Text.Clean() | Remove caracteres de controle não imprimíveis | Text.Clean([Coluna]) |
| 102 | Text.PadStart() | Preenche o início do texto até um comprimento | Text.PadStart("5", 3, "0") |
| 103 | Text.PadEnd() | Preenche o fim do texto até um comprimento | Text.PadEnd("5", 3, "0") |
| 104 | Number.ToText() | Converte número para texto com formatação | Number.ToText(123, "D4") |
| 105 | List.NonNullCount() | Conta itens não nulos em uma lista | List.NonNullCount({1, null, 3}) |
| 106 | List.Product() | Multiplica todos os itens de uma lista | List.Product({2, 3, 4}) |
| 107 | List.Median() | Retorna a mediana de uma lista | List.Median({1, 5, 10}) |
| 108 | List.StandardDeviation() | Desvio padrão da amostra de uma lista | List.StandardDeviation({1, 2, 3}) |
| 109 | Date.Day() | Retorna o dia do mês | Date.Day(#date(2026, 2, 18)) |
| 110 | Date.DayOfYear() | Retorna o dia do ano (1-366) | Date.DayOfYear([Data]) |
| 111 | Date.StartOfMonth() | Retorna o primeiro dia do mês | Date.StartOfMonth([Data]) |
| 112 | Date.StartOfWeek() | Retorna o primeiro dia da semana | Date.StartOfWeek([Data]) |
| 113 | Date.EndOfWeek() | Retorna o último dia da semana | Date.EndOfWeek([Data]) |
| 114 | Date.StartOfQuarter() | Retorna o início do trimestre | Date.StartOfQuarter([Data]) |
| 115 | Date.EndOfQuarter() | Retorna o fim do trimestre | Date.EndOfQuarter([Data]) |
| 116 | Date.StartOfYear() | Retorna o primeiro dia do ano | Date.StartOfYear([Data]) |
| 117 | Date.EndOfYear() | Retorna o último dia do ano | Date.EndOfYear([Data]) |
| 118 | Date.AddMonths() | Adiciona ou subtrai meses de uma data | Date.AddMonths([Data], -1) |
| 119 | Date.AddQuarters() | Adiciona trimestres a uma data | Date.AddQuarters([Data], 1) |
| 120 | Date.AddWeeks() | Adiciona semanas a uma data | Date.AddWeeks([Data], 2) |
| 121 | Date.AddYears() | Adiciona anos a uma data | Date.AddYears([Data], 5) |
| 122 | DateTime.ToText() | Converte DateTime para texto formatado | DateTime.ToText([DT], "yyyy-MM") |
| 123 | DateTime.Date() | Extrai apenas a parte da data de um DateTime | DateTime.Date([DataHora]) |
| 124 | DateTime.Time() | Extrai apenas a parte da hora de um DateTime | DateTime.Time([DataHora]) |
| 125 | DateTimeZone.UtcNow() | Data e hora atual em UTC | DateTimeZone.UtcNow() |
| 126 | DateTimeZone.SwitchZone() | Altera o fuso horário sem mudar a hora | DateTimeZone.SwitchZone([DTZ], -3) |
| 127 | Duration.TotalHours() | Duração total convertida em horas | Duration.TotalHours([Fim]-[Ini]) |
| 128 | Duration.TotalMinutes() | Duração total convertida em minutos | Duration.TotalMinutes([Fim]-[Ini]) |
| 129 | Duration.From() | Converte um valor para o tipo duração | Duration.From("1.02:03:04") |
| 130 | Number.Power() | Eleva um número a uma potência | Number.Power(10, 2) |
| 131 | Number.Sqrt() | Calcula a raiz quadrada | Number.Sqrt(16) |
| 132 | Number.IsEven() | Verifica se o número é par | Number.IsEven(4) |
| 133 | Number.IsOdd() | Verifica se o número é ímpar | Number.IsOdd(3) |
| 134 | Number.Sign() | Retorna 1 (pos), -1 (neg) ou 0 | Number.Sign(-50) |
| 135 | Table.AddIndexColumn() | Adiciona coluna de índice sequencial | Table.AddIndexColumn(T, "Ind", 1, 1) |
| 136 | Table.ReplaceMatchingRows() | Substitui linhas inteiras que coincidem | Table.ReplaceMatchingRows(T, {{R1, R2}}) |
| 137 | Table.FindText() | Filtra a tabela por qualquer ocorrência de texto | Table.FindText(T, "Pesquisa") |
| 138 | Table.First() | Retorna o primeiro registro da tabela | Table.First(Tabela) |
| 139 | Table.Last() | Retorna o último registro da tabela | Table.Last(Tabela) |
| 140 | Table.Range() | Retorna um subconjunto de linhas a partir do índice | Table.Range(T, 5, 10) |
| 141 | Table.Partition() | Divide a tabela em uma lista de tabelas | Table.Partition(T, "Col", 3, hash) |
| 142 | Table.SplitColumn() | Divide coluna por delimitador | Table.SplitColumn(T, "C", Splitter.SplitBy...) |
| 143 | Table.ToRecords() | Converte a tabela em uma lista de registros | Table.ToRecords(Tabela) |
| 144 | Table.ToColumns() | Converte a tabela em uma lista de listas (colunas) | Table.ToColumns(Tabela) |
| 145 | Table.FromRecords() | Cria uma tabela a partir de lista de registros | Table.FromRecords({[A=1], [A=2]}) |
| 146 | Table.FromList() | Converte uma lista em uma tabela | Table.FromList(Lista, Splitter.SplitByNone()) |
| 147 | Table.PrefixColumns() | Adiciona prefixo a todos os nomes de colunas | Table.PrefixColumns(T, "Pre") |
| 148 | Table.TransformColumns() | Aplica funções a colunas específicas | Table.TransformColumns(T, {"Preço", each _ * 1.1}) |
| 149 | Table.PositionOf() | Retorna o índice da primeira linha encontrada | Table.PositionOf(T, Registro) |
| 150 | Record.ToTable() | Converte um registro em uma tabela (Nome/Valor) | Record.ToTable([ID=1, Nome="A"]) |
| 151 | Record.AddField() | Adiciona um novo campo a um registro | Record.AddField(Reg, "Novo", 10) |
| 152 | Record.RemoveFields() | Remove campos de um registro | Record.RemoveFields(Reg, "Obs") |
| 153 | Record.HasFields() | Verifica se o registro contém os campos | Record.HasFields(Reg, {"ID"}) |
| 154 | Record.FieldNames() | Retorna lista com nomes dos campos do registro | Record.FieldNames(Reg) |
| 155 | List.FirstN() | Retorna os primeiros N itens da lista | List.FirstN({1..10}, 3) |
| 156 | List.LastN() | Retorna os últimos N itens da lista | List.LastN({1..10}, 3) |
| 157 | List.Sort() | Ordena os itens da lista | List.Sort(Lista, Order.Descending) |
| 158 | List.Buffer() | Armazena a lista em memória (estabilidade) | List.Buffer(Lista) |
| 159 | List.ReplaceValue() | Substitui valores em uma lista | List.ReplaceValue(L, "a", "b", Replacer.ReplaceText) |
| 160 | List.Accumulate() | Reduz uma lista a um valor (tipo Reduce/Fold) | List.Accumulate({1..5}, 0, (state, current) => state + current) |
| 161 | List.Positions() | Gera lista de índices (0 a N) da lista original | List.Positions(Lista) |
| 162 | List.Random() | Gera uma lista de números aleatórios | List.Random(5) |
| 163 | List.Sequence() | Cria uma sequência numérica | List.Numbers(1, 10, 1) |
| 164 | List.MatchesAll() | Verifica se todos os itens atendem à condição | List.MatchesAll({2,4}, each Number.IsEven(_)) |
| 165 | List.MatchesAny() | Verifica se ao menos um item atende à condição | List.MatchesAny({1,2}, each _ > 1) |
| 166 | List.Union() | Une listas removendo duplicatas | List.Union({{1,2}, {2,3}}) |
| 167 | List.Intersect() | Retorna apenas itens comuns a várias listas | List.Intersect({{1,2}, {2,3}}) |
| 168 | List.Difference() | Itens que existem na primeira mas não na segunda | List.Difference({1,2}, {2}) |
| 169 | Text.ToList() | Converte texto em lista de caracteres | Text.ToList("ABC") |
| 170 | Text.Format() | Formata strings usando argumentos | Text.Format("Olá #[n]", [n="Mundo"]) |
| 171 | Value.Metadata() | Acessa metadados de um valor | Value.Metadata(Valor) |
| 172 | Value.RemoveMetadata() | Limpa metadados de um objeto | Value.RemoveMetadata(Valor) |
| 173 | Replacer.ReplaceText() | Função auxiliar para substituição de texto | Table.ReplaceValue(..., Replacer.ReplaceText, ...) |
| 174 | Replacer.ReplaceValue() | Função auxiliar para substituição de valores exatos | Table.ReplaceValue(..., Replacer.ReplaceValue, ...) |
| 175 | Logical.From() | Converte valor para lógico | Logical.From(1) |
| 176 | Binary.ToText() | Converte binário para texto (ex: Base64) | Binary.ToText(Bin, BinaryEncoding.Base64) |
| 177 | Binary.FromText() | Converte texto (Base64) para binário | Binary.FromText("base64string", BinaryEncoding.Base64) |
| 178 | Folder.Files() | Lista arquivos em uma pasta | Folder.Files("C:\Dados") |
| 179 | Folder.Contents() | Lista arquivos e subpastas | Folder.Contents("C:") |
| 180 | File.Contents() | Lê o conteúdo binário de um arquivo | File.Contents("C:\doc.txt") |
| 181 | Lines.FromBinary() | Lê binário como lista de linhas de texto | Lines.FromBinary(Bin) |
| 182 | Json.FromValue() | Converte um objeto M para JSON binário | Json.FromValue([id=1]) |
| 183 | Uri.BuildQueryString() | Cria string de parâmetros para URL | Uri.BuildQueryString([q="power", id="1"]) |
| 184 | Web.Page() | Extrai tabelas de uma página HTML | Web.Page(Web.Contents(url)) |
| 185 | Combiner.CombineTextByDelimiter() | Função para combinar textos com separador | Combiner.CombineTextByDelimiter(";")({"a","b"}) |
| 186 | QuoteStyle.None | Opção para ignorar aspas em CSV | Csv.Document(f, [QuoteStyle=QuoteStyle.None]) |
| 187 | ExtraValues.Error | Lança erro se houver mais colunas que o esperado | Table.FromList(L, splitter, col, ExtraValues.Error) |
| 188 | Percentage.Type | Tipo de dado: Percentual | type number |
| 189 | Double.Type | Tipo de dado: Número decimal flutuante | Double.Type |
| 190 | Byte.Type | Tipo de dado: Inteiro de 8 bits | Int8.Type |
| 191 | Occurrence.First | Opção para pegar apenas a primeira ocorrência | Text.PositionOf(t, "a", Occurrence.First) |
| 192 | Occurrence.All | Opção para pegar todas as ocorrências | Text.PositionOf(t, "a", Occurrence.All) |
| 193 | GroupKind.Global | Agrupamento padrão (tabela inteira) | Table.Group(T, "Col", {..}, GroupKind.Global) |
| 194 | GroupKind.Local | Agrupamento por blocos sequenciais de linhas | Table.Group(T, "Col", {..}, GroupKind.Local) |
| 195 | JoinKind.LeftOuter | Tipo de união: Esquerda (Padrão) | JoinKind.LeftOuter |
| 196 | JoinKind.RightOuter | Tipo de união: Direita | JoinKind.RightOuter |
| 197 | JoinKind.Inner | Tipo de união: Apenas correspondentes | JoinKind.Inner |
| 198 | JoinKind.FullOuter | Tipo de união: Todas as linhas de ambas | JoinKind.FullOuter |
| 199 | JoinKind.LeftAnti | Tipo de união: Apenas linhas que não existem na direita | JoinKind.LeftAnti |