TENENCIA PROMEDIO usando CALCULATE FUNCTION

Un usuario Pregunto ✅

adhumal2

Hola geeks,

Estoy tratando de calcular la permanencia promedio para todos los empleados usando una fórmula que se menciona a continuación:

Puntos

1 – La tabla que estoy usando es ‘datos emp’. Necesito calcular la diferencia entre la ‘fecha de entrada del grupo de empleados’ y la ‘fecha de informe’ (por ejemplo, 31 de enero de 2020) para obtener la antigüedad promedio de todos los empleados

2 – La tabla debe filtrarse para el estado del empleado «estado1», «Estado2» (es decir, los empleados con un estado diferente a estos no deben considerarse para el cálculo

3. La tabla debe filtrarse por tipo de empleado «tipo1», «tipo2» (es decir, los empleados con tipos distintos a estos no deben considerarse para el cálculo.

4. Los cálculos deben excluir a los empleados con estado de recuento 0

¿Alguien puede ayudarme con la medida DAX para el cálculo anterior?

Intenté usar la siguiente fórmula (dado que la tabla de ‘datos emp’ ya se filtró para el tipo de empleado y el estado del empleado mencionados anteriormente. Pero la fórmula me da resultados que son diferentes a los reales

Capture.PNG

adhumal2

En respuesta a V-pazhen-msft

@ V-pazhen-msft Muchas gracias. Ajusté la fórmula como se menciona a continuación y funcionó

CALCULAR (PROMEDIO (Emp),

REDONDEO (DATEDIFF (Table1[Group Entry Date],Tabla 1[Reporting Date], MES) / 12,0))

)

adhumal2

@ V-pazhen-msft @amitchandak @edhans @Greg_Deckler

Hola geeks,

He subido la base de datos original aquí Datos originales

Planteamiento del problema –

– El cálculo de Excel muestra la tenencia promedio como 13.30, mientras que el cálculo de DAX muestra la tenencia promedio como 14.1 (para enero de 2020)

– Para los datos similares en diciembre de 2019, la permanencia promedio fue 13.1 tanto en Excel como en DAX con la misma fórmula.

– Hay un cambio repentino en la permanencia promedio por 1 año (según los cálculos de DAX) que no es probable.

– Aquí está la medida DAX que estoy usando

Capture.6PNG.PNG

¿Puede investigar esto y hacerme saber cuál debería ser la medida DAX correcta?

En respuesta a adhumal2

@ adhumal2

El problema es la expresión DATEDIFF. Si miramos el Id. De persona 1, las fechas son 2020.1.31 y 2017.10.1. En Excel, cuando la diferencia de fecha no alcanza los 3 años completos, se contabiliza como 2 años. En Power Bi, hizo el intervalo como Año, por lo que solo miró la figura del Año, por lo que la diferencia es 2020-2017 = 3.

De aquí es de donde proviene la diferencia de 1 año. Podría simplemente -1 después de la expresión para corregirla.
DATEDIFF ([Group Entry Date], EOMONTH ([Reporting Date], 0), AÑO) -1)
Sin embargo, desde mi punto de vista, le sugiero que use el mes como intervalo y luego lo divida por 12 para obtener una diferencia de año más precisa:
Measure = CALCULATE(AVERAGEX('Emp Data',DATEDIFF([Group Entry Date],EOMONTH([Reporting Date],0),MONTH)/12),FILTER('Emp Data','Emp Data'[Headcount]<>0),'Emp Data'[Group Entry Date]<>0,'Emp Data'[Group Entry Date])​

promedio fecha diff.JPG

Paul Zheng
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

adhumal2

En respuesta a V-pazhen-msft

@ V-pazhen-msft Muchas gracias. Ajusté la fórmula como se menciona a continuación y funcionó

CALCULAR (PROMEDIO (Emp),

REDONDEO (DATEDIFF (Table1[Group Entry Date],Tabla 1[Reporting Date], MES) / 12,0))

)

adhumal2

@edhans @Greg_Deckler @amitchandak – Aprecio sus respuestas.

Adjunto he proporcionado el enlace a los datos de muestra Datos de muestra

En respuesta a adhumal2

