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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
ReadTheIron
Helper III
Helper III

Cleaning Data with FirstNonBlank

I have a table with some data missing.

 

NeighborhoodStreet        
EastMaple Rd
WestPine Rd
EastBirch St
EastMaple Rd
 Maple Rd
WestPine Rd
WestOak St

 

I want to create a column that will fill in the blanks based on the complete entries. I'm pretty sure I can use FirstNonBlank to do this, but I can't figure out the expression to use. I tried FullNeighborhood = FIRSTNONBLANK(Table[Neighborhood], [Street]) but my table just looks like this:

 

NeighborhoodFullNeighborhoodStreet        
EastEastMaple Rd
WestWestPine Rd
EastEastBirch St
EastEastMaple Rd
  Maple Rd
WestWestPine Rd
WestWestOak St
1 ACCEPTED SOLUTION
v-yangliu-msft
Community Support
Community Support

Hi @ReadTheIron ,

According to your description, You want to create a column based on the [Street] field to complete the [Neighborhood] field. Right?

Here are the steps you can follow:

(1)This is my test data:

vyangliumsft_0-1661926934167.png

(2)We can create a calculated column : “FullNeighborhood”

FullNeighborhood =
var _street='Table'[Street]
var _fullnei=MAXX( FILTER('Table','Table'[Street]=_street), [Neighborhood])
return
    _fullnei

The other way is :

FullNeighborhood2 = var _cuurent_street='Table'[Street]
var _table=SELECTCOLUMNS( FILTER('Table','Table'[Street]=_cuurent_street) , "Neighborhood" ,[Neighborhood])
var _first_non=LASTNONBLANK(_table,[Neighborhood])
return
_first_non

(3)The result is as follows:

vyangliumsft_1-1661926934172.png

If this method can't meet your requirement, can you provide some special input and output examples? Or a sample pbix after removing sensitive data. We can better understand the problem and help you.

If you need pbix, please click here.

case_01_0831.pbix

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

View solution in original post

6 REPLIES 6
v-yangliu-msft
Community Support
Community Support

Hi @ReadTheIron ,

According to your description, You want to create a column based on the [Street] field to complete the [Neighborhood] field. Right?

Here are the steps you can follow:

(1)This is my test data:

vyangliumsft_0-1661926934167.png

(2)We can create a calculated column : “FullNeighborhood”

FullNeighborhood =
var _street='Table'[Street]
var _fullnei=MAXX( FILTER('Table','Table'[Street]=_street), [Neighborhood])
return
    _fullnei

The other way is :

FullNeighborhood2 = var _cuurent_street='Table'[Street]
var _table=SELECTCOLUMNS( FILTER('Table','Table'[Street]=_cuurent_street) , "Neighborhood" ,[Neighborhood])
var _first_non=LASTNONBLANK(_table,[Neighborhood])
return
_first_non

(3)The result is as follows:

vyangliumsft_1-1661926934172.png

If this method can't meet your requirement, can you provide some special input and output examples? Or a sample pbix after removing sensitive data. We can better understand the problem and help you.

If you need pbix, please click here.

case_01_0831.pbix

 

Best Regards,

Liu Yang

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

ToddChitt
Solution Sage
Solution Sage

You could do it in Power Query. Right click on the source table and select DUPLICATE. Take that one, filter out the NULLs, then apply a GROUP BY step, (GROUP BY the two columns in question) adding something like a COUNT ROWS aggretation.

You could also do it in DAX with a SUMMARIZE function:

My Definitive table = SUMMARIZE ( 'Source table name', <first group by column>, <second group by column>, <Aggregation Name 1>, <aggregation operation 1>)

SUMMARIZE function (DAX) - DAX | Microsoft Docs

 

ToddChitt
Solution Sage
Solution Sage

So you need a difinitive source of where each Street is located. Maple is East, Oak is West, etc. To get that, copy your table, filter the blanks, then do a GROUP BY. Hopefully you won't have on Street located in two neighborhoods. That becomes your definitive source. Join that back to the list on Street. 

Could you walk me through how that GROUP BY would work?

ToddChitt
Solution Sage
Solution Sage

Power Query FILL DOWN might help.

What are you expecting to be seen in that blank cell? "East" because that row is also "Maple Rd" and the one before it is "Maple Rd"?

Yes, I'm expecting to see "East", because the other instances of "Maple Rd" have "East" in the neighborhood field. I need something that isn't position-dependent, though, my data might also look like:

 

NeighborhoodStreet               
WestOak St
 Maple Rd
EastBirch St
 Oak St
WestPine Rd
EastMaple Rd

 

And I want to create a column like

NeighborhoodFullNeighborhoodStreet          
WestWestOak St
 EastMaple Rd
EastEastBirch St
 WestOak St
WestWestPine Rd
EastEastMaple Rd

Helpful resources

Announcements
Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

February 2024 Update Carousel

Power BI Monthly Update - February 2024

Check out the February 2024 Power BI update to learn about new features.

Fabric Career Hub

Microsoft Fabric Career Hub

Explore career paths and learn resources in Fabric.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.

Top Solution Authors