Linguagem M do Power Query: como escrever e entender fórmulas avançadas

Quem usa o Power Query no Excel ou no Power BI sabe que a interface visual resolve a maioria dos problemas de transformação de dados. Mas quando a interface não é suficiente, é a linguagem M que entra em cena. Aprender M abre um novo nível de possibilidades no Power Query, permitindo criar transformações personalizadas, funções reutilizáveis e automatizar tarefas complexas. Neste artigo iremos mostrar o que é a linguagem M, como lê-la e como escrever os primeiros códigos.

O que é a linguagem M?

A linguagem M (o nome oficial é Power Query Formula Language) é a linguagem de programação funcional que está por baixo de todas as transformações que você faz no editor do Power Query. Cada vez que você clica em “Remover Colunas”, “Dividir Coluna” ou “Filtrar Linhas”, o Power Query gera automaticamente o código M correspondente nos bastidores.

Você pode ver e editar esse código abrindo o Editor Avançado no Power Query. Isso permite fazer transformações que a interface visual não suporta diretamente.

Acessando o Editor Avançado

Para acessar o código M de uma consulta, abra o Power Query e vá em Exibir > Editor Avançado. Você verá o código gerado automaticamente pelas transformações que você aplicou.

A estrutura básica do código M

Todo código M tem uma estrutura padrão chamada expressão let…in:

let
    Etapa1 = ...,
    Etapa2 = ...,
    Etapa3 = ...
in
    Etapa3

O bloco let define as etapas (variáveis), e o in define qual etapa retornar como resultado final da consulta. Cada etapa usa o resultado da etapa anterior como entrada, criando uma pipeline de transformações.

Exemplo prático: importando e transformando um CSV

Veja um exemplo de código M completo para importar um arquivo CSV, remover uma coluna e filtrar linhas:

let
    Fonte = Csv.Document(
        File.Contents("C:\Dados\vendas.csv"),
        [Delimiter=";", Encoding=1252]
    ),
    Cabecalho = Table.PromoteHeaders(Fonte),
    TiposAlterados = Table.TransformColumnTypes(Cabecalho, {
        {"Data", type date},
        {"Valor", type number}
    }),
    ColunasRemovidas = Table.RemoveColumns(TiposAlterados, {"Coluna Desnecessária"}),
    FiltrarSul = Table.SelectRows(ColunasRemovidas, each [Região] = "Sul")
in
    FiltrarSul

Funções M mais usadas no dia a dia

Table.SelectRows: filtrar linhas

Table.SelectRows(tabela, each [Coluna] = "Valor")

Table.SelectColumns: selecionar colunas específicas

Table.SelectColumns(tabela, {"Coluna1", "Coluna2", "Coluna3"})

Table.AddColumn: adicionar coluna calculada

Table.AddColumn(tabela, "Nova Coluna", each [Valor] * 1.1, type number)

Table.RenameColumns: renomear colunas

Table.RenameColumns(tabela, {{"NomeAntigo", "NomeNovo"}})

Table.TransformColumnTypes: mudar tipos de dados

Table.TransformColumnTypes(tabela, {{"Data", type date}, {"Valor", type number}})

Table.Group: agrupar e resumir dados

Table.Group(tabela, {"Região"}, {{"Total", each List.Sum([Valor]), type number}})

Parâmetros no Power Query

Um recurso muito útil que a linguagem M suporta é a criação de parâmetros. Com parâmetros, você pode criar consultas dinâmicas onde valores como o caminho de um arquivo ou um critério de filtro podem ser alterados facilmente sem abrir o código.

Para criar um parâmetro, vá em Página Inicial > Gerenciar Parâmetros > Novo Parâmetro e defina o nome e o valor. Depois, referencie o parâmetro no código M simplesmente usando o seu nome.

Criando funções reutilizáveis

Uma das funcionalidades mais avançadas do M é a criação de funções reutilizáveis. Uma função M é definida assim:

(parametro1 as text, parametro2 as number) =>
let
    resultado = Text.Upper(parametro1) & " - " & Number.ToText(parametro2)
in
    resultado

Depois de criar a função como uma consulta no Power Query, você pode chamá-la de outras consultas, passando os parâmetros necessários. Isso é extremamente útil para evitar repetição de código quando você tem várias consultas que precisam fazer a mesma transformação.

Combinando múltiplos arquivos de uma pasta

Uma das aplicações mais úteis do código M é combinar automaticamente todos os arquivos de uma pasta. Quando você usa a opção De Pasta no Power Query, ele gera um código M que cria uma função para processar cada arquivo e aplica essa função a todos os arquivos da pasta:

let
    Fonte = Folder.Files("C:\Dados\Relatórios Mensais"),
    ArquivosExcel = Table.SelectRows(Fonte, each [Extension] = ".xlsx"),
    ImportarArquivo = (caminho as text) =>
        let
            Conteudo = Excel.Workbook(File.Contents(caminho)),
            Planilha = Conteudo{0}[Data]
        in
            Planilha,
    DadosCombinados = Table.AddColumn(ArquivosExcel, "Dados", each ImportarArquivo([Folder Path] & [Name])),
    Expandir = Table.ExpandTableColumn(DadosCombinados, "Dados", Table.ColumnNames(DadosCombinados{0}[Dados]))
in
    Expandir

Por onde aprofundar o conhecimento em M

O melhor recurso para aprender M de forma aprofundada é a documentação oficial da Microsoft, que lista todas as funções disponíveis com exemplos. Além disso, uma boa prática é sempre abrir o Editor Avançado depois de fazer transformações na interface para ver o código gerado e entender como a interface se traduz em código.

Se você curtiu esse artigo onde mostramos como usar a linguagem M do Power Query, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *