Forum Discussion
replace values in columns that start the same using if statements
- 6 months ago
Here is one way to do it. Define the value replacements you want in a record. Then use Table.ReplaceValues with 1) a custom replacer function that does the replacement lookup and 2) use Table.ColumnNames + List.Select to perform it only on your cdp columns.
Sample (all "numbers" are text)
Column1 cdpColumn2 Column3 cdpColumn4 cdpColumn5 Column6 Column7 1 1 3 3 3 5 5 2 2 1 4 2 1 2 1 1 2 4 1 2 4 3 2 5 3 2 4 2 4 3 3 5 1 5 1 Advanced editor
let Source = Sample, Replacements = [1="ab",2="ac",3="ad",4="ae",5="af"], ReplaceCdps = Table.ReplaceValue( Source, null, null, // custom replacer: ignore oldValue and newValue (why we can just have them be null) // simply lookup replacement using value (val,old,new) as text => Record.FieldOrDefault( Replacements, val, "! missing replacement" ), // select col names with cdp start for above replacer List.Select( Table.ColumnNames( Source ), each Text.StartsWith(_,"cdp") ) ) in ReplaceCdpsOutput
Edit: switched in Record.FieldOrDefault for customer replacer as that won't error if replacement is missing, but can still flag as an issue (as I do above - alternatively, can replace with original val, null, or whatever)
Hi vc25,
is there a specific requirement or constrain to use Power Query for that?
You could also think of using TMDL view to change the corresponding column names. Check out the docs for more information: Use Tabular Model Definition Language (TMDL) view in Power BI Desktop - Power BI | Microsoft Learn
Or maybe this article can help you as well: How I Bulk Change Column Names in Power BI | by AnalystHub | Lucid Plexus | Medium
Best regards!
PS: If you find this post helpful consider leaving kudos or mark it as solution
- vc256 months agoHelper I
yeah I need to do it in power query to create my data visuals. I want to change the cell values, not the column names. each cell value has a corresponding value like "1" should be replaced by "ab" in columns that start with cdp.
- Mauro896 months agoSuper User
Ok got it. You can achieve this by using the UI feature "Replace values" in the transform tab of Power Query. There you can enter the "value to find" and also the "replace with" value. Repeat for all your statements and you should be good to go.
- vc256 months agoHelper I
yes. However, I wanted a way to replace values in columns that start with cdp. like I have columns labels cdp1, cdp2, cdp3, and that numbre of columns can vary so I would want it to dynamically replace value in columns