Excel Power Query em 2026: ETL para analistas de dados e perguntas de entrevista

Guia completo de Excel Power Query para ETL: transformações de dados, linguagem M, combinação de consultas e perguntas de entrevista para analistas de dados.

Excel Power Query em 2026: ETL para analistas de dados e perguntas de entrevista

Excel Power Query transforma a maneira como os analistas de dados gerenciam fluxos de trabalho ETL (Extract, Transform, Load) diretamente no Excel. Diferente das operações manuais de copiar e colar ou macros VBA complexas, o Power Query oferece uma interface visual apoiada pela linguagem M, permitindo transformações de dados reproduzíveis que se atualizam com um único clique.

Disponibilidade do Power Query

O Power Query está integrado ao Excel 365, Excel 2021, Excel 2019 e Excel 2016. Em versões anteriores, estava disponível como complemento gratuito chamado "Power Query para Excel". O mesmo motor alimenta os dataflows do Power BI Desktop.

O que o Power Query resolve para analistas de dados

Analistas de dados dedicam tempo significativo à preparação de dados: mesclar arquivos de diferentes fontes, limpar formatos inconsistentes, filtrar linhas irrelevantes e reestruturar tabelas para análise. O Power Query aborda essas tarefas através de um editor de consultas que registra cada etapa de transformação. Quando os dados de origem mudam, todo o pipeline é reexecutado automaticamente.

O fluxo de trabalho segue três estágios: conectar às fontes de dados, aplicar transformações e carregar resultados em tabelas do Excel ou no modelo de dados. Cada etapa é registrada na barra de fórmulas usando sintaxe da linguagem M, que pode ser editada diretamente para cenários avançados.

Esta abordagem difere das fórmulas tradicionais do Excel. Enquanto as fórmulas recalculam células, o Power Query opera em tabelas inteiras antes delas chegarem à planilha. Uma consulta que consolida 50 arquivos CSV, remove duplicatas e despivota colunas executa uma vez e produz uma tabela limpa, em vez de construir fórmulas aninhadas complexas que deixam a pasta de trabalho lenta.

Conectando às fontes de dados com Obter Dados

O Power Query suporta conexões com arquivos (CSV, Excel, JSON, XML), bancos de dados (SQL Server, MySQL, PostgreSQL, Oracle), serviços em nuvem (SharePoint, Azure, Salesforce) e páginas web. O tipo de conexão determina quais opções de autenticação e importação aparecem.

plaintext
// Fontes de dados comuns no Power Query
Dados > Obter Dados > De Arquivo > De CSV
Dados > Obter Dados > De Banco de Dados > Do Banco de Dados SQL Server
Dados > Obter Dados > De Outras Fontes > Da Web
Dados > Obter Dados > De Pasta (múltiplos arquivos)

A opção "De Pasta" é particularmente útil para consolidar múltiplos arquivos. Em vez de importar cada arquivo separadamente, o Power Query escaneia uma pasta, lista todos os arquivos correspondentes e os combina em uma única consulta. Adicionar um novo arquivo à pasta o inclui automaticamente na próxima atualização.

Ao conectar a um banco de dados SQL, o Power Query pode enviar a lógica de transformação para o servidor através do query folding. Filtros e seleções de colunas se traduzem em cláusulas SQL WHERE e SELECT, reduzindo os dados transferidos para o Excel. A barra de fórmulas mostra a opção "Ver Consulta Nativa" quando o folding está ativo.

Transformações principais no Editor de Consultas

O Editor de Consultas fornece comandos na faixa de opções para operações comuns, mas entender o código M subjacente ajuda quando personalizações são necessárias. Cada transformação adiciona uma etapa ao painel "Etapas Aplicadas", criando uma sequência auditável.

Filtragem e ordenação de linhas

A filtragem remove linhas que não atendem aos critérios. O menu suspenso do cabeçalho da coluna fornece filtros rápidos, enquanto o diálogo "Filtrar Linhas" suporta condições complexas com lógica AND/OR.

m
// Etapa FilteredRows na linguagem M
let
    Source = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content],
    FilteredRows = Table.SelectRows(Source, each [Region] = "EMEA" and [Amount] > 1000)
in
    FilteredRows

