# 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. - Published: 2026-09-20 - Updated: 2026-09-20 - Author: Anthony Fillion-Maillet - Reading time: 5 min --- 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. ## 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](/technologies/data-analytics/interview-questions/sql-window-functions) cobre padrões de ranking e agregação, enquanto o [módulo de subconsultas e CTEs SQL](/technologies/data-analytics/interview-questions/sql-subqueries-ctes) 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](https://learn.microsoft.com/pt-br/power-query/best-practices) 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 --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/pt/blog/data-analytics/excel-power-query-etl-tutorial-interview-2026