Cálculos con filtros DAX – Rotación voluntaria/involuntaria de personal

Un usuario Pregunto ✅

leont3

Hola a todos,

Estoy atascado en el cálculo de la rotación de personal voluntaria/involuntaria para mi organización. Me las arreglé para calcular la facturación total, sin embargo, tengo problemas cuando necesito distinguir entre los dos.

Así es como se ven los datos de muestra (Título, Emp Master File):

ID de empleado Nombre de empleado Fecha de contratación Ubicación Fecha de conclusión Código de término Voluntario/Involuntario
1 Joe blogs 20 de marzo de 2020 Nueva York 30 abril 2020 V Voluntario
2 kevin smith 30 de abril de 2018 SF 20 diciembre 2021 V Voluntario
3 charlotte verde 30 marzo 2019 SF 10 julio 2020 T Involuntario
4 penélope marrón 10 julio 2018 Nueva York

También está conectado con una tabla de fecha.

Como sabrá, la facturación anualizada se calcula a través de:

Egresados ​​de los últimos 12 meses / (Número de empleados al comienzo del período + recuento de empleados al final del período)/2

Para lograr esto, tengo los siguientes cálculos:

Salidas de los últimos 12 meses =
VAR fechaSeleccionada = ÚLTIMA FECHA(‘Tabla de Fechas'[Date])
VAR FechaSeleccionada12MesesAntes =
(MISMO PERIODO AÑO ÚLTIMO (fecha seleccionada))
REGRESO
CALCULATE(sumx(‘Archivo Maestro Emp’,
SI([Termination Date]>=fechaseleccionada12mesesantes de && [Termination Date] <= fechaseleccionada,1,0)),
NOT(ISBLANK(‘Archivo maestro emp.'[Termination Date])
))
Número de empleados (12 meses antes) =
VAR fechaseleccionada =
PRÓXIMO DÍA (MISMO PERIODO ÚLTIMO AÑO (ÚLTIMA FECHA (‘Tabla de fechas'[Date])))
REGRESO
SUMX(‘Archivo Maestro Emp’,
VAR fechaInicioempleado = [Hire Date]
VAR fecha de finalización del empleado = [Termination Date]
DEVOLVER SI (fecha de inicio del empleado <= fecha seleccionada &&
O (fecha de finalización del empleado >= fecha seleccionada, fecha de finalización del empleado = EN BLANCO()), 1,0))

Empleados Activos =

CALCULAR
(COUNTX(FILTRO(‘Archivo maestro emp.’,
‘Archivo maestro emp'[Hire Date] <=MAX('Tabla de fechas'[Date])
&&
(ISBLANK(‘Archivo Maestro Emp'[Termination Date])
||
‘Archivo maestro emp'[Termination Date] > MAX(‘Tabla de fechas'[Date]))), ‘Archivo maestro Emp'[Employee ID]),
CROSSFILTER(‘Tabla de fechas'[Date]’Archivo maestro emp'[Hire Date]NINGUNA))

Luego usé todo esto para crear una rotación anualizada de empleados que es:

Tasa de rotación anual =
[Past 12 Month Leavers]/[12 Month Rolling Average]
Nota: El promedio móvil de 12 meses es solo el promedio de los empleados activos y el recuento de personal de los 12 meses anteriores
Esto me proporciona la tasa de rotación anual. Sin embargo, ahora me gustaría usar la información ‘Voluntaria/Involuntaria’ en mi tabla, y solo calcular aquellos que han dejado ‘voluntarios’. Esto significa que el número de abandonos el cálculo solo necesita contar aquellos que tienen una ‘V’ en la tabla Voluntario/Involuntario.
Estaba pensando en usar la función CALCULATE/FILTER para lograr esto en mi ‘Cálculo de abandonos de los últimos 12 meses’ pero no pareció funcionar:
Salidas voluntarias de los últimos 12 meses =
VAR fechaSeleccionada = ÚLTIMA FECHA(‘Tabla de Fechas'[Date])
VAR FechaSeleccionada12MesesAntes =
(MISMO PERIODO AÑO ÚLTIMO (fecha seleccionada))
REGRESO
CALCULAR(sumx(‘Archivo Maestro Emp’,
SI([Termination Date]>=fechaseleccionada12mesesantes de && [Termination Date] <= fechaseleccionada,1,0)),
‘Archivo maestro emp'[Voluntary/Involuntary] = «V»)
Sin embargo, cuando he hecho esto, termino con un espacio en blanco. ¿Cómo recomendaría que use el mismo cálculo que el anterior pero solo considere aquellos con una V o aquellos con una I?

Hola, @leont3

Según su descripción, creo que el problema es que el nombre de la columna y el valor no coinciden.

4.png

Necesitas modificar el código: ‘Archivo maestro emp'[Voluntary/Involuntary] = «Involuntario») o ‘Emp Master File'[Term Code] = «V»)

Se recomienda que use la función countx() para calcular, el uso de calcular (sumx(if)) no es común.

Si no resuelve su problema, no dude en preguntarme.

Atentamente

janey guo

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

Hola, @leont3

Según su descripción, creo que el problema es que el nombre de la columna y el valor no coinciden.

4.png

Necesitas modificar el código: ‘Archivo maestro emp'[Voluntary/Involuntary] = «Involuntario») o ‘Emp Master File'[Term Code] = «V»)

Se recomienda que use la función countx() para calcular, el uso de calcular (sumx(if)) no es común.

Si no resuelve su problema, no dude en preguntarme.

Atentamente

janey guo

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

amichandak

@leont3, consulte mi blog esto

https://community.powerbi.com/t5/Community-Blog/HR-Analytics-Active-Employee-Hire-and-Termination-tr…

Terminado en los últimos 12

= CALCULAR(CALCULAR(CONTAR(Empleado[Employee Id ]), RELACIÓN DE USUARIO (Empleado[End Date],’Fecha'[Date]),no(ESBLANCO(Empleado[End Date]))),FECHASENPERIODO(‘Fecha'[Date ],MAX(‘Fecha'[Date ]),-12 MESES))

promedio de los últimos 12 meses

PromedioX(valores(Fecha[Month Year]),CALCULAR(CONTARx(FILTRO(Empleado,Empleado[Start Date]<=max('Fecha'[Date]) && (ESTÁ EN BLANCO (Empleado[End Date]) || Empleado[End Date]>max(‘Fecha'[Date]))),(Empleado[Employee Id ])), FILTRO CRUZADO (Empleado[Start Date],’Fecha'[Date],Ninguna))
)

leont3

En respuesta a amichandak

Hola Amit,

Gracias por tu respuesta, pero lamentablemente no era eso lo que buscaba.

Quería calcular solo aquellos empleados que han sido despedidos voluntariamente usando mis fórmulas anteriores. Espero que tenga sentido.

amichandak

En respuesta a leont3

@ leont3, la modificación de esta fórmula debería ayudar

Terminado en los últimos 12

= CALCULAR(CALCULAR(CONTAR(‘Archivo maestro emp’[Employee Id ]), RELACIÓN DE USUARIO (Empleado[Termination Date],’Fecha'[Date]),no(ESBLANCO(Empleado[Termination Date])), ‘Archivo maestro emp'[Voluntary/Involuntary] = «V»),FECHASENPERIODO(‘Fecha'[Date ],MAX(‘Fecha'[Date ]),-12 MESES))

Deja un comentario

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