Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
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:
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
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.
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]
Si el anterior no es lo que desea, por favor explique más detalles de su resultado esperado con algunos ejemplos. Gracias.
Saludos
Rena