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.
Hola.
Estoy tratando de crear una columna calculada en una tabla para dar un sí/no (o 1/0) para mostrar si la diferencia entre 2 campos de fecha / hora es < = 24 horas.
Necesito excluir los fines de semana y los días festivos: tengo una tabla de fecha diminuta con los fines de semana y los días festivos marcados.
Una jornada laboral es de 24 horas.
Tengo problemas para escribir el dax para hacer esto debido al elemento time.
Este es un ejemplo de campos y salidas:
¿Alguna idea sobre cómo calcular la columna 'En escala de tiempo'? Muchas gracias
Hola @Florie
¡Buena pregunta! Calcular una columna "dentro de la escala de tiempo" que excluya los fines de semana y los días festivos (mediante una tabla de fecha dim) es un desafío clásico de DAX. Este es un método paso a paso:
Tendrás que sumar las horas de los días laborables válidos entre [Inicio] y [Finalización], ignorando los fines de semana y los días festivos.
A continuación, se muestra un ejemplo de columna calculada de DAX para la tabla (llamémosla [En escala temporal]):
In Timescale = VAR StartDateTime = [Start] VAR EndDateTime = [Completion] VAR DatesBetween = FILTER ( 'DimDate', 'DimDate'[Date] >= DATEVALUE(StartDateTime) && 'DimDate'[Date] <= DATEVALUE(EndDateTime) && 'DimDate'[IsWeekend] = FALSE() && 'DimDate'[IsBankHoliday] = FALSE() ) VAR WorkingHours = SUMX ( DatesBetween, VAR ThisDate = 'DimDate'[Date] VAR StartHour = IF ( ThisDate = DATEVALUE(StartDateTime), HOUR(StartDateTime) + MINUTE(StartDateTime)/60, 0 ) VAR EndHour = IF ( ThisDate = DATEVALUE(EndDateTime), HOUR(EndDateTime) + MINUTE(EndDateTime)/60, 24 ) RETURN EndHour - StartHour ) RETURN IF(WorkingHours <= 24, "Yes (or 1)", "No (or 0)")
¡Hágame saber si necesita el DAX para un caso extremo específico o si tiene una definición de horario de trabajo diferente!
@Florie Cree una columna calculada para determinar si la diferencia entre el inicio y la finalización se encuentra dentro de las 24 horas, excluyendo fines de semana y días festivos.
Dax
InTimescale =
VAR StartDateTime = 'TuMesa'[Inicio]
VAR CompletionDateTime = 'TuMesa'[Finalización]
VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
VAR CompletionDate = DATE(YEAR(CompletionDateTime), MONTH(CompletionDateTime), DAY(CompletionDateTime))
Días laborables VAR =
CALCULAR(
COUNTROWS('DimDate'),
'DimDate'[Fecha] >= FechaDeInicio,
'DimDate'[Fecha] <= FechaDeFinalización,
'DimDate'[IsWorkingDay] = TRUE()
)
Horas totales del VAR =
SI(
Días laborables = 1,
DATEDIFF(StartDateTime, CompletionDateTime, HOUR),
(Días laborables - 2) * 24 +
(24 - HOUR(StartDateTime) - MINUTE(StartDateTime) / 60) +
HOUR(CompletionDateTime) + MINUTE(CompletionDateTime) / 60
)
DEVOLUCIÓN
IF(TotalHours <= 24, 1, 0)