Forum Discussion

dkernen's avatar
dkernen
Resolver II
5 years ago
Solved

Converting text (Replacing values) within multiple columns in Power Query

Good morning!  I have a simple file I need to massage and I would like to learn how to do it more efficiently.  I have four columns that have values that all begin with "Yes" (Yes please enter by whom, Yes please enter which physician, etc), that I want to just change to "Yes".  Here is a snippit of my multi-step process.

 

#"Replaced Value UMD" = Table.ReplaceValue(#"Reordered Columns","Yes (please enter by whom):","Yes",Replacer.ReplaceText,{"UMD?"}),
#"Replaced Value MD" = Table.ReplaceValue(#"Replaced Value UMD","Yes (please enter which physician):","Yes",Replacer.ReplaceText,{"MD?"}),
#"Replaced Value BD Early" = Table.ReplaceValue(#"Replaced Value MD","Yes (please explain):","Yes",Replacer.ReplaceText,{"BDEarlyConv?"}),
#"Replaced Value DCD Pron" = Table.ReplaceValue(#"Replaced Value BD Early","Yes (please explain):","Yes",Replacer.ReplaceText,{"DCDPronIssue?"})

Would you be able to show me how to use ReplaceValue with some kind of "starts with" functionality?

Files attached below.

PBIX

 

Sample Data

 


 Thank you in advance!!
@ReplaceValues

  • Hi dkernen ,

    You can try this query:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUYpMLVbQKMhJTSxOVUjNK0ktUkiqVCjPyM/VtMIqW56RmZyhUJBRWZyZnJmYh6mqoiAnMROfeKxOtJITUBaCcOkFK3MeGAfGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Category = _t, UMD = _t, MD = _t, BDEarlyConv = _t, DCDPronIssues = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Category", type text}, {"UMD", type text}, {"MD", type text}, {"BDEarlyConv", type text}, {"DCDPronIssues", type text}}),
        #"AllReplace" = 
            [
                #"Yes (please enter by whom):"= "Yes",
                #"Yes (please enter which physician):" = "Yes",
                #"Yes (please explain):" = "Yes"
            ],
        #"Replace Value" = 
            Table.TransformColumns(
                #"Changed Type",
                    {
                        {"UMD", each Record.FieldOrDefault(#"AllReplace",_,_),type text},
                        {"MD", each Record.FieldOrDefault(#"AllReplace",_,_),type text},
                        {"BDEarlyConv", each Record.FieldOrDefault(#"AllReplace",_,_),type text},
                        {"DCDPronIssues", each Record.FieldOrDefault(#"AllReplace",_,_),type text}
                    }
            )
    in
        #"Replace Value"

     

    Best Regards,
    Community Support Team _ Yingjie Li
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

4 Replies

    • dkernen's avatar
      dkernen
      Resolver II

      Greg - thank you for you swift reply!  Definitely I could strip out anything after the first space (if a space exists).  Are you suggesting that  I create new dummy columns, then delete the ones I don't need, and then rename the new one?  I was perhaps hoping I could do it all in one step.  Is that not possible?

       

      Greg_Deckler  

      • v-yingjl's avatar
        v-yingjl
        Community Support

        Hi dkernen ,

        You can try this query:

        let
            Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUYpMLVbQKMhJTSxOVUjNK0ktUkiqVCjPyM/VtMIqW56RmZyhUJBRWZyZnJmYh6mqoiAnMROfeKxOtJITUBaCcOkFK3MeGAfGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Category = _t, UMD = _t, MD = _t, BDEarlyConv = _t, DCDPronIssues = _t]),
            #"Changed Type" = Table.TransformColumnTypes(Source,{{"Category", type text}, {"UMD", type text}, {"MD", type text}, {"BDEarlyConv", type text}, {"DCDPronIssues", type text}}),
            #"AllReplace" = 
                [
                    #"Yes (please enter by whom):"= "Yes",
                    #"Yes (please enter which physician):" = "Yes",
                    #"Yes (please explain):" = "Yes"
                ],
            #"Replace Value" = 
                Table.TransformColumns(
                    #"Changed Type",
                        {
                            {"UMD", each Record.FieldOrDefault(#"AllReplace",_,_),type text},
                            {"MD", each Record.FieldOrDefault(#"AllReplace",_,_),type text},
                            {"BDEarlyConv", each Record.FieldOrDefault(#"AllReplace",_,_),type text},
                            {"DCDPronIssues", each Record.FieldOrDefault(#"AllReplace",_,_),type text}
                        }
                )
        in
            #"Replace Value"

         

        Best Regards,
        Community Support Team _ Yingjie Li
        If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.