¿Cómo se contabilizan las bajas por enfermedad de los empleados una vez al año?

Un usuario Pregunto ✅

Gjakova

Hola, tengo la siguiente pregunta …

Tengo que calcular el porcentaje de absentismo por año con la siguiente situación:

  • En 2017 trabajarán en la empresa 5 personas. Nadie informó estar enfermo de enero a abril, por lo que el absentismo cero es del 100%.
  • En mayo, la persona A informa que está enferma, por lo que el absentismo cero se ha reducido al 80%.
  • En junio, nadie informó estar enfermo, por lo que el ausentismo cero seguía siendo del 80%.
  • En julio, la persona C informa que está enferma, por lo que el absentismo cero se ha reducido al 60%.
  • En agosto, septiembre y octubre nadie reporta estar enfermo, por lo que el absentismo cero sigue siendo del 60%.
  • La persona A informa que está enferma en noviembre, pero debido a que la persona A ya informó que estaba enferma una vez en mayo, el porcentaje permanece en el 60% y, por lo tanto, NO llega al 40%.
  • En diciembre, nadie informó tampoco que estuviera enfermo.

Como resultado, el porcentaje de absentismo es del 100% en enero de 2017 y del 60% en diciembre de 2017.

¿Alguien sabe cómo hacer esto en Power BI?

Gjakova

Gracias a todos por las respuestas, pero logré resolver mi problema de esta manera:

Empleados ausentes =
CALCULAR (DISTINCTCOUNT (Sickleave[EmployeeID] ),
DATESYTD (Calendario[Date] ),
USERELATIONSHIP (Sickleave[Date], Calendario[Date] )
)

Empleados anuales totales =
CALCULAR (DISTINCTCOUNT (Relaciones laborales[EmployeeID] ),
FILTRO (TODOS (Calendario), Calendario[Year] = MAX (Calendario[Year] ))
)

Porcentaje mensual =
DIVIDIR (Total de empleados anuales – Empleados ausentes, Total de empleados anuales)

Gjakova

Gracias a todos por las respuestas, pero logré resolver mi problema de esta manera:

Empleados ausentes =
CALCULAR (DISTINCTCOUNT (Sickleave[EmployeeID] ),
DATESYTD (Calendario[Date] ),
USERELATIONSHIP (Sickleave[Date], Calendario[Date] )
)

Empleados anuales totales =
CALCULAR (DISTINCTCOUNT (Relaciones laborales[EmployeeID] ),
FILTRO (TODOS (Calendario), Calendario[Year] = MAX (Calendario[Year] ))
)

Porcentaje mensual =
DIVIDIR (Total de empleados anuales – Empleados ausentes, Total de empleados anuales)

Hola @Gjakova,

Según su descripción, puede seguir algunos de los siguientes pasos.

  1. Crea una tabla de calendario
calendar = CALENDAR("1/1/2017","12/31/2020")

2. Cree una relación entre dos tablas (fecha de inicio: fecha = 1: 1)

v-yuaj-msft_0-1608684499378.png

3. Cree algunas columnas.

EMployeeID = IF('calendar'[Date]=RELATED(Table1[StartDate]),RELATED(Table1[EmployeeID]))



Value = CALCULATE(DISTINCTCOUNTNOBLANK('calendar'[EMployeeID]),'calendar'[Date]<=EARLIER('calendar'[Date]))



Column =

var x1=

     CALCULATE(

         LASTNONBLANK('calendar'[Date],1),

         FILTER(

             ALL('calendar'),

             'calendar'[Date]<=EARLIER('calendar'[Date])&&

             NOT(ISBLANK('calendar'[Value]))))

var x2=

CALCULATE(

    SUM('calendar'[Value]),

    FILTER(ALL('calendar'),'calendar'[Date]=x1))

return

   DIVIDE(x2,5)

4. Cree una tabla visual.

v-yuaj-msft_1-1608684499385.png

Resultado:

v-yuaj-msft_0-1608684604895.png

Espero que eso sea lo que estabas buscando.

Atentamente,

Yuna

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Amitchandak

@Gjakova, ¿puedes compartir datos de muestra y salida de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.

Puedes probar una medida como

medida =
dividir (calcular (cuenta distinta (Tabla[employee]), filtro (todos los seleccionados (Tabla), Tabla[date]<= tabla[date])), calcular (cuenta distinta (Tabla[employee]), todos (empleado)))

mahoneypat

Si proporciona datos de ejemplo, se puede sugerir una expresión específica, pero básicamente puede hacerlo filtrando una tabla virtual de empleados y contando los que no tenían filas de días de enfermedad. Suponiendo que tiene una tabla de fecha y los días de enfermedad se capturan en la tabla de datos, aquí hay un ejemplo,

Pct no ausente =
VAR vMaxDate =
MAX ( Fecha[Date] )
VAR vEmpleados =
VALORES ( Empleados[Employee] )
VAR vEmployeeCount =
COUNTROWS ( vEmpleados )
VAR vEmployeesNotAbsent =
COUNTROWS (
FILTRAR (
vEmpleados,
ESTÁ EN BLANCO (
CALCULAR (
COUNTROWS ( Datos ),
TODOS ( Fecha[Date] ),
Fecha[Date] <= vMaxDate
)
)
)
)
REGRESO
DIVIDIR (
vEmployeesNotAbsent,
vEmployeeCount
)

Saludos,

Palmadita

Gjakova

En respuesta a mahoneypat

¡Gracias por tu sugerencia! Voy a echar un vistazo, todavía no puedo acceder a los datos, pero se ve así:pbi.PNG

La fecha de inicio y la fecha de finalización (supongo) no son tan importantes, solo con la fecha de inicio verificaré en qué año informaron estar enfermos (por lo que la persona D no debe contarse para 2017). La persona A ha informado que está enferma varias veces en 2017, pero solo se cuenta la primera notificación de enfermedad de la persona A (por lo tanto, 01/02/2017) y, por lo tanto, la persona A debe excluirse del resto del año.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *