⚙️ Power Query (M) Cheat Sheet

📊 Documentação Oficial da Linguagem M

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