Tempo de leitura:
Um conjunto de transformações que habitualmente realizamos em Power Query, é realizar transformações em colunas, como por exemplo, uniformizar um conjunto de texto numa coluna, e embora seja bastante intuitivo, é um processo que não é dos mais eficazes! Porquê? Porque, quando realizas este tipo de transformações acontecem normalmente 2 situações.
- Ou executas vários passos, que não é ideal para a performance da tua Consulta
- Ou, mesmo realizando várias transformações, em diversas colunas, no mesmo passo, a transformação é estática, o que significa que estás a “chamar” as colunas de uma forma direta, o que proporciona possíveis erros no futuro caso a estrutura dos dados mude.
Neste artigo vou mostrar-te como podes usar as funções Table.TransformColumns e List.Transform em Power Query para conseguir realizar transformações em várias colunas em apenas um passo e tornar dinâmico quanto possível para minimizar a propensão ao erro!
Porquê de te mostrar 2 funções?
Em primeiro lugar porque elas são semelhantes como vais poder verificar, e em segundo lugar, quando aplicas a função Table.TransformColumns deverás saber como funciona a função List.Transform, uma vez que uma lista é apenas uma coluna, e sabendo utilizar esta função, podes realizar transformações mais complexas numa coluna!
Iniciar a consulta
Vamos iniciar o Editor do Power Query, onde podes aceder pelo menu ou pelo atalho [ALT] + [F12]

Uma vez dentro do Power Query podemos iniciar 2 consultas:

= Excel.CurrentWorkbook()[Content]{0}

Este código permite aceder ao ficheiro atual, navegando para a coluna [Content] e aceder ao primeiro item {0} -> Folha do ficheiro. Repetimos o processo para criar outra consulta acedendo à 2ª folha {1}
= Excel.CurrentWorkbook()[Content]{1}

Função Table.TransformColumns
A função Table.TransformColumns permite aplicar transformações a uma coluna da tabela. Os seus argumentos são simples:
- Table: Tabela que contem as colunas a transformar
- Transform Operations: A operação a realizar para a transformação.
- Neste caso a operação deve ser feita no formato de Lista com sub-lista: { column name, transformation } ou podemos incluir ainda na transformação o tipo de dados na coluna resultante da transformação: { column name, transformation, new column type }
- Default Transformation: Aplica uma transformação pre-definida a todas as colunas, excluindo as colunas selecionadas na transformação. Vamos ver este exemplo!
- Missing Field: Por pré-definição a função usa MissingField.Errorque aciona um erro caso alguma coluna colocada no argumento 2 -> Transform Operations não exista. Podemos alterar este comportamento para não quebrar a consulta utilizando outras numerações: MissingField.UseNull ou MissingField.Ignore.
Algumas notas sobre a função:
- Para além de realizarmos transformações na coluna podemos alterar o tipo de dados da mesma, este é o 3º elemento da lista no passo 2: Transform Operations
- A função suporta uma transformação pré-definida -> Passo 3: Default Transformation
- A transformação apenas pode ocorrer na coluna em si a ser transformada.
- Quando realizamos a transformação, não podemos incluir dados de outras colunas, infelizmente. Uma condição que implique dados de outras colunas não é possível realizar.
Exemplo: Aplicar maiúsculas numa coluna.

No cenário é gerado o seguinte código:
= Table.TransformColumns(Source,{{“Departamento”, Text.Upper, type text}})

Para percebermos melhor o código, apresento o mesmo formatado:

= Table.TransformColumns(
Source,
{
{“Departamento”, Text.Upper, type text}
}
)

No caso da transformação ser aplicada em várias colunas, a lógica é a mesma, onde dentro da Lista Principal, temos uma lista com a 2ª transformação e assim sucessivamente.

Aplicar a função através do código M
Através do código M podemos aplicar naturalmente transformações um pouco mais complexas, como vamos poder ver no exemplo.
= Table.TransformColumns(TranformacaoUPPER,{{“Apelido”, each if Text.StartsWith(_, “M”) then Text.Upper(_) else Text.Lower(_)}})

