【问题标题】:Power Query - Find and replace in one step instead of severalPower Query - 一步查找和替换,而不是几个
【发布时间】:2020-10-23 23:47:52
【问题描述】:

我这里有一个简单的专栏。


我正在使用 Power Query 替换一些值,

1 变成 119,2 变成 201,3 变成 321

没有什么特别的逻辑,就是为了纠正用户打错的数字。


我做了一个查找替换功能。 Table.ReplaceValue(#"Changed Type",1,119,Replacer.ReplaceValue,{"Name"}) 效果很好。

我想将其他查找和替换功能合并到一个步骤中以使代码更简洁。

我试过了,但没有用。

Table.ReplaceValue(#"Changed Type",{1,2},{119,201},Replacer.ReplaceValue,{"Name"})

我不想在我的 PQ 中有 10 个不同的查找和替换步骤,只想有一个步骤。

【问题讨论】:

    标签: powerbi powerquery m


    【解决方案1】:

    选项-1

    下面是所有替换在一起的M代码-

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlSK1YlWMgKTxkqxsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
        
    
        #"AllReplace" = [
            #"1" = "119", 
            #"2" = "201", 
            #"3" = "321"
        ],
        #"Replaced Value" = Table.TransformColumns(Source,{{"Column1",each Record.FieldOrDefault(AllReplace,_,_)}})
    in
        #"Replaced Value"
    

    注意:需要将列编号为Text。您可以在 Replace 步骤之后将该列转换为 Number

    输入

    输出

    选项-2:

    您还可以使用以下代码创建自定义列-

    if [Column1] = 1 then 119 else if [Column1] = 2 then 201 else 321
    

    创建自定义列后,您可以保留或删除源列。

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      相关资源
      最近更新 更多