Padronização de cabeçalhos
Na estreia de nossa série de workarounds, abordaremos uma técnica para a padronização de cabeçalhos.
Contexto
Nem todos os projetos de dados serão complexos. A necessidade e o nível de complexidade estão atrelados ao nível de maturidade do cliente em projetos desse tipo. Em certos momentos, você se verá em situações em que as fontes serão bem mais simples, como um arquivo ou uma tabela.
No entanto, não se engane: mesmo projetos pequenos podem apresentar grandes desafios.
Hoje compartilharei uma solução simples para um problema extremamente irritante: a mudança de cabeçalhos de arquivos por parte do usuário responsável pelos dados.
Como isso pode me afetar?
Bem, essa mudança pode causar problemas graves em projetos de BI que dependem desses arquivos. Quando a fonte de dados é atualizada, o Power BI pode não reconhecer mais os cabeçalhos antigos, gerando erros e a necessidade de atualização manual de todas as referências nos relatórios. Essa tarefa pode ser extremamente trabalhosa e aumentar o tempo de desenvolvimento do projeto.
Por isso, é importante estar preparado para essa situação e ter uma solução rápida e eficiente à mão. E é isso que vamos apresentar a seguir.
O que fazer?
Uma das maneiras de contornar problemas desse tipo é padronizar o nome das colunas nas primeiras etapas do processo. E é esse método que ensinaremos a seguir.
O nosso layout de exemplo será bem simples, deste modo, fique à vontade para testar nas suas próprias origens.
coluna1;mudaram o header;coluna3 teste4;4;13,2121 teste5;5;345,32 teste6;6;1,87
Primeiramente, crie uma lista com os nomes originais das colunas do arquivo.
= Table.ColumnNames(#"Cabeçalhos Promovidos")
Em seguida, crie uma nova lista com os nomes padronizados para as colunas.
= {"Nome Padronizado 1", "Nome Padronizado 2", "Nome Padronizado 3"}
Crie uma nova lista, compactada, a partir das duas criadas anteriormente.
= List.Zip({#"Lista com nomes atuais", #"Lista com nomes padronizados"})
Por fim, adicione uma nova etapa para alterar o nome das colunas utilizando a lista compactada.
= Table.RenameColumns(#"Cabeçalhos Promovidos", #"Cria lista compactada")
Seguindo esses passos, você poderá evitar problemas causados pela mudança de nome das colunas e desenvolver seus projetos de forma mais eficiente.
Exemplo completo
let Fonte = Csv.Document(File.Contents("C:\arquivo.csv"),[Delimiter=";", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]), #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Fonte, [PromoteAllScalars=true]), #"Lista com nomes atuais" = Table.ColumnNames(#"Cabeçalhos Promovidos"), #"Lista com nomes padronizados" = {"Nome Padronizado 1", "Nome Padronizado 2", "Nome Padronizado 3"}, #"Cria lista compactada" = List.Zip({#"Lista com nomes atuais", #"Lista com nomes padronizados"}), #"Padroniza nome de colunas" = Table.RenameColumns(#"Cabeçalhos Promovidos", #"Cria lista compactada"), #"Altera tipos" = Table.TransformColumnTypes(#"Padroniza nome de colunas",{{"Nome Padronizado 1", type text}, {"Nome Padronizado 2", Int64.Type}, {"Nome Padronizado 3", type number}}) in #"Altera tipos"
Até o próximo workaround.