Promedio, final del período FTE / PAX basado en la fecha de inicio y la fecha de finalización del cambio de empleo / contrato

Un usuario Pregunto ✅

BMR_MR

¡Hola a todos!

Estoy tratando de crear una visualización de los datos de RR.HH. en PowerBI, pero antes de hacerlo, estoy trabajando en PowerQuery y Data Model usando Excel solo para poder hablar con los miembros de RR.HH. sobre la calidad e integridad de los datos.

Ahora me las arreglé para construir un modelo que proporciona valores promedio en líneas para cada empleado, puesto, departamento. ect. junto con la tabla de tiempos, pero cuando apliqué tablas virtuales (TAB1, TAB2) para calcular los datos promedio de FTE / PAX, mi modelo se ralentizó drásticamente …

Empecé con la fórmula para la suma de FTE:

sFTE: = CALCULAR (
SUM (Contratos[Full-time equivalent]),
FILTRO (VALORES (Contratos[Line applies as of this date]), Contratos[Line applies as of this date]<= MAX ('Calendario'[Date])),
FILTRO (VALORES (Contratos[Line applies to this date]), O (Contratos[Line applies to this date]> = MIN (‘Calendario'[Date]), ISBLANK (Contratos[Line applies to this date])))
)

y para el número de PAX he usado la fórmula:

ESPACIO: = CALCULAR (
DISTINCTCOUNT (Contratos[Personnel number]),
FILTRO (VALORES (Contratos[Line applies as of this date]), Contratos[Line applies as of this date]<= MAX ('Calendario'[Date])),
FILTRO (VALORES (Contratos[Line applies to this date]), O (Contratos[Line applies to this date]> = MIN (‘Calendario'[Date]), ISBLANK (Contratos[Line applies to this date])))
)

pero cuando se aplica la fórmula para calcular el FTE promedio:

FTE: = CALCULAR (
AVERAGEX (SUMMARIZE (‘Calendario’, ‘Calendario'[Date], «TAB1», ‘Contratos'[NofD]* ‘Contratos'[sFTE]),[TAB1]),
FILTRO (VALORES (Contratos[Line applies as of this date]), Contratos[Line applies as of this date]<= MAX ('Calendario'[Date])),
FILTRO (VALORES (Contratos[Line applies to this date]), O (Contratos[Line applies to this date]> = MIN (‘Calendario'[Date]), ISBLANK (Contratos[Line applies to this date])))
)

y PAX promedio:

PAZ: = CALCULAR (
AVERAGEX (SUMMARIZE (‘Calendario’, ‘Calendario'[Date], «TAB2», ‘Contratos'[NofD]* ‘Contratos'[sPAX]),[TAB2]),
FILTRO (VALORES (Contratos[Line applies as of this date]), Contratos[Line applies as of this date]<= MAX ('Calendario'[Date])),
FILTRO (VALORES (Contratos[Line applies to this date]), O (Contratos[Line applies to this date]> = MIN (‘Calendario'[Date]), ISBLANK (Contratos[Line applies to this date])))
)

donde ‘Contratos'[NofD]:

NofD: = CALCULAR (
COUNTROWS (‘Calendario’),
FILTRO (VALORES (Contratos[Line applies as of this date]), Contratos[Line applies as of this date]<= MAX ('Calendario'[Date])),
FILTRO (VALORES (Contratos[Line applies to this date]), O (Contratos[Line applies to this date]> = MIN (‘Calendario'[Date]), ISBLANK (Contratos[Line applies to this date])))
)

mi modelo se ralentizó …

Una parte de los datos en los que estoy trabajando se puede encontrar a continuación:

Tenga en cuenta que puede suceder que para un empleado FTE pueda cambiar durante el año varias veces e incluso un mes (es por eso que necesito el promedio porque la suma me da un resultado incorrecto cuando uso el horario …).

Número personal

La línea se aplica a partir de esta fecha

La línea se aplica a esta fecha

Equivalente a tiempo completo

2139

01/04/2020

30/09/2020

1,00

1302

01/07/2019

1,00

1302

09/07/2020

0,00

1736

29/10/2018

08/11/2019

0,40

1386

01/07/2019

31/03/2020

1,00

1386

01/04/2020

31/05/2020

0,83

1386

01/06/2020

30/06/2020

0,52

1386

01/07/2020

31/03/2021

0,50

1386

01/04/2021

1,00

1331

02/08/2017

24/03/2020

1,00

1331

25/03/2020

31/08/2020

0,00

1331

09/01/2020

30/09/2020

0,60

1331

10/01/2020

26/10/2020

0,51

1331

27/10/2020

1,00

2132

03/09/2020

31/03/2020

1,00

2052

17/01/2020

15/03/2020

1,00

2052

16/03/2020

18/05/2020

0,40

1546

15/02/2019

31/03/2020

1,00

1546

01/04/2020

31/05/2020

0,00

1546

01/06/2020

30/06/2020

0,13

1546

01/07/2020

31/03/2021

0,40

1546

01/04/2021

1,00

1979

11/03/2019

24/03/2020

1,00

1979

25/03/2020

31/08/2020

0,00

1979

09/01/2020

30/09/2020

0,60

1979

10/01/2020

26/10/2020

0,51

1979

27/10/2020

1,00

Tal vez alguien de U podría ayudarme a eliminar esta fórmula de desaceleración y ayudarme a obtener datos al final de cada período (fin de mes, fin de año, etc.).

¡Gracias de antemano!

BR | BMR

BMR_MR

Gracias daxer-todopoderoso por el consejo, pero probablemente cuando pudiera hacer esto correctamente no plantearía esta pregunta aquí … Por supuesto, haré todo lo posible para obtener la dirección correcta, pero por ahora otra propuesta de solución más que bienvenida. 🙂

BR | BMR

Stachu

En respuesta a BMR_MR

¿Existe alguna unión activa entre ‘Contratos’ y ‘Calendario’? La sintaxis que publicó es para medidas calculadas, no para columnas, ¿correcto?
¿Obtienes el mismo resultado para [FTE] con la sintaxis a continuación? ¿Es mejor el rendimiento?

FTE2 =
CALCULATE (
    AVERAGEX ( VALUES ( 'Calendar'[Date] ), [NofD] * [sFTE] ),
    FILTER (
        ALLSELECTED (
            'Contracts'[Line applies as of this date],
            'Contracts'[Line applies to this date]
        ),
        Contracts[Line applies as of this date] <= MAX ( 'Calendar'[Date] )
            && (
                Contracts[Line applies to this date] >= MIN ( 'Calendar'[Date] )
                    || ISBLANK ( Contracts[Line applies to this date] )
            )
    )
)

BMR_MR

En respuesta a Stachu

¡Hola Stachu!

Gracias por echar un vistazo y tratar de ayudarme con mi fórmula. 🙂

Con respecto a su pregunta, sí, tuve relaciones inactivas entre la columna de fechas (la línea se aplica a esta fecha, la línea se aplica a esta fecha) y mi sintaxis relacionada con las medidas calculadas.

Ahora su sintaxis está funcionando en PowerBI, pero no tengo idea de por qué en PowerPivot la fórmula devuelve un error en el área siguiente:

TODOS SELECCIONADOS (

‘Contratos'[Line applies as of this date],

‘Contratos'[Line applies to this date]

),

Para mí, todavía es necesario usar Excel como una hoja de cálculo en la comunicación con RR.HH., así que espero que también pueda ayudarme con este problema.

Stachu

En respuesta a BMR_MR

¿Qué error devuelve? ¿Podría deberse, por ejemplo, a nombres de columna no coherentes, por ejemplo, espacio adicional en alguna parte?

BMR_MR

En respuesta a Stachu

En Power BI no hay ningún error de sintaxis:

SyntaxErrorPBI.png

pero en PowerPivot

SyntaxError.png

¿Alguna idea?

daxer-todopoderoso

Un buen consejo: nunca, nunca, debe usar SUMMARIZE para hacer algo más que obtener la combinación distinta de filas. Es demasiado para hablar y no tengo el tiempo ni el espacio aquí para ampliar este tema tan importante. Si vas a www.sqlbi.com, encontrarás un artículo de Aberto Ferrari y Marco Russo que explica detalladamente por qué es una MUY, MUY MALA IDEA. Esta es una de las causas de su problema, pero supongo que no es la única. Pero al menos sabes por dónde empezar …

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *