Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
skasper
Responsive Resident
Responsive Resident

Empleados activos por período

Hola

luchando con lo que debería ser simple. Tengo dos tablas ('crm_employees' y 'DimDates'). Existe una relación entre ellos (ver imagen a continuación).

Table RelationshipRelación de tabla

Lo que estoy tratando de calcular es

  1. el total de personas que han comenzado en un período determinado, y
  2. el total de personas que siguen activas (es decir, "Fecha de finalización del contrato" vacías o en el futuro)

Esta es mi medida para los activos:

Empleados activos: 
CALCULATE(
	COUNTA(crm_employees[Empleado]);
	crm_employees[Código de estado] - "Activo"
)

Y esto para el total de carreras:

Empleados activos que se ejecutan en total en Fecha , 
CALCULATE(
	'Medidas clave'[Empleados activos];
	FILTER(
		ALLSELECTED('DimDates'[Date]);
		ISONORAFTER('DimDates'[Fecha]; MAX('DimDates'[Fecha]); DESC)
) )

Mis problemas:

  1. es que no cuenta los empleados donde la fecha de inicio del contrato está vacía. Supongo que es porque no puede relacionar el 'inicio de contrato' vacío con el campo 'DimDates' Date.
  2. el total sólo está aumentando, lo cual no es correcto. por ejemplo, tuvimos más empleados en agosto de 2016 que en junio de 2017, pero esto no se refleja como se puede ver a continuación. La medida aplica obviamente el filtro 'activo' independientemente de cuándo un empleado se volvió inactivo ('fecha de finalización del contrato'). Creo que necesito redefinir la medida para contar los empleados "activos" para considerar el período durante el cual estuvieron activos (desde la "fecha de inicio del contrato" hasta la "fecha de finalización del contrato"), pero no sé cómo hacerlo.

Total Employees per PeriodTotal de empleados por período

Best - Sascha
Please always mark accepted solutions. It helps others with similar questions or problems. Thank you.
1 ACCEPTED SOLUTION

Gracias por el consejo. Lo intenté y tampoco obtengo el resultado correcto. Lo que consigo es el número de empleados que se fueron en un período específico (por ejemplo, mes).

Como tengo que entregar el informe hoy, decidí adoptar un enfoque diferente, mostrando el número de uniones, abandonadores y la evolución general del personal activo como en la siguiente tabla.

Clipboard02.jpg

Best - Sascha
Please always mark accepted solutions. It helps others with similar questions or problems. Thank you.

View solution in original post

30 REPLIES 30

@rado81 Supongo que depende de lo que intentes contar. Si la misma persona es contratada dos veces en el mismo año, ¿no es lo mismo que contratar a dos personas ese año? Sólo porque sea la misma persona no cambia el hecho de que hubo dos contrataciones. En otras palabras, si ignora el nombre del empleado, los eventos son 1) y se contrata al empleado, 2) se separa un empleado, 3) se contrata a un empleado. Son dos contrataciones y una separación que ocurrió en el año. Eso no cambia el número de empleados que estuvieron activos en un período determinado.

Anonymous
Not applicable

@rl_evans Estuve de acuerdo con usted, pero también no estoy tratando de mostrar cuántas personas donde se contrata en un período dado, pero ¿cuántas en su actividad, y si usted tiene la misma persona contratada dos veces en un año, en términos de empleados activos sólo debe ser contado como uno, ¿verdad? parece cambiar mucho el número de empleados activos en los años, cada mes se ve mejor.

@rado81 Mirando tu DAX más de cerca, una cosa que salta es que tu filtro es incorrecto:

(v_FSASHRBIDATA[EmploymentDate] <- EndOfPeriod &&
v_FSASHRBIDATA[TerminationDate] >- StartOfPeriod)

Debería tener este aspecto:

(v_FSASHRBIDATA[EmploymentDate] <- EndOfPeriod &&
v_FSASHRBIDATA[TerminationDate] > EndOfPeriod)

Para contar todos los empleados activos en un período determinado, desea incluir aquellos cuya fecha de terminación es posterior al final del período.

Btw - Un año también es un período, así que si la misma persona fue contratada dos veces en ese período es irrelevante. Si ese período sigue activo al final del año, solo debe haber un registro que muestre a ese individuo como activo. Por lo tanto, sólo se contarían una vez. Si su recuento está apagado, se debe a un problema diferente con su DAX.

Por último, en sus datos, hay una fecha de terminación que muestra el año 1753. Esto no funcionará con su declaración dax, ya que esto significa que la persona fue cancelada antes de ser contratada. Si esa fecha se utiliza para indicar que la persona sigue activa, debe modificar su DAX para buscar esa fecha específica (1/1/1753).

Anonymous
Not applicable

@rl_evans Sólo para aclararlo, la fecha 1753 se convierte en SQL en espacios en blanco, por alguna razón los datos de Navision directamente en la base de datos lo dice así, disculparse por mí pereza 🙂

La razón por la que sospeché eso, es porque no importa lo que intente, mis estadísticas anuales se estropean, y no puedo entender por qué.

Cambiar lo que sugeriste sin forntizar alféizar dio los resultados incorrectos.

Anonymous
Not applicable

@rl_evans

Veo que usted toma el acocunt para las fechas de termintación en el futuro, correcto ?

Estoy preguntando porque parece que el cálculo de DAX está excluyendo exactamente a todos los empleados activos actuales con una fecha de terminación en el futuro, y no puedo averiguar por qué es eso.

@rado81: mi fórmula DAX calcula el número de empleados activos al final de un período determinado. Las variables de fecha máxima inicial capturan la fecha máxima dado el contexto de fecha actual. A continuación, la función CalculateTable crea una tabla de todos los empleados contratados en o antes de la fecha máxima. La función ALL hace que CalculateTable ignore el contexto de fecha actual. Estoy haciendo esto porque el contexto de fecha tiene una fecha mínima y máxima y necesito no sólo encontrar todos los empleados dentro del contexto de fecha, sino también aquellos contratados antes del contexto de fecha; ya que todavía pueden estar activos. La función Calcular busca todos los empleados activos que se encuentran en la tabla intermedia. Los empleados activos se definen como aquellos cuya fecha de terminación está en blanco o es mayor que la fecha máxima del período en contexto.
Espero que esto ayude.

Tengo los mismos prolosos.

por favor ayuda

Syndicate_Admin
Administrator
Administrator

No creo que pueda utilizar el estado activo aquí, ya que probablemente sólo funciona para los empleados actuales a partir de hoy, ¿verdad?

Si desea "Empleados activos" históricos en un mes pasado, deben tener > Inicio del contrato y Fin del contrato < dentro de ese mes.

Gracias. Sí, yo también lo creo y traté de hacerlo. Pero hasta ahora sin éxito. Cualquier propuesta, cómo se vería el DAX para esto, sería muy apreciada.

Best - Sascha
Please always mark accepted solutions. It helps others with similar questions or problems. Thank you.

No estoy seguro de cómo esto puede ser resuelto sólo por DAX.

Le sugiero que haga una segunda tabla de fechas unida en el fin del contrato, entonces tiene Fecha de inicio y Fecha de finalización y luego puede filtrar EndMonth <

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors