The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.
Hello everybody,
I have a little situation where I need your help.
The current situation is, that I have two different tables:
Table1
Name | Booking Date | Hours |
Person 1 | 01.01.2022 | 160 |
Person 1 | 01.02.2022 | 150 |
Person 2 | 01.01.2022 | 145 |
Person 1 | 01.03.2022 | 160 |
Person 2 | 01.03.2022 | 170 |
Person 2 | 01.02.2022 | 165 |
Table2
Name | Start date | End date | ID |
Person 1 | 01.01.2022 | 01.02.2022 | 00001 |
Person 1 | 01.03.2022 | 01.04.2022 | 00002 |
Person 2 | 01.01.2022 | 01.06.2022 | 00003 |
I'd like to have the ID from Table 2 in Table 1 depending on the Booking Date in Table 1. For example:
Name | Booking Date | Hours | ID |
Person 1 | 01.01.2022 | 160 | 00001 |
Person 1 | 01.02.2022 | 150 | 00001 |
Person 1 | 01.03.2022 | 160 | 00002 |
I have tried to create a calculated column like this:
Solved! Go to Solution.
Sounds like a person has multiple entries in Table2 with overlapping dates, so the booking cannot determine which ID is correct.
You could try something like
ID =
var currentPerson = 'Table1'[Name]
var currentDate = 'Table1'[Booking date]
return CALCULATE( MIN( 'Table2'[ID]), 'Table2'[Name] = currentPerson),
'Table2'[Start date] <= currentDate && 'Table2[End date] >= currentDate
)
which will try and return the first booking which matches.
You can add a calculated column like
ID =
var currentPerson = 'Table1'[Name]
var currentDate = 'Table1'[Booking date]
return CALCULATE( LOOKUPVALUE( 'Table2'[ID], 'Table2'[Name], currentPerson),
'Table2'[Start date] <= currentDate && 'Table2[End date] >= currentDate
)
Thanks for the quick response, unfortunately it was not working for me. I get the error "A table of multiple values was supplied where a single value was expected"
Sounds like a person has multiple entries in Table2 with overlapping dates, so the booking cannot determine which ID is correct.
You could try something like
ID =
var currentPerson = 'Table1'[Name]
var currentDate = 'Table1'[Booking date]
return CALCULATE( MIN( 'Table2'[ID]), 'Table2'[Name] = currentPerson),
'Table2'[Start date] <= currentDate && 'Table2[End date] >= currentDate
)
which will try and return the first booking which matches.
That was working, thanks a lot!!