Skip to main content

Power Query - "SUBSTITUTE" Function: Remove/Replace multiple values in a column in One Step.

Often times, when you get data from a source, there will most probably be something incorrect that needs to be fixed using an ETL process of Power Query. And most of those transformations would require either Replacing or Removing string's that are not necessary.

For example, if you extract any financial data from a source which has multiple currency symbols, there's a chance that the numbers get extracted along with the currency symbols like "$700"/"€700" instead of 700. And these type of cases makes it tough to Transform the Data to our wish as the value will be considered as a text instead of a number.

In those type of cases, we would most likely have to create multiple steps to remove the multiple currency symbols from the Column. But thanks to the solution provided by Marcel for one of the questions posted on Stack Overflow, with a little manipulation of the Query language (M), we can replace/Remove multiple strings in one step using the List. Accumulate function.

Remove Multiple Strings:

Below is a sample code that you can use to remove all the strings/text fields highlighted in blue from any column.

= Table.TransformColumns(#"Previous Step",{{"Column Header", each List.Accumulate(Text.ToList("⬣£€$"),_,(String,Remove) => Text.Replace(String,Remove,""))}})

You can copy-paste the above code in your query and replace the highlighted text to match your query.

Replace Multiple Strings:

Below is a sample code that you can use to replace all the strings/text fields highlighted in blue from any column to the text highlighted in Red.

= Table.TransformColumns(#"Previous Step",{{"Column Header", each List.Accumulate({{"$","a"},{"¥","b"},{"¢","c"},{"£","d"}},_,(string,replace) => Text.Replace(string,replace{0},replace{1}))}})

You can copy-paste the above code in your query and replace the highlighted text to match your query.

P.S: 

  1. You can check out the following video from Miguel on how to create a custom function that does the same thing. Although, the Syntax that he uses is for Advanced users.
  2. Also, you can also have a look at the following video by Marcel where he explains the List.Accumulate function.


Comments

Popular Posts

Scribble on your PC/Mac screen with these annotation tools

     While you are in a presentation or hosting a webinar, you might want to write/highlight a part of your screen to draw the attention of your audience on something important. Although you can use the tools from powerpoint to scribble in the PPT file, you might want to write something on other apps as well.      That's where these awesome apps come into play. Although these apps have similar features, you might prefer one above the other. ZoomIt :       ZoomIt is an application developed by Microsoft which can be installed from the following link . It is a free tool with features like Text, Shapes, whiteboard, blackboard, zoom . When activated, the tool converts the current screen into a static image and allows you to draw/write on it. One the tool is activated, you can also choose to create a whiteboard/blackboard screen on your PC to draw on. Although the colors are limited to 6 colors: Red (R) , Green (G) , Blue (B) , Orange (O...

Grasshopper: offsetting curves on surface vs scaling curves on surface

Though in Grasshopper Offset and Scale are two different node functions, when it comes to a planar surface, the results of the both are similar. But, I found the " Scale" node to be effective when you want to loft the resultant curve with another. The following images show the different results of a Voronoi structure that yielded when scale and offset nodes are used. When the Offset node is used When Scale is used

Grasshopper: Voronoi Holes on a Planar surface

One of the best natural examples for a Voronoi is the Wing structure of a dragon fly.Grasshopper can help us to build a shape like this in Rhino. Image Courtesy:  The Pond blog Grasshopper by default has a node for Voronoi, we just have to prepare the necessary information to feed into the node. The following example shows how to create a Voronoi shaped holes in a surface Create a planar  Surface  from rhino or grasshopper Randomly Populate the surface with points using the  Populate 2D  Node Feed the surface and the points into the  Voronoi  node and feed a number slider too to adjust eh radius This forms the required Voronoi structure which you can edit the number of points or radius. To create the holes we need to offset each and every inner portion towards its centre using the  Scale  node We can find the centre of each of the inner portions using Area node I'm not sure why but using the offset command su...