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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
lpd82
Helper I
Helper I

Merge two tables by value range

Howdy!

 

I have two tables:

Table A

NameAmount
Bob1.000
Joe2.500
Billy3.000
Frank3.500
Joy6.000

Table B

AmountRates
00
1.1251
2.0002
3.0003
4.0004
5.0005

 

Result:

NameAmountRates
Bob1.0000
Joe2.5002
Billy3.0003
Frank3.5003
Joy6.0005

 

 

How do I merge the two tables and bring the rates over to table A based on the Amount on table A that is less than or equal to the amount of table B?

 

TIA

1 ACCEPTED SOLUTION
serpiva64
Super User
Super User

Hi,

to obtain this

serpiva64_0-1677004296838.png

you need to add a custom column

(OuterTable)=> List.Last( Table.SelectRows( Rates, (InnerTable)=> InnerTable[Amount]<=OuterTable[Amount])[Rates])

serpiva64_1-1677004340658.png

it is better also to sort column Amount in Rates and to buffer the table to optimize the query

= Table.Buffer( #"Sorted Rows")

 

You can find a fantastic explanation of it (which i have apllied here) in 

Free M Code Class from Basic to Advanced: Power Query Excel & Power BI, Custom Functions 365 MECS 12

https://www.youtube.com/watch?v=3ZkIwKBVkVE

by Excellisfun

It is the last argument of a long video

If this post is useful to help you to solve your issue, consider giving the post a thumbs up and accepting it as a solution!

 

 

 

View solution in original post

6 REPLIES 6
serpiva64
Super User
Super User

Hi,

to obtain this

serpiva64_0-1677004296838.png

you need to add a custom column

(OuterTable)=> List.Last( Table.SelectRows( Rates, (InnerTable)=> InnerTable[Amount]<=OuterTable[Amount])[Rates])

serpiva64_1-1677004340658.png

it is better also to sort column Amount in Rates and to buffer the table to optimize the query

= Table.Buffer( #"Sorted Rows")

 

You can find a fantastic explanation of it (which i have apllied here) in 

Free M Code Class from Basic to Advanced: Power Query Excel & Power BI, Custom Functions 365 MECS 12

https://www.youtube.com/watch?v=3ZkIwKBVkVE

by Excellisfun

It is the last argument of a long video

If this post is useful to help you to solve your issue, consider giving the post a thumbs up and accepting it as a solution!

 

 

 

@serpiva64 , 

 

Typically, I do this way with "each" ...
Table.AddColumn(Source, "Rates", each List.Last( Table.SelectRows(TableB, (x) => [Amount]>=x[Amount])[Rates]), Int64.Type)

 

It is interesting that you used (OuterTable) => ..., I learned a new way. 🙂 

The idea is from Excelisfun but i think it is more clear

Thank you very much, I watched your video which helps me understand the logic better.

serpiva64
Super User
Super User

Hi, 

i think there are some typing error in your table

Probably table B first value is 1000

and

Bob result is 1125 not 1000 

or something similar, can you confirm it?

ah! sorry about that.  I fixed table A.  Thanks

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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