Função List.Transform
A função List.Transform é semelhante, uma vez que podes imaginar que estar a realizar a operação a uma coluna. Simplesmente a transformação é realizada a cada item da lista. Nos seus argumentos a lógica é semelhante.
- List: A lista usada para a transformação
- Tranform: A Transformação aplicada sobre cada item da lista.
Imagina então o cenário onde temos uma lista.
A mesma lógica pode ser aplicada com a função List.Transform
= List.Transform(Source, each if Text.StartsWith(_, “M”) then Text.Lower (_) else Text.Upper(_))

Aplicar transformações a várias colunas
Podemos aplicar a transformação a várias colunas em simultâneo, seguindo o princípio da sintaxe da expressão Table.TransformColumns onde aplicamos a transformação com uma função integrada numa lista.
Definir uma lista com as colunas a alterar
Em primeiro lugar, vamos definir uma lista (lista principal) com as colunas a alterar. Para tal podemos aceder à base e escolher as colunas que pretendemos alterar. Aqui podemos usar o código necessário para escolher as colunas. Eu optei pela função List.Select para a expressão Table.ColumnNames, para selecionar os itens da lista.
= List.Select(Table.ColumnNames(Source), each not Text.Contains (_, “(“))

Depois de termos as colunas obtemos efetivamente uma lista. Para a função Table.TransformColumns este é um dos parâmetros -> uma lista.
Aplicar a transformação apenas às colunas indicadas.
Agora podemos aplicar a lógica de transformar uma série de colunas em simultâneo.
= Table.TransformColumns (
Source,
List.Transform ( ColunasTransformar, each {_, Text.Upper, Text.Type}),
Number.From,
MissingField.Ignore
)

Aplicar transformações a outras colunas
Imagina um cenário em que agora não tens um padrão específico como no caso, em que defini apenas as colunas que “não têm um parêntesis” para transformar. Neste caso temos de ser mais específicos e identificar uma técnica que indique a transformação a aplicar a uma minoria, e deixar a transformação Default fazer o seu trabalho às outras colunas.
Simplificando o raciocino, nesta tabela (Query 2) temos várias colunas de texto, e apenas 3 colunas diferentes (Data de nascimento, Idade e Salário).
Assim podemos aplicar transformações específicas a estas 3 colunas e deixar as restantes com a transformação Default.

Assim aplicamos o seguinte código (Advanced Editor):
let
Source = Excel.CurrentWorkbook()[Content]{1},
Transformacao = Table.TransformColumns(
Source,
{
{ “Data de Nascimento (Ano)”, each Date.Year (_), Int64.Type },
{ “Idade (anos)”, each Number.From (_), Int64.Type},
{ “Salário (€)”, each _ * 1.10, Int64.Type}
},
Text.Upper,
MissingField.Ignore
)
in
Transformacao
Como podes verificar, tecnicamente podes usar vários métodos, conforme o que os dados te proporcionam. Neste caso este último cenário é importante, no caso de teres algumas colunas excecionais que deves realizar transformações. Pensando na “maioria” como algo que pode receber uma transformação Default.
Próximo artigo:
Artigo Anterior:
Ficheiros
Artigos por Categoria
- Microsoft Excel (46)
- Power Apps (16)
- Power Automate (3)
- Power BI (13)
- Power Query (14)
- Python (3)
- VBA (7)
Últimos Artigos
- Funções DAX para Análise Avançada: INDEX, OFFSET e WINDOW
- Funções REDUCE e SCAN no Excel: Entenda a Diferença
- Como Usar Parâmetros no Power BI para Relatórios Interativos
- Como usar o Copilot no Excel para criar fórmulas, resumos, gráficos e preparar impressão
- Comparação entre Claude e Copilot no Excel

Leave a Reply