Forum Discussion
HeadCount by type
So basically for each employee and day in your dates table you need to calculate if that employee was employed on that day or not.
Employed means the ALTA or REINGRESO events are the last event in the past or today. If the BAJA/BAJO event is the last one today or in the past then the employee has left.
We also need to ignore all the other events .
This is what I have so far.
employed =
var emp=max(Table[ID])
var d=max(Calendar[date])
var lastd=CALCULATE(max(Table[RH_HIST_LABORAL.FECHA_MOV]),All(table),Table[ID]=emp,Table[RH_HIST_LABORAL.FECHA_MOV]<=d,Table[Movimiento] in {"ALTA","BAJA POR CAMBIO DE EMPRESA","BAJO POR RENUNCIA VOLUNTARIA","REINGRESO"})
I think these are ok steps but it starts to get thin. Maybe someone else can step in.
ok, getting a bit closer. Still not sure how to do the final count.
employed =
var d=max(Calendar[date])
var emp=CALCULATE(LASTNONBLANK(Table[ID],1),CROSSFILTER(Calendar[date],Table[RH_HIST_LABORAL.FECHA_MOV],None))
var lastd=CALCULATE(max(Table[RH_HIST_LABORAL.FECHA_MOV]),ALL(Table),Table[ID]=emp,Table[RH_HIST_LABORAL.FECHA_MOV]<=d,Table[Movimiento] in {"ALTA","BAJA POR CAMBIO DE EMPRESA","BAJO POR RENUNCIA VOLUNTARIA","REINGRESO"})
var lastev=CALCULATE(max(Table[Movimiento]),All(table),Table[ID]=emp,Table[RH_HIST_LABORAL.FECHA_MOV]=lastd)
return left(lastev,4)- SergioGG866 years agoFrequent Visitor
you need to have an active relationship between the table date and the employee table?
- lbendlin6 years ago
Super User
yes, as we use a CROSSFILTER(none) which basically multiplies the employee list with the dates table. You may also need the relationship in other parts of your report.
- lbendlin6 years ago
Super User
Quote: "We need to know the daily, monthly & yearly head count" - For monthly and yearly, do you mean at the end of the month or year? For employee 13491 you would then also miss all the events that happen in May 2016.