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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Anonymous
Not applicable

Most recent record from another table

I have two tables joined by ID. Table 1 is just a list of unique IDs and Table 2 has multiple IDs with a note and date for each. I need to add a column to Table 1 to bring in the most recent note into the first table. Example:

 

Table 1:

ID
123
456
789

 

Table 2:

IDDateNotes
12310/31/2019Note 3
12310/30/2019Note 2
1238/20/2019Note 1
4566/1/2019Note 4
4565/30/2019Note 3
4565/6/2019Note 2
4565/1/2019Note 1
78910/8/2019Note 1

 

Desired result in Table 1:

IDNote
123Note 3
456Note 4
789Note1
1 ACCEPTED SOLUTION
fhill
Resident Rockstar
Resident Rockstar

 

Here you go, FINALLY!  2 Custom Columns required...

 

Max Date = CALCULATE(MAX(Table2[Date]))    ** Make this one First, to make Part 2 below easier. **

Column 2 = CALCULATE(LASTNONBLANK(Table2[Notes],TRUE()), FILTER( Table2, Table1[ID] = Table2[ID] && Table2[Date] = Table1[Max Date]))
 

** You don't have to display Max Date, it just has to be another Custom Column on the table. **

Table 1:

IDMax DateColumn 2
12310/31/2019 0:00Note 3
45611/2/2019 0:00Note1a - Dup
55911/1/2019 0:00NEW NOTE
78910/31/2019 0:00Note5

 

Table 2:

IDDateNotes
1238/20/2019 0:00Note 1
12310/30/2019 0:00Note 2
12310/31/2019 0:00Note 3
4565/1/2019 0:00Note 1
4565/6/2019 0:00Note 2
4565/30/2019 0:00Note 3
4566/1/2019 0:00Note 4
45610/31/2019 0:00Note1a
45611/2/2019 0:00Note1a - Dup
55911/1/2019 0:00NEW NOTE
78910/8/2019 0:00Note 1
78910/31/2019 0:00Note5



Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




View solution in original post

17 REPLIES 17
fhill
Resident Rockstar
Resident Rockstar

Create a New Column on Table 1 and here's your code...

 

NewestNote = LOOKUPVALUE(Table2[Notes], -- What you are trying to find related
    Table2[ID], Table1[ID], -- When ID matches ID
    Table2[Date], CALCULATE(MAX(Table2[Date]))) -- When Date is equal to MAX Date
 