A função Table.SelectRows recebe uma tabela e uma condição. A palavra-chave each cria uma função onde _ representa a linha atual, e o acesso aos campos usa a notação de colchetes [Region]. Múltiplas condições se combinam com os operadores and ou or.

Remoção e renomeação de colunas

As fontes de dados frequentemente incluem colunas que não são necessárias para análise. Removê-las cedo reduz o uso de memória e simplifica as etapas posteriores.

m
// Remover colunas, depois renomear as restantes
let
    Source = Excel.CurrentWorkbook(){[Name="RawData"]}[Content],
    RemovedColumns = Table.RemoveColumns(Source, {"TempID", "InternalNotes", "Debug"}),
    RenamedColumns = Table.RenameColumns(RemovedColumns, {{"Cust_Name", "CustomerName"}, {"Amt", "Amount"}})
in
    RenamedColumns

A lista de colunas usa chaves {} para múltiplos itens. A renomeação recebe uma lista de pares, onde cada par contém o nome antigo e o novo nome. Convenções de nomenclatura consistentes entre consultas facilitam a combinação de conjuntos de dados.

Divisão e mesclagem de colunas

Colunas de texto frequentemente precisam de análise. Uma coluna "NomeCompleto" pode precisar ser dividida em primeiro nome e sobrenome, ou colunas separadas de data e hora podem precisar ser mescladas.

m
// Dividir NomeCompleto por delimitador em duas colunas
let
    Source = Excel.CurrentWorkbook(){[Name="Contacts"]}[Content],
    SplitColumn = Table.SplitColumn(Source, "FullName", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"FirstName", "LastName"})
in
    SplitColumn

A função Splitter.SplitTextByDelimiter lida com a lógica de análise. Para padrões mais complexos, Splitter.SplitTextByEachDelimiter ou Splitter.SplitTextByPositions oferecem controle adicional. Quando o número de colunas resultantes varia, o Power Query cria colunas dinamicamente.

Conversões de tipos e qualidade de dados

O Power Query infere os tipos de coluna na importação, mas a atribuição explícita de tipos detecta erros cedo. Uma coluna de texto contendo IDs numéricos deve permanecer como texto se zeros à esquerda são importantes. Colunas de data importadas como texto causam problemas de ordenação.

m
// Atribuições explícitas de tipos
let
    Source = Csv.Document(File.Contents("C:\Data\transactions.csv")),
    TypedColumns = Table.TransformColumnTypes(Source, {
        {"TransactionID", type text},
        {"Date", type date},
        {"Amount", type number},
        {"IsProcessed", type logical}
    })
in
    TypedColumns

A palavra-chave type especifica o tipo alvo. Os tipos disponíveis incluem text, number, date, datetime, datetimezone, time, duration, logical e binary. Erros de tipo aparecem como valores "Erro" nas células, tornando os problemas de qualidade de dados visíveis antes da análise.

O tratamento de valores null requer lógica explícita. A função Table.ReplaceValue substitui nulls por valores padrão, enquanto Table.SelectRows com [Column] <> null os filtra.

Agrupamento e agregação com Agrupar Por

A agregação de dados por categorias é um requisito frequente. A transformação "Agrupar Por" colapsa linhas que compartilham os mesmos valores-chave e aplica funções de agregação.

m
// Agrupar vendas por região e ano, calcular soma e contagem
let
    Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content],
    Grouped = Table.Group(Source, {"Region", "Year"}, {
        {"TotalSales", each List.Sum([Amount]), type number},
        {"OrderCount", each Table.RowCount(_), Int64.Type},
        {"AvgOrderValue", each List.Average([Amount]), type number}
    })
in
    Grouped

As colunas de agrupamento aparecem primeiro, seguidas das definições de agregação. Cada agregação especifica um nome de nova coluna, uma função de agregação e um tipo de resultado opcional. A palavra-chave each representa a subtabela para cada grupo, permitindo qualquer função de tabela ou lista.

Agregações aninhadas permitem cálculos como "porcentagem do total do grupo" referenciando tanto o valor da linha quanto o agregado do grupo em uma etapa posterior.

Pronto para mandar bem nas entrevistas de Data Analytics?