@ adhumal2
¿Te perdiste un [reporting data] ¿columna? pero veo tu problema.
Supongo que tiene un valor promedio diferente para cada fila, esto se debe a que usó averagex. todas las funciones de terminación x son iteradores, iteran sobre una tabla y evalúan una expresión para cada fila.


Intenta usar TODO[‘Emp Data’] como el contexto:

Measure = CALCULATE(AVERAGEX(ALL('Emp Data'),DATEDIFF([Group Entry Date],EOMONTH([Report date],0),YEAR)),KEEPFILTERS(Table2[Headcount]<>0),'Emp Data'[Group Entry Date]<>BLANK())

Atentamente
Paul Zheng

adhumal2

En respuesta a V-pazhen-msft

@ V-pazhen-msft Gracias por su respuesta, Sí, me perdí la fecha del informe. La fecha del informe es 31/12/2020 para todas las filas.

Para los datos que tengo, el cálculo en Excel muestra que la permanencia promedio es de 13,19 años. Sin embargo, si utilizo la siguiente fórmula (sin TODOS), DAX me da 14,1 años, que es casi 1 año más que el real.

Greg_Deckler

Los datos de muestra y el resultado esperado es la forma más rápida de llegar a una respuesta. Consulte esta publicación sobre cómo obtener una respuesta rápida a su pregunta: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490

Quizás algo como:

Avg Tenure Measure =
  VAR __Table = FILTER('Emp Data',[Headcount]<>0 && [Group Entry Date]<>BLANK())
  VAR __Taable1 =
    ADDCOLUMNS(
      __Table,
      "__Years",DATEDIFF([Group Entry Date],EOMONTH([Reporting Date],0),YEAR) + 1,
    )
RETURN
  AVERAGEX(__Table1,[__Years]

adhumal2

Aquí está la captura de pantalla de los datos de muestra.

1. El cálculo final debe calcular

– Duración media de los empleados con estado ‘Activo’, ‘Licencia con goce de sueldo’, ‘Permiso sin goce de sueldo’

– Al hacer el cálculo anterior, debe excluir a los empleados con el tipo «Collar azul» con el estado anterior

– Mientras realiza el cálculo anterior, debe excluir a los empleados con Plantilla = 0

Aquí está la entrada

Capture1.PNG

Aquí está la tabla para la que necesito calcular la permanencia promedio

Capture11.PNG

Edhans

En respuesta a adhumal2

@ adhumal2 estamos tratando de ayudar. Por favor, no proporcione capturas de pantalla de los datos que tenemos que ingresar. Proporcioné un enlace a una publicación excelente sobre cómo compartir datos para que podamos copiar / pegar, o mejor aún, simplemente abrir un archivo Excel o PBIX. También es muy útil tener una captura de pantalla o una tabla de la salida esperada para que cuando estemos probando medidas, entregue la salida esperada.

Greg_Deckler

En respuesta a Edhans

@edhans – Esa es una publicación fantástica de @ImkeF, acabo de agregar esa publicación como un enlace en el artículo de mi blog donde hablo sobre la publicación de datos.

Edhans

En respuesta a Greg_Deckler

Sí, @Greg_Deckler, ella simplemente reunió eso durante los últimos días y lo mencionó en el canal de Teams. Ojalá tu publicación y la suya se pudieran convertir en Stickies en los foros. Obtendrían respuestas de los usuarios finales mucho más rápido.

Amitchandak

La información que ha proporcionado no me aclara el problema. ¿Puede explicarlo con un ejemplo? ¿Puede compartir datos de muestra y salida de muestra?
Entre tanto, consulte mi blog sobre recursos humanos que trata sobre cómo encontrar empleados actuales: https: //community.powerbi.com/t5/Community-Blog/HR-Analytics-Active-Employee-Hire-and-Termination-tr …

Aprecie sus felicitaciones.

Edhans

¿Puede compartir algunos datos (falsos o de otro tipo, siempre que no sean confidenciales) a través de OneDrive o seguir las pautas aquí? No estoy seguro de comprender completamente su problema y no quiero pasar media hora ingresando datos falsos pensando que estoy emulando su modelo y termino perdiendo el tiempo porque no lo entendí.

Deja un comentario

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