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
datastrategy
Frequent Visitor

Multiple Tables to lookup dates

Been trying to learn DAX / M by creating my own problems (no pun intended) and trying to solve... no success here for the last few days with this problem.

 

Trying to find the difference between first appointment date and when patient was created, excluding weekends.  

 

I have to find the min appointment date for each chart number.  Then lookup the date in the date dimension and subtract the date key (?) for whatever date the patient was created, but then subtract any weekends.

 

Make sense?  Best with DAX or M?

 

Layout:

layout.JPG

Date Dimension Table:

date dim.JPG

Patient Table:

patient table.JPG

Appointment Table:

appointments.JPG

1 ACCEPTED SOLUTION

Do it in DAX. It is easy if you first create a “weekday” column. Write a calc column in your calendar table that returns 1 for weekday and 0 for weekend. You can then simply add this column after the filter is applied. 

 

I would have thought your patient table should be a lookup table of your appointment table (and also calendar is a lookup table of appointment). No relationship between patient table and calendar table. 

 

With the above structure, you could be able to put paitent[id] (and name) onto a matrix, and write a measure something like this

 

= VAR createDate = selectedvalue(paitent[create date])

VAR firstAppt = min(appts[date])

RETURN CALCULATE(SUM(calendar[weekday]),FILTER(Calendar,Calendar[date]>=createDate && Calendar[Date]<=firstAppt))

 

it May need some tweaking as I haven’t tested it, but that is how I would approach it. 



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

View solution in original post

2 REPLIES 2

Do it in DAX. It is easy if you first create a “weekday” column. Write a calc column in your calendar table that returns 1 for weekday and 0 for weekend. You can then simply add this column after the filter is applied. 

 

I would have thought your patient table should be a lookup table of your appointment table (and also calendar is a lookup table of appointment). No relationship between patient table and calendar table. 

 

With the above structure, you could be able to put paitent[id] (and name) onto a matrix, and write a measure something like this

 

= VAR createDate = selectedvalue(paitent[create date])

VAR firstAppt = min(appts[date])

RETURN CALCULATE(SUM(calendar[weekday]),FILTER(Calendar,Calendar[date]>=createDate && Calendar[Date]<=firstAppt))

 

it May need some tweaking as I haven’t tested it, but that is how I would approach it. 



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

Thanks @MattAllington !  When I saw your post I almost couldn't believe it.  I have two of your books I bought last week, and I'm trying to absorb everything at once which is difficult.  Thanks for the help (and books)!

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.

Top Solution Authors