Pratique com nossos simuladores interativos, flashcards e testes tecnicos.

Pivot e Unpivot para reestruturação de dados

Pivot converte valores de linha em colunas, criando um layout de tabela cruzada. Unpivot faz o inverso, convertendo colunas em linhas para estruturas normalizadas.

m
// Despivotar colunas de meses em linhas
let
    Source = Excel.CurrentWorkbook(){[Name="MonthlySales"]}[Content],
    // Original: colunas Product, Jan, Feb, Mar, Apr
    Unpivoted = Table.UnpivotOtherColumns(Source, {"Product"}, "Month", "Sales")
    // Resultado: colunas Product, Month, Sales
in
    Unpivoted

A função Table.UnpivotOtherColumns mantém as colunas especificadas fixas e despivota o resto. Isso é mais seguro do que listar todas as colunas a despivotar, porque adicionar novas colunas de mês as inclui automaticamente. Os dois últimos parâmetros nomeiam a coluna de atributo ("Month") e a coluna de valor ("Sales").

Pivot usa Table.Pivot com uma função de agregação para casos onde múltiplos valores existem para a mesma combinação linha-coluna:

m
// Pivotar vendas por região
let
    Source = Excel.CurrentWorkbook(){[Name="DetailedSales"]}[Content],
    Pivoted = Table.Pivot(Source, List.Distinct(Source[Region]), "Region", "Amount", List.Sum)
in
    Pivoted

Mesclagem e anexação de consultas

Combinar dados de múltiplas fontes é onde o Power Query reduz o esforço manual. Mesclar realiza uma junção entre duas tabelas baseada em colunas correspondentes. Anexar empilha tabelas verticalmente.

m
// Left join: Pedidos com detalhes de Cliente
let
    Orders = Excel.CurrentWorkbook(){[Name="Orders"]}[Content],
    Customers = Excel.CurrentWorkbook(){[Name="Customers"]}[Content],
    Merged = Table.NestedJoin(Orders, {"CustomerID"}, Customers, {"ID"}, "CustomerDetails", JoinKind.LeftOuter),
    Expanded = Table.ExpandTableColumn(Merged, "CustomerDetails", {"Name", "Email"})
in
    Expanded

A função Table.NestedJoin cria uma coluna de tabela aninhada contendo as linhas correspondentes. A função Table.ExpandTableColumn então achata a estrutura aninhada em colunas regulares. Os tipos de junção incluem Inner, LeftOuter, RightOuter, FullOuter, LeftAnti e RightAnti.

Anexar com Table.Combine requer nomes de colunas correspondentes. Quando os esquemas diferem, Table.SelectColumns em cada fonte antes de combinar garante consistência:

m
// Anexar duas tabelas de vendas com colunas consistentes
let
    Sales2024 = Table.SelectColumns(Source2024, {"Date", "Product", "Amount"}),
    Sales2025 = Table.SelectColumns(Source2025, {"Date", "Product", "Amount"}),
    Combined = Table.Combine({Sales2024, Sales2025})
in
    Combined

Colunas personalizadas e lógica condicional

A funcionalidade "Adicionar Coluna > Coluna Personalizada" permite campos calculados usando expressões M. A lógica condicional usa a sintaxe if-then-else.

m
// Adicionar uma coluna calculada com lógica condicional
let
    Source = Excel.CurrentWorkbook(){[Name="Orders"]}[Content],
    AddedColumn = Table.AddColumn(Source, "OrderCategory", each 
        if [Amount] >= 10000 then "Enterprise"
        else if [Amount] >= 1000 then "Business"
        else "Consumer",
        type text
    )
in
    AddedColumn

A expressão if deve incluir ambas as ramificações then e else. Condições aninhadas se encadeiam com else if. O último parâmetro especifica o tipo da coluna, melhorando o desempenho e prevenindo problemas de inferência de tipo.

Para transformações complexas, funções auxiliares definidas no bloco let mantêm a legibilidade do código:

