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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Promedio de EE activos para el intervalo de fechas

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 empresaNúmero de empleadoNombre completoDescripción predeterminada de CC1Estado del empleadoFecha de contrataciónFecha de recontrataciónFecha de terminación
Abecedario10611933Empleado, o24EnfermeríaActivo04/13/2009
Abecedario10611936Empleado, o27EnfermeríaActivo10/30/2009
Abecedario10611938Empleado, o29EnfermeríaActivo12/01/2010
Abecedario10611939Empleado, o30EnfermeríaTerminado12/01/2010 01/31/2022
Abecedario10611935Empleado, o26EnfermeríaActivo06/29/2012
Abecedario10611917Empleado, o8AdministraciónActivo07/14/2014
Abecedario10611918Empleado, o9AdministraciónActivo02/20/2017
Abecedario10611931Empleado, o22EnfermeríaActivo05/22/2017
Abecedario10611914Empleado, o5EnfermeríaActivo05/21/2018
Abecedario10611916Empleado, o7ActividadesActivo07/15/2019
Abecedario10611910Empleado, o1ActividadesTerminado12/29/2020 06/11/2021
Abecedario10611911Empleado, o2ActividadesTerminado12/29/2020 04/08/2021
Abecedario10611912Empleado, o3ActividadesTerminado12/29/2020 07/12/2021
Abecedario10611919Empleado, o10Quehaceres domésticosActivo12/29/2020
Abecedario10611941Empleado, o32AdministraciónActivo02/24/202104/28/202203/27/2022
Abecedario10611920Empleado, o11Quehaceres domésticosActivo03/24/2021
Abecedario10611921Empleado, o12Quehaceres domésticosTerminado05/05/2021 04/29/2022
Abecedario10611934Empleado, o25AdministraciónActivo06/02/2021
Abecedario10611922Empleado, o13Quehaceres domésticosTerminado06/16/2021 08/20/2022
Abecedario10611930Empleado, o21Quehaceres domésticosTerminado06/30/2021 07/16/2022
Abecedario10611928Empleado, o19Quehaceres domésticosTerminado08/25/202103/21/202201/03/2022
Abecedario10611923Empleado, o14EnfermeríaTerminado10/20/2021 03/29/2022
Abecedario10611924Empleado, o15EnfermeríaTerminado10/20/2021 06/11/2022
Abecedario10611925Empleado, o16EnfermeríaTerminado12/01/2021 03/27/2022
Abecedario10611929Empleado, o20Quehaceres domésticosTerminado12/15/2021 12/28/2021
Abecedario10611927Empleado, o18Quehaceres domésticosActivo02/09/2022
Abecedario10611932Empleado, o23EnfermeríaTerminado04/06/2022 05/20/2022
Abecedario10611940Empleado, o31AdministraciónTerminado06/15/2022 07/28/2022

¡Gracias de antemano!

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

@MStark ,

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" )
        )
    )

yingyinr_0-1663729346530.png

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?

MStark_1-1663774428246.png

@MStark ,

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"
                )
        )
    )

yingyinr_0-1663833079342.png

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!

Syndicate_Admin
Administrator
Administrator

@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

MStark_0-1663782900810.png

¿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!!

MStark_0-1663857244213.png

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors