微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Power quary:如何用多个列的每个列名替换文本

我正在尝试用表中的列名(每列的数目未知但至少2列)替换每列(前2列除外)中的“ x”。

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

#"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),transformations = List.Transform(columnsToTransform,(columnName) => {columnName,each 
         Replacer.ReplaceText(Text.From(_),columnName)}),transformed = Table.TransformColumns(Källa,transformations)
    in transformed,

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

  1. 找出要替换的列(即除前2列以外的所有列)
  2. 重叠上一步中确定的列并实际进行替换。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。