Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Hola
Tengo una tabla de empleados con fechas de contratación, terminación y recontratación. También tengo una tabla de fechas
Estoy tratando de obtener la cantidad promedio de empleados activos para cualquier rango de fechas seleccionado en la tabla de fechas. Debe ser la cantidad de empleados activos en la primera fecha seleccionada + EE activos del último día /2
Empleado activo = Empleado cuya fecha de contratación es anterior a la fecha seleccionada y la fecha de terminación está en blanco o después de la fecha seleccionada + empleados con fecha de recontratación que es anterior a la fecha seleccionada y el estado es Activo
En Excel tengo fórmulas countifs que me dan la información correcta
¿Alguien puede ayudarme a obtener esto en BI?
Datos de muestra:
Nombre de la empresa | Número de empleado | Nombre completo | Descripción predeterminada de CC1 | Estado del empleado | Fecha de contratación | Fecha de recontratación | Fecha de terminación |
Abecedario | 10611933 | Empleado, o24 | Enfermería | Activo | 04/13/2009 | ||
Abecedario | 10611936 | Empleado, o27 | Enfermería | Activo | 10/30/2009 | ||
Abecedario | 10611938 | Empleado, o29 | Enfermería | Activo | 12/01/2010 | ||
Abecedario | 10611939 | Empleado, o30 | Enfermería | Terminado | 12/01/2010 | 01/31/2022 | |
Abecedario | 10611935 | Empleado, o26 | Enfermería | Activo | 06/29/2012 | ||
Abecedario | 10611917 | Empleado, o8 | Administración | Activo | 07/14/2014 | ||
Abecedario | 10611918 | Empleado, o9 | Administración | Activo | 02/20/2017 | ||
Abecedario | 10611931 | Empleado, o22 | Enfermería | Activo | 05/22/2017 | ||
Abecedario | 10611914 | Empleado, o5 | Enfermería | Activo | 05/21/2018 | ||
Abecedario | 10611916 | Empleado, o7 | Actividades | Activo | 07/15/2019 | ||
Abecedario | 10611910 | Empleado, o1 | Actividades | Terminado | 12/29/2020 | 06/11/2021 | |
Abecedario | 10611911 | Empleado, o2 | Actividades | Terminado | 12/29/2020 | 04/08/2021 | |
Abecedario | 10611912 | Empleado, o3 | Actividades | Terminado | 12/29/2020 | 07/12/2021 | |
Abecedario | 10611919 | Empleado, o10 | Quehaceres domésticos | Activo | 12/29/2020 | ||
Abecedario | 10611941 | Empleado, o32 | Administración | Activo | 02/24/2021 | 04/28/2022 | 03/27/2022 |
Abecedario | 10611920 | Empleado, o11 | Quehaceres domésticos | Activo | 03/24/2021 | ||
Abecedario | 10611921 | Empleado, o12 | Quehaceres domésticos | Terminado | 05/05/2021 | 04/29/2022 | |
Abecedario | 10611934 | Empleado, o25 | Administración | Activo | 06/02/2021 | ||
Abecedario | 10611922 | Empleado, o13 | Quehaceres domésticos | Terminado | 06/16/2021 | 08/20/2022 | |
Abecedario | 10611930 | Empleado, o21 | Quehaceres domésticos | Terminado | 06/30/2021 | 07/16/2022 | |
Abecedario | 10611928 | Empleado, o19 | Quehaceres domésticos | Terminado | 08/25/2021 | 03/21/2022 | 01/03/2022 |
Abecedario | 10611923 | Empleado, o14 | Enfermería | Terminado | 10/20/2021 | 03/29/2022 | |
Abecedario | 10611924 | Empleado, o15 | Enfermería | Terminado | 10/20/2021 | 06/11/2022 | |
Abecedario | 10611925 | Empleado, o16 | Enfermería | Terminado | 12/01/2021 | 03/27/2022 | |
Abecedario | 10611929 | Empleado, o20 | Quehaceres domésticos | Terminado | 12/15/2021 | 12/28/2021 | |
Abecedario | 10611927 | Empleado, o18 | Quehaceres domésticos | Activo | 02/09/2022 | ||
Abecedario | 10611932 | Empleado, o23 | Enfermería | Terminado | 04/06/2022 | 05/20/2022 | |
Abecedario | 10611940 | Empleado, o31 | Administración | Terminado | 06/15/2022 | 07/28/2022 |
¡Gracias de antemano!
Puede crear una medida como la siguiente para obtenerla, encuentre los detalles en el archivo adjunto.
Active Employee =
VAR _seldate =
SELECTEDVALUE ( 'Date'[Date] )
RETURN
CALCULATE (
DISTINCTCOUNT ( 'Employee'[Full Name] ),
FILTER (
'Employee',
(
'Employee'[Hire Date] <= _seldate
&& (
ISBLANK ( 'Employee'[Termination Date] )
|| 'Employee'[Termination Date] > _seldate
)
)
|| ( 'Employee'[Rehire Date] <= _seldate
&& 'Employee'[Employee Status] = "Active" )
)
)
Saludos
¡Gracias por tomarse el tiempo para investigar esto! Veo que funciona en el archivo de prueba que adjuntaste, pero cuando copié la fórmula al BI con datos reales, obtengo el mismo número para todos los meses. ¿Hay algo que deba actualizarse?
Por favor, intente actualizar la fórmula de medida [Empleado activo] como se muestra a continuación y compruebe si puede devolver el resultado correcto ...
Active Employee =
VAR _selyear =
SELECTEDVALUE ( 'Calendar'[Date].[Year] )
VAR _selmonth =
SELECTEDVALUE ( 'Calendar'[Date].[MonthNo] )
RETURN
CALCULATE (
DISTINCTCOUNT ( 'EE Info'[Full Name] ),
FILTER (
'EE Info',
(
VALUE (
YEAR ( 'EE Info'[Hire Date] )
& IF (
MONTH ( 'EE Info'[Hire Date] ) < 10,
"0" & MONTH ( 'EE Info'[Hire Date] ),
MONTH ( 'EE Info'[Hire Date] )
)
)
<= VALUE ( _selyear & IF ( _selmonth < 10, "0" & _selmonth, _selmonth ) )
&& (
ISBLANK ( 'EE Info'[Termination Date] )
|| VALUE (
YEAR ( 'EE Info'[Termination Date] )
& IF (
MONTH ( 'EE Info'[Termination Date] ) < 10,
"0" & MONTH ( 'EE Info'[Termination Date] ),
MONTH ( 'EE Info'[Termination Date] )
)
)
> VALUE ( _selyear & IF ( _selmonth < 10, "0" & _selmonth, _selmonth ) )
)
)
|| (
VALUE (
YEAR ( 'EE Info'[Rehire Date] )
& IF (
MONTH ( 'EE Info'[Rehire Date] ) < 10,
"0" & MONTH ( 'EE Info'[Rehire Date] ),
MONTH ( 'EE Info'[Rehire Date] )
)
)
<= VALUE ( _selyear & IF ( _selmonth < 10, "0" & _selmonth, _selmonth ) )
&& 'EE Info'[Employee Status] = "Active"
)
)
)
Saludos
Todavía no parece funcionar... ¿Es necesario que esté activa una relación entre el calendario y la tabla de información de EE? Jugué con la medida Greg_Deckler proporcionada y su funcionamiento por ahora
¡Muchas gracias por su tiempo y ayuda!
@MStark Quizás:
Measure =
VAR __Min = MIN('Dates'[Date])
VAR __Max = MAX('Dates'[Date])
VAR __Table = FILTER('Table',[Hire Date] <= __Min && ( [Termination Date] = BLANK() || [Termination Date] < __Min) )
VAR __Table1 = FILTER('Table', [Hire Date] <= __Max && ( [Termination Date] = BLANK() || NOT([Termination Date] > __Min && [Termination Date] < __Max) )
RETURN
DIVIDE(COUNTROWS(__Table) + COUNTROWS(__Table1),2)
@Greg_Deckler Esto parece funcionar, aunque no incluye Rehires. El empleado también debe contarse como un empleado activo si tiene una fecha de recontratación antes de la La fecha y el estado seleccionados son Activos o, si se termina, la fecha de finalización es después de la fecha seleccionada
¡Gracias por su tiempo!
@MStark Sí, consideré la recontratación, pero no estaba seguro de cómo funcionaba eso en su sistema. ¿El empleado recibe una fila adicional? ¿El ID del empleado sigue siendo el mismo? Si ambos son "sí", entonces podría resolverlo usando un RESUMEN y asegurarse de obtener la fecha de inicio MAX y luego, esencialmente, buscar la fecha de terminación correspondiente para cada fila. Desordenado.
@Greg_Deckler El empleado # sigue siendo el mismo, pero no se agrega una fila adicional. Hay una columna separada llamada Fecha de recontratación (consulte los datos de muestra en la publicación original)
Estaba pensando en agregar 2 Var más para Rehires el primer día seleccionado y recontrataciones en el último día seleccionado. Luego para agregarlo al promedio. Hizo algo como esto, pero no funciona. Piense que tal vez el problema es que está contando a los empleados que no tienen una fecha de recontratación en lugar de solo volver a contratar < = Fechas máximas o mínimas
¿Algún consejo sobre lo que estoy haciendo mal o una forma diferente de hacerlo?
¡Gracias por tomarse el tiempo para investigar esto!
@MStark Tal vez tanque sus variables __RF y __RL y en su __F y __L variables donde se refiere a [Fecha de contratación] reemplace esa referencia de columna con MAX([Fecha de contratación, [Fecha de recontratación])
¡Creé la medida a continuación y funciona por ahora! Muchas gracias por toda tu ayuda!!
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Ask questions in Eventhouse and KQL, Eventstream, and Reflex.