Funções Essenciais do Power Query: FillDown e ReplaceValue

Tempo de leitura:

3-4 minutos

Neste artigo vou mostrar-te 2 funções obrigatórias em Power Query! As funções são Table.FillDown e Table.ReplaceValue que devem ser usadas para uniformizar dados numa tabela quando precisamos de preencher linhas em branco, com valores nulos ou substituir valores como erros.

As funções aplicam-se em cenários como o da imagem em baixo, onde temos as células em branco e com erros em determinadas colunas.


A spreadsheet displaying sales data, including columns for market segments, countries, product types, discount bands, units sold, and revenue details.

Vamos ver como podemos corrigir estes cenários no Power Query.

Passar os dados para o Power Query

Começamos por passar os dados para o Power Query, convertendo o intervalo em tabela.

Screenshot of an Excel spreadsheet displaying data related to sales and products, with menu options highlighted for importing data from a table or range, and a dialog box requesting the range for table data.

Preencher colunas em branco

Já no Power Query, a primeira função que vamos usar é a função Table.FillDown que é invocada assim que usamos a Transformação nas colunas selecionadas com a opção Preencher – Baixo.

Esta função funciona para substituir uma célula em branco, com o valor nulo, pelo valor imediatamente acima da célula, até encontrar a próxima célula preenchida.

Quando escolhemos a opção Cima, o processo é invertido, preenchendo as células acima com o valor da célula em baixo.

Excel Power Query editor displaying a table with data columns including Segmento Mercado, País, Produto, Banda de Desconto, and Unidades Vendidas, featuring values and null entries.

O resultado é o esperado.

A screenshot of a data table in a spreadsheet application, displaying various columns such as 'Segmento Mercado', 'Pais', 'Produto', 'Banda de Desconto', and 'Unidades Vendidas'. The table includes data entries, validation statuses, and filtering options on the top toolbar.

Substituir valores

O próximo passo na transformação dos nossos dados é substituir valores em colunas. Neste exemplo os valores têm erros e precisamos de os substituir.

Através do Comando Substituir Valores presente no menu Transformar, podemos substituir um valor em várias colunas.

Screenshot of Microsoft Excel Power Query interface displaying a data table with options to substitute values in selected columns.

O resultado é o esperado…

Spreadsheet displaying sales data, including columns for quantities sold, price per unit, gross sales, discounts, and margins, with highlighted sections for validation and errors.

Vamos analisar as fórmulas

Preencher Valores

Para preencher valores o Power Query usa a função Table.FillDown

A função devolve uma tabela com os valores nulos existentes na coluna ou colunas, preenchidos com o valor acima deles. A função necessita de uma Tabela, e a indicação das colunas a preencher em forma de Lista -> {}

= Table.FillDown(

    TipoAlterado,

    {“Segmento Mercado”, “País”, “Produto”, “Banda de Desconto”}

)

Substituir Valores

Para substituir valores o Power Query usa a função Table.ReplaceValue

A função devolve uma tabela onde substitui um valor por um novo valor nas colunas especificadas.

A função necessita de uma Tabela (1), o valor antigo (2), o novo valor (3), um argumento que é uma função para substituir -> função replacer (3), que basicamente pode ser texto ou valor, e a indicação das colunas a preencher em forma de Lista -> {}.

= Table.ReplaceValue(

    PreenchidoParaBaixo,

    “#N/A”,

     0,

     Replacer.ReplaceValue,

     {“Vendas brutas”, “Desconto”, “Vendas”, “Custos Globais”, “Margem”}

)

O que conseguimos identificar aqui de comum nas duas funções?

As colunas sobre a forma de uma lista!!!

Sempre que temos esta lógica, o código é estático e propenso a erros! Por isso vamos utilizar uma função, Table.ColumnNames para obter de forma dinâmica os nomes das colunas necessárias para realizar cada operação.

A função Table.ColumnNames devolve exatamente o que precisamos – uma lista de valores, com os nomes das colunas que pode ser usada nas funções.

No exemplo vou criar 2 listas, uma para cada transformação

  1. ListaFill – Usada para a transformação FillDown
  2. ListaReplace – Usada para a transformação ReplaceValue

Contudo esta questão é um preciosismo, uma vez que para o cenário podemos usar todas as colunas da tabela sem afetar o resultado.

Lista FillDown

No cenário iniciei um novo passo após o Passo TipoAlterado, antes de começar as transformações.

Screenshot of an Excel interface showing a query definition window with a list of column names on the left and properties on the right.

Neste passo apliquei a função Table.ColumnNames, que devolve logo uma lista com todas as colunas. A lista pode ser reduzida para as colunas necessárias com a função List.FirstN.

= List.FirstN(
    Table.ColumnNames(TipoAlterado),

    4

)

Screenshot of a spreadsheet showing a formula and properties related to a data table, with sections labeled in Portuguese, including 'Lista', 'Definições da Consulta', and steps applied.

A mesma lógica pode ser aplicada para a ListaReplace, mas aqui podemos usar a função List.LastN, escolhendo os últimos valores, ou mesmo a função List.Skip que salta os 4 primeiros valores.

= List.Skip(

    Table.ColumnNames(TipoAlterado),

    4

)

Alterar as fórmulas originais

Para concluir o processo voltamos às fórmulas originais e substituímos as listas pelas novas listas!

Preencher

Screenshot of an Excel spreadsheet displaying various data columns including Market Segment, Country, Product, and Discount Band. The formula section shows 'Table.FillDown(TipoAlterado,ListaFill)'. The sidebar has consultation definitions with applied steps.

Substituir

Screenshot of an Excel table showing data columns for 'Preço de venda', 'Vendas brutas', 'Desconto', 'Custos Globais', and 'Margem', with a formula for replacing values.

Próximo artigo:

Artigo Anterior:


Comentários

Leave a Reply

Discover more from Exceldriven

Subscribe now to keep reading and get access to the full archive.

Continue reading