josecomputadora1
Hola,
Solo necesito ayuda para organizar cómo hacer esto. Tengo una tabla que muestra los nombres de los empleados, el título, la fecha de inicio, la fecha de finalización y «¿activo?». La columna activa solo muestra si es un empleado activo hoy o no.
Lo que quiero es poder mostrar (basado en las columnas de fecha de inicio y fecha de finalización cuántos empleados teníamos para cada mes. El rango en este momento solo se remonta al 1 de enero, pero quiero comenzar con esto. Cualquiera se agradece la ayuda
**Pensé en tener una columna para cada mes con un 1 o un 0 si estaban activos durante el mes. Esto funcionaría, excepto que se agregan columnas adicionales para cada mes y esto no es libre de mantenimiento (al menos no como lo tenía). Estoy familiarizado con Excel pero soy nuevo en Power BI.
table= tblEmpleados
columna = EmpName
columna = colStartDate
columna= fechaFinalCol
columna = colActivo?
v-ljerr-msft
Hola @joshcomputer1,
Si lo entiendo correctamente, debería poder seguir los pasos a continuación para obtener el recuento mensual de empleados a partir de un rango de fechas de inicio y finalización.
1. Agregue una tabla de calendario individual si aún no tiene una.
Date = CALENDARAUTO()
2. Use la fórmula a continuación para crear una medida y mostrar la medida en el Gráfico visual con Fecha[Date] columna como eje.
Count of Active Employee = VAR currentDate = MAX ( 'Date'[Date] ) RETURN CALCULATE ( COUNTROWS ( Table1 ), FILTER ( Table1, ( Table1[Start Date] <= currentDate && Table1[End Date] >= currentDate ) && Table1[Active?] = 1 ) )
Aquí está el archivo pbix de muestra para su referencia.
Saludos
luisvp
Estimada comunidad, quiero crear una tabla similar pero luego en Power Query usando el lenguaje m Query. ¿Podría alguien ayudarme con esto? Cuando uso el código DAX en Power BI Desktop, mi archivo de escritorio se vuelve muy lento: Tamaño total en ejecución = CALCULAR (CONTARA (Datos [StaffLevelName]), FILTRO ( TODO (Datos) , Datos [FiscalStartYear] <= MÁX (Datos [FiscalStartYear])) ) Muchísimas gracias. Saludos cordiales Louis van Paassen
sergiogg86
En respuesta a luisvp
Hola a todos,
¿Qué sucede si se vuelve a contratar a un empleado con su mismo número de empleado? ¿Qué cambiaría? @louisvp @joshcomputer1 @Anónimo @Anónimo @justincordasco @JRe5777
Sacchini
Hola,
Estoy tratando de averiguar cómo calcular el recuento de empleados activos para diferentes fechas. Tengo dos tablas, Empleado y Fecha.
En la tabla de empleados tengo columnas con [DateIn] para cuando el empleado empezó en la empresa y [DateOut] para cuando el empleado dejó la empresa. Para todos los empleados actuales [DateOut] está en blanco.
Estoy usando lo siguiente:
También estoy intentando con esto:
JRe5777
En respuesta a Sacchini
Hola, @BSacchini, creo que tal vez es la forma en que estás usando la condición EN BLANCO.
Le sugiero que pruebe esta medida que combina la solución en este hilo con un hilo de casos en blanco, ya que funcionó para mí.
Entonces, primero, asegúrese de que su tabla de fechas termine en HOY ()
La fórmula que usé para la tabla de fechas fue
Dates=CALENDAR(DATE(1950,1,1),TODAY())
Hice esto en lugar de CALENDARAUTO() porque con esto obtendría la fecha máxima al 31/12/2019, lo que significa que sería el empleado activo para fin de año, y lo quería de forma dinámica durante meses o incluso días ( para poder obtener el número real de empleados activos cada día que reviso el informe)
Luego, en la medida para la tabla de empleados, puede hacer:
Employees = VAR currentDate = MAX ( 'Date'[Date] ) RETURN CALCULATE ( DISTINCTCOUNT(Employee[Employee Number]), Employee[DateIn] <= currentDate, OR(ISBLANK(Employee[DateOut] ), Employee[DateOut] > currentDate) )
Luego, en una matriz o gráfico de barras, utiliza la tabla Fechas para filtrar y la medida de los valores y puede obtener el número de empleados activos por mes, por ejemplo.
Déjame saber si esto funcionó para ti.
Atentamente
v-ljerr-msft
Hola @joshcomputer1,
Si lo entiendo correctamente, debería poder seguir los pasos a continuación para obtener el recuento mensual de empleados a partir de un rango de fechas de inicio y finalización.
1. Agregue una tabla de calendario individual si aún no tiene una.
Date = CALENDARAUTO()
2. Use la fórmula a continuación para crear una medida y mostrar la medida en el Gráfico visual con Fecha[Date] columna como eje.
Count of Active Employee = VAR currentDate = MAX ( 'Date'[Date] ) RETURN CALCULATE ( COUNTROWS ( Table1 ), FILTER ( Table1, ( Table1[Start Date] <= currentDate && Table1[End Date] >= currentDate ) && Table1[Active?] = 1 ) )
Aquí está el archivo pbix de muestra para su referencia.
Saludos
zwyatt
En respuesta a v-ljerr-msft
Gracias, gracias, muchas gracias por esta solución.
He estado pasando un tiempo increíble rastreando una solicitud de datos similar a mi problema, junto con una solución viable y aplicable, y me encontré con esto. Funcionó perfectamente cuando se aplicó a mi proyecto. ¡Salud!
Anónimo
En respuesta a v-ljerr-msft
Oye, esto es increíble, ¿puedes explicar el funcionamiento de esta medida dax para comprender lo que sucede debajo del capó?
maggigfrances
En respuesta a v-ljerr-msft
Necesito hacer lo mismo, pero recibo un error con esta solución y tal vez se deba a que todos mis empleados «activos» no tienen «fechas de licencia»: ese campo es nulo. como puedo dar cuenta de eso??
Como referencia, aquí está la fórmula que estoy usando con mis propias referencias:
MdxScript(Modelo) (6, 236) Error de cálculo en la medida ‘Lista de equipos'[Count of Active Employee3]: Las operaciones de comparación de DAX no admiten la comparación de valores de tipo Texto con valores de tipo Integer. Considere usar la función VALOR o FORMATO para convertir uno de los valores.
JRe5777
En respuesta a maggigfrances
Hola @maggigfrench
Es tuyo [Status2] ¿Tipo de valor de columna texto o entero? Puede ser que necesites poner «1»
Además, para tener en cuenta las fechas de vacaciones nulas, debe usar la función ISBLANK.
Sugeriría usar la función de cálculo de esta manera:
Count of Active Employee3 = VAR currentDate = MAX('Date Table'[Date]) RETURN CALCULATE ( DISTINCTCOUNT('Team List' [ Employee ID ? ]), 'Team List'[Start Date] <= currentDate , OR(ISBLANK('Team List'[Leave Date]),'Team List'[Leave Date]> currentDate) , 'Team List'[Status2] = 1 )
Déjame saber cómo funcionó esto para ti
soy
En respuesta a v-ljerr-msft
querido v-ljerr-msft
Mirando esta banda de rodadura, esto es exactamente lo que necesito.
Sin embargo, al usar su fórmula, tráigame el total de empleados hoy, en lugar de por mes, en mi caso obtengo 27 cada mes para todos los años (que es el total de empleados hoy), ¿qué estoy haciendo mal? Por cierto, debo mencionar que no tengo una fecha de finalización para cada empleado ya que todos están activos. Entonces tus [End Date] = Hoy() en mi tabla y tu ‘Fecha’ [Date] = Hoy() en mi tabla.
Count of Active Employee = VAR currentDate = MAX ( 'Date'[Date] ) RETURN CALCULATE ( COUNTROWS ( Table1 ), FILTER ( Table1, ( Table1[Start Date] <= currentDate && Table1[End Date] >= currentDate ) && Table1[Active?] = 1 ) )
Mi fórmula se ve así:
JRe5777
En respuesta a soy
tengo el mismo problema y creo que es porque mi max (fecha) no es resultando el último día de cada mes.
La última fecha de mi calendarauto() es 31/12/2999 (o 31/12/2019 si tuviera que dejar la fecha de finalización en blanco).
Por eso también tengo el mismo número para cada mes:
¿Podemos resolver esto?
Terminé resolviendo esto cambiando la tabla de fechas a:
justincordasco
En respuesta a JRe5777
También obtengo el mismo total para cada período. Cambiar la fórmula de la fecha no hace la diferencia. ¿Pensamientos?
gilbertq
En respuesta a JRe5777
Hola
Sugeriría crear una tabla de fechas personalizada, donde pueda limitarla para que se detenga en la última fecha en la que obtuvo datos.
Esto también le permitirá crear columnas personalizadas según sus requisitos.
Aquí está mi publicación de blog sobre cómo crear fácilmente una tabla de fechas: https://www.fourmoo.com/2016/09/07/create-dynamic-periods-for-fiscal-or-calendar-dates-in-power- bi/
GerritVeltman
En respuesta a v-ljerr-msft
En lugar de COUNTROWS, deberíamos usar DISTINCTCOUNT aquí y hacer referencia al nombre del empleado
rwod
En respuesta a v-ljerr-msft
Pregunta relacionada con esta publicación…
He copiado la fórmula, pero no estoy seguro de cuál es el
Table1[Active?] = 1
es para, y lo que podría necesitar agregar en términos de calcular esta columna de datos para completar el recuento que ha enumerado a continuación. Mi archivo actual tiene una columna activa, pero solo indica si están activos actualmente (no activos durante los períodos de tiempo variables mensualmente) y esa es una cantidad estática no variable pendiente de la jerarquía de fechas en el visual.
josecomputadora1
En respuesta a rwod
Tabla 1[Active?] se refiere a la Tabla 1 y la columna denominada «¿Activo?». Entonces, si tienen un 1, actualmente están activos. De hecho, usamos un filtro en la tabla para mostrar solo a los miembros activos del equipo. Esto suena como lo que estás usando.
La verdadera magia aquí son los campos de fecha de inicio y finalización. La fórmula DAX enumerada hace referencia a esas fechas y luego calcula si hubo miembros del equipo activos durante ciertos meses.
rwod
En respuesta a v-ljerr-msft
Pregunta relacionada con esta publicación…
He copiado la fórmula, pero no estoy seguro de cuál es el
Table1[Active?] = 1
es para, y lo que podría necesitar agregar en términos de calcular esta columna de datos para completar el recuento que ha enumerado a continuación. Mi archivo actual tiene una columna activa, pero solo indica si están activos actualmente (no activos durante los períodos de tiempo variables mensualmente) y esa es una cantidad estática no variable pendiente de la jerarquía de fechas en el visual.
gilbertq
Hola @joshcomputer1
¿Tiene algunos datos de muestra, que lo harán más fácil?
Podría tener una medida con la siguiente sintaxis a continuación, pero necesitaría tener una tabla de fechas para que esto funcione. Donde crea una relación de sus datos con la tabla Fecha.
radacad.com/do-you-need-a-date-dimension
Total Employees = VAR EarliestDate = CALCULATE(MIN('Calendar'[Date]),ALLSELECTED()) RETURN CALCULATE(DISTINCTCOUNT('tblEmployees'[colActive]),FILTER(ALL('Calendar'[Date]),'Calendar'[Date] <= MAX('Calendar'[Date]) && 'Calendar'[Date] >= EarliestDate))
josecomputadora1
En respuesta a gilbertq
¿Cómo agrego una relación al calendario de fechas? ¿Relacionar las columnas de fechas de inicio y finalización con él? Ya tengo columnas de números de meses, años y semanas en la mayoría de mis documentos de Excel y me gustaría alejarme de eso.
v-ljerr-msft
En respuesta a josecomputadora1
Hola @joshcomputer1,
La relación con la fecha del calendario es innecesario aquí.
¿Podría compartir un archivo pbix de muestra para que podamos ayudarlo mejor con este problema? Puedes subirlo a OneDrive o Dropbox y publicar el enlace aquí, o enviármelo por mensaje privado. Oculte los datos confidenciales antes de cargarlos.
Saludos