Estou trabalhando em um script do Power Query M para renomear colunas com base em certas regras predefinidas e palavras-chave encontradas nos nomes das colunas. Os dados vêm de diferentes conjuntos de dados, e preciso padronizar os nomes das colunas em todos os conjuntos de dados.
O que eu tentei: Aqui está uma versão simplificada do código que estou usando para renomear:
// Function to rename columns
let
RenameColumns = (xtable as table) as table =>
let
// Get current column names
names = Table.ColumnNames(xtable),
// Transform column names based on the conditions
transformedNames = List.Transform(names, each
let colName = _,
// Exact match renaming
newName = if colName = "Org Level 2" then "Cost Centers"
else if colName = "Org Level 3" then "Work Assignment Cost Center"
// Keyword-based renaming for Employment Status
else if Text.Contains(colName, "Active") or
Text.Contains(colName, "Terminated") or
Text.Contains(colName, "Leave of absence")
then "Employment Status"
// Keyword-based renaming for Full/Part Time
else if Text.Contains(colName, "Full-Time") or
Text.Contains(colName, "Full Time") or
Text.Contains(colName, "Part Time")
then "Full/Part Time"
// Keep original name if no conditions are met
else colName
in newName
),
// Rename columns using the transformed names
renamedTable = Table.RenameColumns(xtable, List.Zip({names, transformedNames}))
in
renamedTable
in
RenameColumns
O que realmente acontece: A renomeação de correspondência exata funciona conforme o esperado. No entanto, as colunas que contêm palavras-chave específicas (como "Ativo" ou "Tempo integral") não são renomeadas consistentemente conforme o esperado. A renomeação baseada em palavras-chave parece falhar ou não se aplica corretamente.
Como posso renomear corretamente colunas com base em palavras-chave encontradas em seus nomes no Power Query M? Existe uma maneira melhor de lidar com renomeação condicional usando Table.TransformColumnNames ou Table.RenameColumns?
Considerando o exemplo muito limitado que você postou em seu comentário, o seguinte deve corrigir seu erro ao renomear a coluna com base na palavra-chave.
Parece que suas palavras-chave estão localizadas no conteúdo da coluna, enquanto sua função está testando apenas os nomes das colunas.
Se o seguinte não funcionar para você, você terá que fornecer uma amostra de dados representativa que seja típica do que você tem.
Note que esses tipos de comparações PQ são sensíveis a maiúsculas e minúsculas. Se você precisar de insensibilidade a maiúsculas e minúsculas, o código precisará ser modificado.