(CALCULATE is needed to look 'by line' of Table 1 - If you just use MAX without it, you'll only get 1 value for the max of the whole table.)



Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

Thanks! I see what this is trying to do, but I get an "A table of multiple values was supplied where a single value was expected" error. I've verified that my real Table 1 has unique IDs whereas Table 2 has multiple. 

I went back and added duplicate dates on my Table 2 per ID, but still didn't get the error you mentioned.  Do you have any way to cleanse and post your data tables?

 

FOrrest

 

Table1

IDNewestNote
123Note 3
456Note1a
789Note5

 

 

Table 2

IDDateNotes
1238/20/2019 0:00Note 1
12310/30/2019 0:00Note 2
12310/31/2019 0:00Note 3
4565/1/2019 0:00Note 1
4565/6/2019 0:00Note 2
4565/30/2019 0:00Note 3
4566/1/2019 0:00Note 4
45610/31/2019 0:00Note1a
78910/8/2019 0:00Note 1
78910/31/2019 0:00Note5



Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

My data will be hard to cleanse to send, as it is a large dataset. I think I found the problem, although I don't know how to solve it. My date  column in Table2 could have the same date/time for the same ID. If you change the date in the last line of your sample date for ID 789 to 10/8/2019 0:00 so that both 789 records have the same date you can recreate the error. Are you aware of any way around that?

Yep, that did cause me to duplicate your error.  When you have ID & Date Duplicates, are the Notes the same as well?  (Then you can freely select any value since they are all the same?) 

 

Or, are the notes different for the ID/Date Duplicates?  In this case, what logic should be used to select the First / Last Note, or do you want an error message saying 'Duplicate' or something else to populate?




Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

It would be possible to have the same note/date/ID, but I'd say that would probably never happen.

So, for Same ID/Dates, but different Notes, do you want to see BOTH Notes, or what logic should be used to select one of the Notes?  




Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

This scenario would be so rare that it doesn't really matter. It could return either one or both. Whichever one is easier.

 

Create a NEW Column on Table 1

Column = CALCULATE( FIRSTNONBLANK( Table2[Notes], TRUE() ),  -- Get FIRST Non Blank Value When...
FILTER( Table2, Table1[ID] = Table2[ID] && Table2[Date] = MAX(Table2[Date])))    -- Table 1 ID = Table 2 ID and Table 2 Date = MAX Table 2 Date
 
 



Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

That only brought back a result for the first record:

 

IDColumn
123Note 3
456 
789 

Are there more columns involved that might be causing issues?  Did you create the new Column off Table 1?  My Table 1 only has ID's, and Table 2 only has ID, Date, & Notes.  Here's my code for the Custom Column off Table 1.  Can you make this work as is below outside your data set?  (Double check you are filtering Tables 2 where Table 1 ID = Table **2** ID.)

 

Column = CALCULATE( FIRSTNONBLANK( Table2[Notes], TRUE() ),
FILTER( Table2, Table1[ID] = Table2[ID] && Table2[Date] = MAX(Table2[Date])))

 

Table 1:

IDColumn
123Note 3
456Note1a
789Note5

 

Table 2:

IDDateNotes
1238/20/2019 0:00Note 1
12310/30/2019 0:00Note 2
12310/31/2019 0:00Note 3
4565/1/2019 0:00Note 1
4565/6/2019 0:00Note 2
4565/30/2019 0:00Note 3
4566/1/2019 0:00Note 4
45610/31/2019 0:00Note1a
45610/31/2019 0:00Note1a - Dup
78910/8/2019 0:00Note 1
78910/31/2019 0:00Note5



Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

That is so odd. When it didn't work in my real dataset I thought  it may be something else messing it up, so tried it with my sample date. As you can see, the formula is a copy and past of yours, but my results don't match up.

 

Column = CALCULATE( FIRSTNONBLANK( Table2[Notes], TRUE() ),
FILTER( Table2, Table1[ID] = Table2[ID] && Table2[Date] = MAX(Table2[Date])))
 
Capture.JPG
 

....?  Assuming you have a 1 to many relationship between Table 1 & Table 2.  Other than that, I hope someone else picks up this thread who might have some other ideas?

 

FOrrest




Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

I do. Thanks for trying to help! There must be something weird going on that someone else can hopefully answer.

I think I see what I did wrong... all of my Notes had 10/31 as dates...  DOH!  Let me poke at it more...




Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




fhill
Resident Rockstar
Resident Rockstar

 

Here you go, FINALLY!  2 Custom Columns required...

 

Max Date = CALCULATE(MAX(Table2[Date]))    ** Make this one First, to make Part 2 below easier. **

Column 2 = CALCULATE(LASTNONBLANK(Table2[Notes],TRUE()), FILTER( Table2, Table1[ID] = Table2[ID] && Table2[Date] = Table1[Max Date]))
 

** You don't have to display Max Date, it just has to be another Custom Column on the table. **

Table 1:

IDMax DateColumn 2
12310/31/2019 0:00Note 3
45611/2/2019 0:00Note1a - Dup
55911/1/2019 0:00NEW NOTE
78910/31/2019 0:00Note5

 

Table 2:

IDDateNotes
1238/20/2019 0:00Note 1
12310/30/2019 0:00Note 2
12310/31/2019 0:00Note 3
4565/1/2019 0:00Note 1
4565/6/2019 0:00Note 2
4565/30/2019 0:00Note 3
4566/1/2019 0:00Note 4
45610/31/2019 0:00Note1a
45611/2/2019 0:00Note1a - Dup
55911/1/2019 0:00NEW NOTE
78910/8/2019 0:00Note 1
78910/31/2019 0:00Note5



Did I answer your question, or help you along the way?
Please give Kudos or Mark as a Solution!


https://www.linkedin.com/in/forrest-hill-04480730/

Proud to give back to the community!
Thank You!




Anonymous
Not applicable

Woohoo! Got it to work in my sample and actual datasets! I actually already had a max date column so this worked out perfectly. Thanks so much for all of your help on this!

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.