m
let
    // Função auxiliar para trimestre fiscal
    GetFiscalQuarter = (date as date) as text =>
        let
            month = Date.Month(date),
            fiscalQ = if month >= 4 and month <= 6 then "Q1"
                     else if month >= 7 and month <= 9 then "Q2"
                     else if month >= 10 and month <= 12 then "Q3"
                     else "Q4"
        in
            fiscalQ,
    
    Source = Excel.CurrentWorkbook(){[Name="Transactions"]}[Content],
    AddedQuarter = Table.AddColumn(Source, "FiscalQuarter", each GetFiscalQuarter([Date]), type text)
in
    AddedQuarter

Tratamento de erros no Power Query

Erros de transformação aparecem como valores "Erro" nas células em vez de falhar toda a consulta. A construção try-otherwise trata erros graciosamente:

m
// Tratar erros potenciais de divisão
let
    Source = Excel.CurrentWorkbook(){[Name="Metrics"]}[Content],
    AddedRatio = Table.AddColumn(Source, "Ratio", each 
        try [Value1] / [Value2] otherwise null,
        type number
    )
in
    AddedRatio

A palavra-chave try tenta a expressão e retorna um registro com os campos HasError e Value. A cláusula otherwise fornece um valor de fallback quando HasError é verdadeiro. Para mais controle, acesse os detalhes do erro com try Expression:

m
// Capturar detalhes do erro
let
    result = try SomeRiskyFunction(),
    output = if result[HasError] then "Error: " & result[Error][Message] else result[Value]
in
    output

Perguntas de entrevista sobre Power Query para analistas de dados

Os entrevistadores avaliam tanto as habilidades práticas quanto a compreensão de quando o Power Query se encaixa em um fluxo de trabalho. Estas perguntas aparecem frequentemente em entrevistas para analistas de dados.

O que é query folding e por que é importante?

Query folding traduz as transformações do Power Query em consultas nativas para a fonte de dados. Ao conectar ao SQL Server, uma etapa de filtro se torna uma cláusula WHERE executada no servidor, reduzindo a transferência de rede. Nem todas as transformações fazem folding: funções M personalizadas, certas manipulações de data e operações após uma etapa que não faz folding quebram a cadeia. Verifique o status do folding clicando com o botão direito em uma etapa e procurando "Ver Consulta Nativa".

Como o Power Query difere das fórmulas do Excel para transformação de dados?

As fórmulas do Excel operam célula por célula dentro da planilha e recalculam a cada mudança. O Power Query opera em tabelas antes delas chegarem à planilha, processando dados em massa durante a atualização. Para transformações como despivotar, deduplicação ou mesclagem de arquivos, o Power Query expressa a lógica mais diretamente do que fórmulas INDEX-MATCH aninhadas ou colunas auxiliares.

Quando escolher Power Query em vez de Power BI para ETL?

O Power Query no Excel é adequado para cenários onde os analistas precisam de dados transformados em formato de planilha para análise ad-hoc, tabelas dinâmicas ou compartilhamento com usuários que não têm acesso ao Power BI. O Power BI fornece visualização mais rica, maior capacidade de dados e recursos de compartilhamento empresarial. O mesmo código M funciona em ambas as ferramentas, então consultas desenvolvidas no Excel podem migrar para o Power BI Desktop sem reescrever.

Como lidar com incompatibilidades de tipos de dados ao anexar tabelas?

Defina tipos explícitos em cada tabela fonte antes de combinar com Table.Combine. Se uma coluna é texto em uma fonte e número em outra, a anexação falha ou produz erros. Use Table.TransformColumnTypes em ambas as fontes para impor tipos consistentes. O padrão try-otherwise lida com casos limite onde a conversão falha para valores específicos.

Explique a diferença entre Mesclar e Anexar no Power Query.

Mesclar realiza uma junção horizontal baseada em colunas-chave correspondentes, similar ao SQL JOIN. Anexar realiza uma união vertical de linhas de múltiplas tabelas, similar ao SQL UNION ALL. Mesclar requer pelo menos uma coluna comum para correspondência. Anexar requer que colunas com os mesmos nomes se alinhem corretamente.

Para preparação mais aprofundada sobre conceitos SQL que complementam as habilidades do Power Query, o módulo de funções de janela SQL cobre padrões de ranking e agregação, enquanto o módulo de subconsultas e CTEs SQL aborda técnicas de estruturação de consultas.

Opções de carregamento e estratégias de atualização

