Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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).
Lo que estoy tratando de calcular es
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:
Solved! Go to 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.
Hola @rl_evans
Así que terminé con este cálculo DAX con algo de ayuda,
Recuento de empleados activos : VAR EndOfPeriod ? MAX ('Calendar'[Date]) VAR StartOfPeriod ? MIN ('Calendar'[Date]) RETURN CALCULATE ( DISTINCTCOUNT(v_FSASHRBIDATA[EmpId]), FILTER( ALL('v_FSASHRBIDATA'), (v_FSASHRBIDATA[EmploymentDate] <- EndOfPeriod &&& v_FSASHRBIDATA[TerminationDate] >- StartOfPeriod) ) ) + CALCULATE( DISTINCTCOUNT('v_FSASHRBIDATA'[EmpId]), FILTER( ALL(v_FSASHRBIDATA), ('v_FSASHRBIDATA'[EmploymentDate]<-EndOfPeriod && 'v_FSASHRBIDATA'[TerminationDate] á blank() ) ) )
@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.
@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).
@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.
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
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.
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 <
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |