Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
thomaskelly
Helper I
Helper I

Replace null values with contents from another column

Good Morning

 

Is it possible in query editor to replace the null values of one column with the adjcent contents of another column?

 

Many Thanks

 

Tom

2 ACCEPTED SOLUTIONS

Yes. Select Add Column and then write an if statement something like this (it is case sensitive)

 

= if [column 1] = null then [column 2] else [column 1] 



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.

View solution in original post

bdymit
Resolver II
Resolver II

Saw this old post and found another solution, so I thought I would share.

 

You can modify the "M" code if you are not looking to add a column/ delete the old one.

 

=Table.ReplaceValue(#"Last Step",null, each _[Values Column],Replacer.ReplaceValue,{"Null Column"})

 

#"Last Step" being the previous step in your query

[Values Column] being the column that has the values in it to replace the nulls

"Null Column" being the column with the null values

 

Be sure to use the " each _[Values Column]" syntax with the spaces before and after "each", otherwise you will get an error.

 

Here is the original video from Miguel Escobar.

https://www.poweredsolutions.co/2015/05/08/power-query-for-excel-replace-values-using-values-from-an...

 

Cheers!

 

**NOTE: When I have used this, it changed all the data types in my query to "Any". I asked Miguel, and he reached out to MS to see if it is a bug or if it is intentional. If you are using it early in your query before you change your data types, might still be useful. Otherwise you can change your data types back. Just a fair warning!

View solution in original post

18 REPLIES 18
Lauren_Michelle
Frequent Visitor

Hey everyone!

Thank you for the video which was very helpful - I was just curious if anyone knew a way to replace a null value with a new value specific on a different column but not matching the other column? e.g. If 'PRODUCT NAME' includes 'Barbie' or 'Playdough' replace with 'Toys', If 'PRODUCT NAME' includes 'Tea', 'Biscuits', 'Noodles' replace with 'Consumables', etc.

Essentially I have several hundred thousand rows each with a unique sales value. Most have a category allocated already, but some have been left blank. I want to replace the nul value with one of 5 categories depending on the product brand in the name.

No clue if this is even a remote possibility but thought it was worth asking as I am stumped.

Anonymous
Not applicable

Just a tweak that worked for me

You can modify the "M" code if you are not looking to add a column/ delete the old one.

 

=Table.ReplaceValue(#"Last Step",null, each [Values Column],Replacer.ReplaceValue,{"Null Column"})

 

#"Last Step" being the previous step in your query

[Values Column] being the column that has the values in it to replace the nulls

"Null Column" being the column with the null values

 

There is a need for a space between the each and the [Values Column] but I didn't find one was needed before.  Also the _ threw an error

bdymit
Resolver II
Resolver II

Saw this old post and found another solution, so I thought I would share.

 

You can modify the "M" code if you are not looking to add a column/ delete the old one.

 

=Table.ReplaceValue(#"Last Step",null, each _[Values Column],Replacer.ReplaceValue,{"Null Column"})

 

#"Last Step" being the previous step in your query

[Values Column] being the column that has the values in it to replace the nulls

"Null Column" being the column with the null values

 

Be sure to use the " each _[Values Column]" syntax with the spaces before and after "each", otherwise you will get an error.

 

Here is the original video from Miguel Escobar.

https://www.poweredsolutions.co/2015/05/08/power-query-for-excel-replace-values-using-values-from-an...

 

Cheers!

 

**NOTE: When I have used this, it changed all the data types in my query to "Any". I asked Miguel, and he reached out to MS to see if it is a bug or if it is intentional. If you are using it early in your query before you change your data types, might still be useful. Otherwise you can change your data types back. Just a fair warning!

Perfect sir!!!

6 years later still very helpful!

This was right on for me. I have a list of codes and need to only translate some of them to an alternate code. ex. a,b,c,y. merge translate table y=d. all nulls in expanded merge collumn = replace values for each null then original value a,b,c.

thank you. That was what I was looking for. Perfect.

Anonymous
Not applicable

bdymit, thank you for sharing this. This solution is both straightforward and elegant, which I always prefer to approaches that have the look and feel of a hack or a workaround. The only mystery is why, even after all of this time, Microsoft still hasn't integrated this capability into the UI?

I am attempting to replace the null values with the values from completion note date in the far left. 

 

 

 

 CompletionNotePIC.PNG

 

Any sugestions?

While @bdymit's  script works very well, data type change is clearly off-putting here. It looks like a bug. I would only expect Power query to change the data type of the field which we replace the nulls at, only when replaced values don't fit the data type of the new field. Otherwise why change all field data types?

@omrdmr I agree, the data type change is annoying. Miguel responded to my question (in the post I linked to above) and he said that Microsoft changes the data types by design, it is not a bug. He gave a work-around, but I have yet to see if using the custom M code and then changing all the data types has query performance advantages over creating a conditional column to solve the issue.

FYI, it seems the data type change bug is no there, I'm not having any issues with that currently.

Anonymous
Not applicable

Thank you for the input!  So quick question, only the null values are replaced, not all the fields that have no null values correct?

Anonymous
Not applicable

hi everyone,

 

i have a problem with replacing null values with content from other column. The scenerio is something like this. let say i have three columns A,B,C

ABC
X1010
X.1null10
X.2null10
Y1111
Y.1null11
Y.2null11

 

C is my custom column created based on data from two columns A and B. please help with the query to construct above scenario.

 

Thanks,

Sivaaprataap.

Yes. Select Add Column and then write an if statement something like this (it is case sensitive)

 

= if [column 1] = null then [column 2] else [column 1] 



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.

Best!

Hi Matt!

I wrote something like : if [Session Date] = null then "Not Passed" else if [Expiration Date] < Date.From(DateTime.LocalNow()) then "Expired" else if [Expiration Date] = null then [Status] else "Ok"

but in result column error values appeared in cells where should be Status columns values. Other cells according to formula. 

Could you please help me to solve it?

I just wrote this in a test file, and it worked fine

each if [Session Date] = null then "Not Passed" else if [Exp Date] < Date.From(DateTime.LocalNow()) then "Expired" else if [Exp Date] = null then [Status] else "OK"

 

check that all your date columns are correctly formatted as Date before this step and that the Status column is correctly formatted as text



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.