Forum Discussion
Active Employees per Period
- 9 years ago
Thank you for the advice. I tried it and do not get the correct result, either. What I do get is the number of employees, who left in a specific period (e.g. month).
As I have to deliver the report today, I resolved to take a different approach, showing the number of joiners, leavers and overall evolution of active personnel as in the chart below.
Hi,
I was trying to do something similar, but for job requisitions. Wanting to count the number of open requisitions over time. My "Start date" equivalent is "Approved date" and my "End date" equivalent is "Last modified date".
The below formula worked for me:
Requisitions Open =
VAR MinDate =
MIN ( 'Date Table'[Date] )
VAR MaxDate =
MAX ( 'Date Table'[Date] )
RETURN
CALCULATE (
DISTINCTCOUNT (Requisitions[Job Req ID] ),
Requisitions[Approved Date] <= MinDate,
Requisitions[Last Modified] >= MaxDate
)This is my output:
I have a simple data model:
Happy to provide more detail if that helps.
Thanks,
Matt
mtomlinson - The difference with your formula is that it won't include the requisitions that opened prior to the minimun date and are still open. This may or may not be relevant in your solution. When counting all active employees within a specified date range, those with a hired date before the date range (and are still active) need to be included.
- Anonymous7 years agoNot applicable
rl_evans it's a good point. In my case, all requisitions have an approved date, and my date table is dynamically defined using the minimum approved date.
Would a simple OR clause not solve this though? Eg...
Requisitions Open = VAR MinDate = MIN ( 'Date Table'[Date] ) VAR MaxDate = MAX ( 'Date Table'[Date] ) RETURN CALCULATE ( DISTINCTCOUNT (Requisitions[Job Req ID] ), OR(Requisitions[Approved Date] <= MinDate,ISBLANK(Requisitions[Approved Date])), Requisitions[Last Modified] >= MaxDate )- Anonymous7 years agoNot applicable
Ignore the above - just realised you said a date before the min date, not a blank date!
- Anonymous7 years agoNot applicable
rl_evans Actually, I don't see why that would matter - if an employee had a date before the minDate, it would still meet the criteria to be counted...
Am I missing something?
- Anonymous7 years agoNot applicable
rl_evans also, as an aside - how have you defined your data model? Are you using inactive relationships? If so, have you be able to keep ineractions working so that you can, for example, select a particular month and view all employees active for that particular month?
- rl_evans7 years agoHelper II
Anonymous - I have an active relationship between the date table and the employee table with a one to many relationship between date[date] and employee[hiredate].
Each bar in the bar chart (using your example) represents a given period (i.e., date range). This date range sets the date context for the DAX statement. The date context filters the employee table to only those employees hired within the date range context (because of the relationship with the date table). Think of it as if the DAX statement is getting executed separately for each period. When looking for all active employees at the end of the period, all employees hired before the date range context have to be included as they may still be active employees. The ALL() function allows the CalculateTable to ignore the period's date range context.
I tried using your DAX statement and found (in my model) that it doesn't include employees hired prior to the period. Have you verified that your formula includes all requisitions opened prior to the period and are still open?