[PQ] Dica de Ouro: Renomeação Automática de Colunas no Power Query


Você já recebeu aquele arquivo para tratar no Power Query com mais de 20 colunas para renomear?

Existem duas maneiras para realizar esta tarefa árdua. A primeira é alterar os nomes das colunas uma por uma de forma manual e a segunda é mais prática e rápida utilizando uma tabela auxiliar “de_para”.

Neste artigo vou trabalhar com duas tabelas inseridas manualmente no Power Query.

Para aproveitar o que já foi criado você pode inserir consultas nulas, abrir o editor avançado e colar os códigos de cada uma das tabelas, lembrando que é um código para cada consulta nula.

A tabela Fato possui 30 colunas e 1 linha.

Abaixo como está estruturada a tabela sendo o print das 5 primeiras colunas:

E na sequência o código para criar a tabela:

let

    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Ncy7DcAwDAPRXVS7MOl8nFkM779GeAFSnCo+rVWqVk4jHelMV7rTTE9S57AUU7HVPxZrMRd7AQzw9xpggAFGGGGEEUaMXnu/", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"1" = _t, #"2" = _t, #"3" = _t, #"4" = _t, #"5" = _t, #"6" = _t, #"7" = _t, #"8" = _t, #"9" = _t, #"10" = _t, #"11" = _t, #"12" = _t, #"13" = _t, #"14" = _t, #"15" = _t, #"16" = _t, #"17" = _t, #"18" = _t, #"19" = _t, #"20" = _t, #"21" = _t, #"22" = _t, #"23" = _t, #"24" = _t, #"25" = _t, #"26" = _t, #"27" = _t, #"28" = _t, #"29" = _t, #"30" = _t]),

    #"Tipo Alterado" = Table.TransformColumnTypes(Fonte,{{"1", Int64.Type}, {"2", Int64.Type}, {"3", Int64.Type}, {"4", Int64.Type}, {"5", Int64.Type}, {"6", Int64.Type}, {"7", Int64.Type}, {"8", Int64.Type}, {"9", Int64.Type}, {"10", Int64.Type}, {"11", Int64.Type}, {"12", Int64.Type}, {"13", Int64.Type}, {"14", Int64.Type}, {"15", Int64.Type}, {"16", Int64.Type}, {"17", Int64.Type}, {"18", Int64.Type}, {"19", Int64.Type}, {"20", Int64.Type}, {"21", Int64.Type}, {"22", Int64.Type}, {"23", Int64.Type}, {"24", Int64.Type}, {"25", Int64.Type}, {"26", Int64.Type}, {"27", Int64.Type}, {"28", Int64.Type}, {"29", Int64.Type}, {"30", Int64.Type}})

in

    #"Tipo Alterado"

Já a segunda tabela “de_para” ela possui duas colunas conforme print abaixo:

Esta tabela tem menos linhas do que o total de colunas da tabela fato para mostrar que é possível não renomear todas as colunas, mas também tem o número 31 na linha 25 que não possui coluna “31” para ter como exemplo quando existe um nome na coluna_original que não existe na tabela.

Abaixo o código da tabela de_para:

let

    Fonte = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("TZA5DsMwEAP/otqFyfX5FkEIjLRBUuX/CZYGlp0wxXI0vTe0qT0/r+/7eqCNqTcWYIIoEAmWAkuCtcCaYCuwJdgL7AmOAkcCzCYyC5kK5ALbhsZhY9Aa7Dru86ehUx+1RWqRVoN3Du8hCVoRKgnNi/KiVaGy0FQpVVoZKg3NnrIPUw2phqn+32P8AA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [coluna_original = _t, coluna_renomeada = _t]),

    #"Tipo Alterado" = Table.TransformColumnTypes(Fonte,{{"coluna_original", type text}, {"coluna_renomeada", type text}})

in

    #"Tipo Alterado"

Ressalto que para funcionar as etapas que faremos a seguir as duas colunas da tabela de_para precisam ser do tipo texto.

Com as tabelas estruturadas podemos começar a alterar os nomes das colunas, o primeiro passo que farei aqui é renomear manualmente para trazer o exemplo do código no Power Query.

Cliquei com o botão direito na coluna 2 e na sequência selecionar a opção renomear:

Ao renomear a coluna “2” para “coluna_2” uma etapa foi criada com o seguinte código:

Se analisarmos o código inserido para renomear as colunas o Power Query utiliza uma lista conforme destacado no print abaixo {{“2”, “coluna_2”}} .

Selecionando este pedaço de código, criando uma consulta nula e colando temos uma lista como resultado e no exemplo abaixo:

Compreendendo que precisamos passar uma lista na função Table.RenameColumns para renomear todas as colunas precisaremos transformar a tabela de_para em uma lista.

Para realizar esta transformação utilizarei Table.ToRows e seguirei os seguintes passos:

  1. Clicar no botão “fx” conforme print:
  2. Digitar o seguinte código:

O resultado é uma lista de listas.

Com a linha um selecionada podemos observar que foi criada uma lista com as duas colunas conforme precisamos.

Desta maneira, vamos fazer algumas alterações nos nossos códigos, o primeiro será excluir esta etapa aplicada na consulta de_para para retornar para uma tabela.

Na sequência, altero a última etapa aplicada na tabela fato utilizando a função Table.ToRows conforme print abaixo:

Mas nesse momento a consulta retornará um erro conforme imagem abaixo:

Isto ocorre porque não foi encontrada a coluna com nome 31 na tabela fato e existe na tabela de_para.

Para resolver este problema, podemos utilizar uma opção dentro da função Table.ToRows

que ao não ter a coluna o power query ignorará a coluna faltante:

Desta maneira o resultado será as colunas renomeadas conforme a tabela de_para.

Espero que este artigo te ajudado a sanar as dúvidas de como tratar a questão de renomear as colunas de forma rápida e prática.

Se você gostou do conteúdo, convido a conhecer mais do meu trabalho no curso gratuito que preparei com exemplos de consultas GET e POST, além de todo conteúdo exclusivo que encontra no curso completo.

2 thoughts on “[PQ] Dica de Ouro: Renomeação Automática de Colunas no Power Query

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

© 2024 Direitos Reservados - Chora {API}. Desenvolvido por Augusto Mello

Fale conosco
1
Fale conosco
Olá,
Podemos te ajudar?