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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Anonymous
Not applicable

Cálculo de FTE - eventos en curso

Intento calcular el FTE total en un período de notificación determinado, como un mes.


FTE (días trabajados en el período de notificación)/(días disponibles en el período de notificación)*disponibilidad
Usamos días de la semana para calcular el FTE.


Los días trabajados están implícitos en un episodio de contrato. El contrato de empleado en su mayoría tiene varios episodios debido al cambio de posición / salario, etc. Todos los episodios tienen una fecha de inicio. La mayoría de las veces los episodios tienen una fecha de finalización fija, pero algunos tienen una fecha de finalización abierta. Para evitar escenarios adicionales, he reemplazado estas fechas de finalización abierta por una fecha alta (31-12-2022). Los episodios pueden comenzar o finalizar en una fecha determinada. La disponibilidad puede variar con los episodios.


Al final, la visión general debería tener un aspecto similar al siguiente:

overview.png

He leído el blog de Gerhard y he intentado adaptar la solución
https://blog.gbrueckl.at/2014/12/events-in-progress-for-time-periods-in-dax/

Pero en mi caso tengo diferentes cálculos para el FTE necesario por escenario.

Trabajar con episodios y reportar períodos resulta en 6 escenarios, lo que hace que el cálculo del total de FTE sea complejo. A continuación puede encontrar una visión general de los escenarios

episodes.png

events.PNG

Aquí hay un enlace a una carpeta con el archivo power-bi y el .cvs con los datos, para ver las medidas y los datos disponibles.

Intentó pero falló:

Esto funciona si se selecciona 1 persona, pero si se seleccionan varias personas, ya no funcionará debido al uso de min/max en EpisodeStartDate/EpisodeEndDate

días laborables todos los escenarios ?

VAR StartReportingPeriod ? MIN('10 Calendar'[Date])

VAR EndReportingPeriod á MAX('10 Calendar'[Date])

VAR StartEpisode á MIN('70 EmploymentHistory'[EpisodeStartDate])

VAR EndEpisode á MAX('70 EmploymentHistory'[EpisodeEndDate])

Resultado de VAR1 ?

SWITCH(

TRUE(),

StartEpisode<-StartReportingPeriod && EndEpisode<EndReportingPeriod && EndEpisode>StartReportingPeriod, (DATEDIFF(StartReportingPeriod,EndEpisode,DAY)+1), (DATEDIFF(StartReportingPeriod,EndEpisode,DAY)+1), (DATEDIFF(StartReportingPeriod,EndEpisode,DAY)+1), (DATEDIFF(StartReportingPeriod,EndEpisode,DAY)+1),

StartEpisode<-StartReportingPeriod && EndReportingPeriod<-EndEpisode, (DATEDIFF(StartReportingPeriod,EndReportingPeriod,DAY)+1),

StartEpisode>StartReportingPeriod && EndEpisode<- EndReportingPeriod, (DATEDIFF(StartEpisode,EndEpisode,DAY)+1),

StartEpisode>StartReportingPeriod && EndEpisode>EndReportingPeriod && StartEpisode<-EndReportingPeriod, (DATEDIFF(StartEpisode,EndReportingPeriod,DAY)+1))

devolución

Resultado1

Esto funciona si se selecciona 1 persona, pero si se seleccionan varias personas, ya no funcionará debido al uso de min/max en EpisodeStartDate/EpisodeEndDate

Otro intento:

Miré los eventos en curso en línea y encontré un montón de soluciones. Puede calcular por escenario, pero me encontré con el problema que solo puedo usar medidas para mi cálculo y no para columnas. Y eso no es calcular la cantidad de días.

escenario 2 ?

CALCULATE(

SUM('70 EmploymentHistory'[Disponibilidad]),

FILTER(VALUES('70 EmploymentHistory'[EpisodeStartDate]),'70 EmploymentHistory'[EpisodeStartDate]<MIN('10 Calendar'[Date])),

FILTER(VALUES('70 EmploymentHistory'[EpisodeEndDate]),'70 EmploymentHistory'[EpisodeEndDate]>'MAX('10 Calendar'[Fecha]))

)

Sería genial si alguien pudiera ayudarme a resolver este problema.

1 REPLY 1
Anonymous
Not applicable

Hola @HarmaW ,

Puede crear una columna calculada como se muestra a continuación en la tabla [70 EmploymentHistory]:

Workdays for per person =
VAR StartReportingPeriod =
    MIN ( '10 Calendar'[Date] )
VAR EndReportingPeriod =
    MAX ( '10 Calendar'[Date] )
VAR _countofwkdays =
    CALCULATE (
        COUNTROWS ( '10 Calendar' ),
        FILTER ( '10 Calendar', '10 Calendar'[WeekdayWeekend] = "Weekday" ),
        DATESBETWEEN (
            '10 Calendar'[Date],
            '70 EmploymentHistory'[EpisodeStartDate],
            '70 EmploymentHistory'[EpisodeEndDate]
        )
    )
RETURN
    DIVIDE (
        _countofwkdays,
        DATEDIFF ( StartReportingPeriod, EndReportingPeriod, DAY ) + 1
    ) * '70 EmploymentHistory'[Availability]

Calculating FTE - events in progress.JPG

Si el anterior no es lo que desea, por favor explique más detalles de su resultado esperado con algunos ejemplos. Gracias.

Saludos

Rena

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors