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:
- Clicar no botão “fx” conforme print:
- 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.
Rafa parabéns isso vai me ajudar muito. Você é fera demais.
Obrigado xará!
Fico feliz em saber que te ajudará.
Aproveite ao máximo! 🙏