Após as transformações, o botão "Fechar e Carregar" oferece escolhas de carregamento: carregar para uma tabela de planilha, carregar apenas para o modelo de dados (Power Pivot), ou criar uma consulta apenas de conexão. Consultas apenas de conexão servem como etapas de preparação para outras consultas sem consumir espaço na planilha.

O comportamento de atualização depende do destino de carregamento. Tabelas de planilha se atualizam com o botão "Atualizar Tudo" ou podem ser configuradas para atualizar ao abrir o arquivo. Tabelas do modelo de dados participam do ciclo de atualização do modelo de dados da pasta de trabalho. Para consultas conectadas a bancos de dados externos, solicitações de credenciais podem aparecer durante a atualização a menos que credenciais salvas existam.

A atualização em segundo plano permite que a pasta de trabalho permaneça utilizável durante o carregamento de dados, mas cria complexidade quando fórmulas dependentes dependem de dados atualizados. A opção "Habilitar atualização em segundo plano" nas propriedades da consulta controla este comportamento. Para relatórios críticos, desabilitar a atualização em segundo plano garante execução sequencial.

Considerações de desempenho para grandes conjuntos de dados

O Power Query pode lidar com milhões de linhas, mas a responsividade da pasta de trabalho depende de como os dados carregam. Carregar para o modelo de dados em vez de tabelas de planilha evita o limite de linhas do Excel e melhora o desempenho das tabelas dinâmicas. Remover colunas desnecessárias cedo reduz a pegada de memória.

Para consultas que levam vários minutos, a "Visualização de Dados" no Editor de Consultas mostra apenas uma amostra. Transformações se aplicam ao conjunto completo de dados durante a atualização. Erros visíveis na visualização indicam problemas, mas alguns erros aparecem apenas com os dados completos. Executar uma atualização de teste em um subconjunto valida a consulta antes de processar tudo.

Ao consolidar muitos arquivos, o recurso de combinação binária do Power Query processa arquivos em paralelo. Definir uma função que transforma um arquivo, então invocá-la para cada linha na lista de arquivos, fornece mais controle do que a abordagem de combinação padrão.

A documentação da Microsoft sobre melhores práticas do Power Query detalha técnicas de otimização incluindo estruturas de dependência de consultas e uso de buffer.

Power Query para pipelines ETL reproduzíveis

As etapas gravadas no Power Query criam documentação da lógica de transformação. Quando os requisitos mudam, modificar uma etapa atualiza automaticamente todas as etapas subsequentes. Isso contrasta com manipulações ad-hoc do Excel que requerem recriação do zero quando os dados de origem mudam.

Equipes podem compartilhar consultas exportando conexões ou armazenando o código M das consultas em controle de versão. O Editor Avançado (Exibir > Editor Avançado) mostra o script M completo, que pode ser copiado e colado em outra pasta de trabalho. Para cenários empresariais, os dataflows do Power BI e Fabric fornecem gerenciamento centralizado de consultas.

  • O Power Query gerencia ETL dentro do Excel usando etapas de transformação gravadas e reproduzíveis
  • A linguagem M subjacente à interface visual permite personalizações além dos comandos da faixa de opções
  • Query folding envia filtros e projeções para os bancos de dados de origem para melhor desempenho
  • Mesclar realiza junções entre tabelas, Anexar empilha tabelas verticalmente
  • Atribuições de tipo e tratamento de erros previnem problemas silenciosos de qualidade de dados
  • Consultas apenas de conexão criam etapas de preparação reutilizáveis sem saída de planilha
  • Perguntas de entrevista focam em query folding, comparação com fórmulas e distinções entre mesclar e anexar

Comece a praticar!

Teste seus conhecimentos com nossos simuladores de entrevista e testes tecnicos.

Desafio do dia

Você saberia encontrar o bug em Data Analytics?

Um trecho real, um bug escondido, uma tentativa por dia. Sem conta para testar.

Anthony Fillion-Maillet

Escrito por

Anthony Fillion-Maillet

Fundador da SharpSkill

Desenvolvedor fullstack há mais de 10 anos. Dirige a SharpSkill e responde por tudo o que é publicado aqui.

Atualizado em 20 de setembro de 2026

Compartilhar

Artigos relacionados