Domina a Função List.Transform no Power Query

Tempo de leitura:

2-4 minutos

Neste artigo hoje vou mostrar-te como podes trabalhar com uma das principais estruturas de dados do Power Query – Listas com uma das funções mais importantes: a Função List.Transform.

A função List.Transform permite iterar uma lista de valores e aplicar transformações a cada item da lista. O termo iterar significa percorrer cada item. A função List.Transform faz parte do conjunto de funções de iteração disponíveis em Power Query, e executa operações semelhantes a um Loop (ciclo) quando estamos a falar em termos de programação.

No artigo, vou mostrar-te tudo o que precisas de saber sobre esta função desde a base até exemplos mais complexos!

Iniciar o Power query e criar uma lista

Vamos começar por iniciar o Power Query e perceber como podemos em primeiro lugar obter uma lista. Acedemos ao Menu Dados [Data] -> Obter Dados [Get Data] -> Iniciar o Editor do Power Query [Launch Power Query Editor].

Menu do Power Query mostrando a opção 'Iniciar Editor do Power Query' selecionada.

Uma vez no Power Query Editor, podemos iniciar uma nova consulta em branco.

Interface do Editor do Power Query mostrando opções para iniciar uma nova consulta em branco.

Na consulta em branco, vamos iniciar uma lista. Neste momento iniciamos uma lista pela lógica de list initialization com os valores colocados entre {}.

Captura de tela do Power Query mostrando uma lista de valores numéricos: {1, 2, 3, 4, 5} em uma nova consulta.

Bases da função List.Transform

A função List.Transform necessita de uma Lista e uma transformação definida sobre a forma de função.

List.Transform(

   list as list,

   transform as function,

) as list

Vamos realizar uma transformação simples na lista criada, multiplicando os valores de cada lista por 2.

Imagem ilustrativa do Power Query mostrando uma lista de valores numéricos e a aplicação da função List.Transform para multiplicar cada valor por 2.

= List.Transform(

    Origem,    // Lista como origem

    each _ * 2 // Transformação Aplicada

)

No código, verificamos a expressão ‘each _’:

  • each _ representa o item (valor) no contexto da lista.

List.Transform com condicionais

Vamos agora num segundo exemplo aplicar a função List.Transform com condicionais. Significa que durante a iteração na lista vamos avaliar uma condição com a expressão if e retornar um resultado diferente em função da condição.

= List.Transform (

    Origem,

    each if Number.IsOdd(_) then _ * 3 else _ * 2

)

Imagem do Power Query mostrando a inicialização de uma lista com valores sequenciais de 1 a 12. À direita, exemplo de aplicação da função List.Transform com condicionais e a operação de multiplicar valores ímpares por 3 e os pares por 2.

List.Transform para Texto

Podemos também realizar transformações a listas com texto usando uma Lista inicializada de forma sequencial: {“A”..”Z”}.

Depois é só aplicar uma transformação, neste caso adicionar um prefixo antes de cada letra.

= List.Transform(

    Origem,

    each “Letra: ” & _

)

Captura de tela do Power Query Editor mostrando a aplicação da função List.Transform para adicionar um prefixo a cada item de uma lista sequencial de letras.

E podemos continuar com mais transformações, transformando o Texto em Maiúsculas.

= List.Transform(

    Personalizado1,

    each Text.Upper(_)

)

Interface do Power Query mostrando a aplicação da função List.Transform para calcular a média de sub-listas.

Ou mesmo ainda continuar e dividir criar uma Lista de Listas com cada item a ser uma lista com 2 valores:

= List.Transform(

    Personalizado2,

    each Text.Split(_, “:”)

)

Tela do Editor do Power Query mostrando a aplicação da função List.Transform com a operação Text.Split em uma lista de valores.

Neste cenário, uma vez que temos uma lista com vários itens, podemos gerar uma tabela.

= Table.FromRows(Personalizado3, {“PREFIXO”, “LETRA”})

Interface do Power Query mostrando a função List.Transform aplicada a uma lista, com visualização das listas e transformações

List.Transform para Datas

Criando uma lista de valores entre 1 e 12 {1..12} podemos usar uma das transformações mais comuns que é gerar um conjunto de datas a partir dos valores.

= List.Transform(

   Origem,

   each #date(2025,_,1)

)

Captura de tela do Power Query mostrando uma lista de números de 1 a 12 e a transformação que cria datas correspondentes aos meses do ano 2025.

A partir do momento em que temos uma data podemos realizar múltiplas transformações conforme a necessidade, acrescentando mais passos na consulta:

= List.Transform(Personalizado1, each Date.DaysInMonth(_))

= List.Transform(Personalizado1, each Date.EndOfMonth(_))

= List.Transform(Personalizado4, each Text.Proper(Date.MonthName(_)))

List.Transform com múltiplas Listas

Numa lista podemos ter também múltiplas listas, ou seja, uma lista de listas. E em cada Sub-Lista aplicar uma transformação.

= List.Transform(

    Origem,

    each List.Average(_)

)

Interface do Power Query mostrando uma lista de consultas com uma nova consulta selecionada, enquanto aplica a função List.Transform para calcular a média de sub-listas.

Ou mesmo obter o valor máximo de cada item da lista…

= List.Transform(

    Origem,

    each List.Max(_)

)

Exibição do Editor do Power Query com uma fórmula List.Transform aplicada, visando obter o valor máximo de cada sub-lista.

Conclusão

A função List.Transform é uma das mais importantes que deves ter no teu leque de funções para trabalhar em Power Query. Como podes verificar existem inúmeras utilizações para esta função que permite transformar vários tipos de valores numa lista e ainda estruturas complexas como sub-listas.

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