PowerQuery:如何用多列的每个列名替换文本



我正在尝试替换"x〃;在列数未知但至少有2列的表中的列名的每列(前2列除外(中。

我找到了更改一列的代码,但我希望它是动态的:

#"Ersatt värde" = Table.ReplaceValue(Källa,"x", Table.ColumnNames(Källa){2},Replacer.ReplaceText,{Table.ColumnNames(Källa){2}})

有什么解决办法吗?

如果我理解正确,我认为您可以尝试以下任一方法:

#"Ersatt värde" = 
let
columnsToTransform = List.Skip(Table.ColumnNames(Källa), 2),
accumulated = List.Accumulate(columnsToTransform, Källa, (tableState as table, columnName as text) =>
Table.ReplaceValue(tableState,"x", columnName, Replacer.ReplaceText, {columnName})
)
in accumulated

或:

#"Ersatt värde" = 
let
columnsToTransform = List.Skip(Table.ColumnNames(Källa), 2),
transformations = List.Transform(columnsToTransform, (columnName) => {columnName, each 
Replacer.ReplaceText(Text.From(_), "x", columnName)}),
transformed = Table.TransformColumns(Källa, transformations)
in transformed,

两种方法都遵循类似的方法:

  1. 找出要在哪些列中进行替换(即除前2列外的所有列(
  2. 在上一步中确定的列上循环,然后实际进行替换

  • 我使用了Replacer.ReplaceText,因为这是你在问题中使用的,但我相信这将取代部分匹配和完全匹配
  • 如果您只想替换完整的匹配项,我认为您可以使用Replacer.ReplaceValue

最新更新