PowerQuery:如何用多列的每个列名替换文本
PowerQuery: How to replace text with each column name for multiple columns
我正在尝试将每列中的“x”(前两列除外)替换为 table 中的列名,列数未知但至少有 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,
两种方式都遵循类似的方法:
- 找出要在哪些列中进行替换(即除了前 2 列之外的所有列)
- 遍历上一步中确定的列并实际进行替换。
- 我使用了
Replacer.ReplaceText
,因为那是你在问题中使用的,但我相信这将取代部分匹配和完全匹配。
- 如果你只想替换完整匹配,我想你可以使用
Replacer.ReplaceValue
代替。
我正在尝试将每列中的“x”(前两列除外)替换为 table 中的列名,列数未知但至少有 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,
两种方式都遵循类似的方法:
- 找出要在哪些列中进行替换(即除了前 2 列之外的所有列)
- 遍历上一步中确定的列并实际进行替换。
- 我使用了
Replacer.ReplaceText
,因为那是你在问题中使用的,但我相信这将取代部分匹配和完全匹配。 - 如果你只想替换完整匹配,我想你可以使用
Replacer.ReplaceValue
代替。