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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
tarmogolf
Advocate I
Advocate I

Date Difference on each row

Happy Friday, and thank you in advance for any assistance you can give. I currently have the measure below to count the number of employees that were active during a selected period, and I need to modify it to calculate how many months during the selected period they were active. I need this to calculate each individual employee, and then roll up through the hierarchy (Employee > Location > Market).

 

Each employee has a [Termination Date] and a [Hire Date]. My thought was to do a DATEDIFF to calculate this for each employee, but I'm unsure how to accomplish it, since I cannot just use the selected date range for the DATEDIFF parameters - if the employee was hired during the selected date range then their [Hire Date] should be used in place of the minimum selected date, same thing for [Termination Date] and max date. 

 

Measure = 

var minDate = MIN('Date'[Date])
var maxDate = IF(MAX('Date'[Date])> Today(), TODAY(), MAX('Date'[Date]))

return
 
CALCULATE(
COUNTROWS('Employee Roster'),
'Employee Roster'[StartDate] <= maxDate,
'Employee Roster'[TerminationDate] = BLANK() || 'Employee Roster'[TerminationDate] > minDate)
1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi @tarmogolf ,

 

Create a date slicer table and use Min() to get the range start and use Max() to get range end.

Then create a measure like below:

meaasure =
VAR _start =
    IF (
        SELECTEDVALUE ( 'Employee Roster'[StartDate] ) > MIN ( 'Date'[Date] ),
        SELECTEDVALUE ( 'Employee Roster'[StartDate] ),
        MIN ( 'Date'[Date] )
    )
VAR _end =
    IF (
        SELECTEDVALUE ( 'Employee Roster'[TerminationDate] ) < MAX ( 'Date'[Date] ),
        SELECTEDVALUE ( 'Employee Roster'[TerminationDate] ),
        MAX ( 'Date'[Date] )
    )
RETURN
    DATEDIFF ( _start, _end, DAY )

 

Best Regards,

Jay 

View solution in original post

1 REPLY 1
Anonymous
Not applicable

Hi @tarmogolf ,

 

Create a date slicer table and use Min() to get the range start and use Max() to get range end.

Then create a measure like below:

meaasure =
VAR _start =
    IF (
        SELECTEDVALUE ( 'Employee Roster'[StartDate] ) > MIN ( 'Date'[Date] ),
        SELECTEDVALUE ( 'Employee Roster'[StartDate] ),
        MIN ( 'Date'[Date] )
    )
VAR _end =
    IF (
        SELECTEDVALUE ( 'Employee Roster'[TerminationDate] ) < MAX ( 'Date'[Date] ),
        SELECTEDVALUE ( 'Employee Roster'[TerminationDate] ),
        MAX ( 'Date'[Date] )
    )
RETURN
    DATEDIFF ( _start, _end, DAY )

 

Best Regards,

Jay 

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

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

June 2025 community update carousel

Fabric Community Update - June 2025

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