Reply
Syndicate_Admin
Administrator
Administrator
Syndicated - Inbound

Calcular la diferencia horaria entre dos fechas (excepto el fin de semana)

Source Community: Power BI | Source Author Name: BigKev

Hola a todos

¿Alguien sabe cómo puedo calcular en dax la diferencia de horas entre dos fechas / columnas de tiempo (excluyendo las fechas de fin de semana)?

He creado una bandera (T/F) en mi calendario maestro para marcar si una fecha es un fin de semana o no.

Por favor, encuentre debajo de mis datos.

Gracias a todos.

Salud

Kev

Fecha de inicioFecha de finalización
17/03/2021 17:3018/03/2021 16:45
18/03/2021 17:0020/03/2021 16:03
19/03/2021 17:0022/03/2021 16:00
17/03/2021 10:0018/03/2021 16:00
18/03/2021 17:0020/03/2021 16:00
19/03/2021 17:3322/03/2021 16:50
17/03/2021 8:0017/03/2021 8:00
18/03/2021 15:0020/03/2021 16:00
19/03/2021 17:0022/03/2021 16:55
17/03/2021 17:0018/03/2021 17:00
18/03/2021 17:0020/03/2021 16:00
19/03/2021 17:0022/03/2021 21:00
1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: v-luwang-msft
Syndicated - Inbound

No @BigKev,

Prueba en frío los siguientes pasos:

Paso 1: crear tabla de fechas:

Fechas = CALENDAR("2021/1/1","2021/12/31")

v-luwang-msft_0-1616403503959.png

Paso 2:crear nueva base de tabla en fechas:

fecha1 =
GENERAR (
CALENDARAUTO (),
VAR aaaa =
AÑO ( [Fecha] )
VAR mmmm =
MES ( [Fecha] )
devolución
ROW (
"Año", aaaa,
"Mes", FORMATO ( [Fecha], "mmmm" ),
"Month2", mmmm,
"Week1", FORMATO ( [Fecha], "dddd" ) ,
"Week2", DÍA LABORABLE ( [Fecha] ),
"Día de la semana", NO ENTRE SEMANA ( [Fecha] ) EN { 1, 7 }
)
)

v-luwang-msft_1-1616403503967.png

Paso 3, Crear nueva columna en la tabla principal de la base de datos:

difforder1 =
DÍA VAR1 =
CALCULAR (
COUNTROWS ( 'fecha1'),
DATESBETWEEN (fecha 1[Fecha], Abc[Fecha de inicio], Abc[Fecha de finalización]),
fecha1[día de la semana] <> VERDADERO,
TODOS ( Abc )
)
Día VAR2 =
IF ( día1 = EN BLANCO (), 0, día1 )
Día VAR3 =
DATEDIFF ( Abc[Fecha de inicio], Abc[Fecha de finalización], HORA ) - día2 * 24
RETURN
día3

v-luwang-msft_3-1616403669961.png

¡Ojalá sea útil para ti!

Mejor consideración

Lucien Wang

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: v-luwang-msft
Syndicated - Inbound

No @BigKev,

Prueba en frío los siguientes pasos:

Paso 1: crear tabla de fechas:

Fechas = CALENDAR("2021/1/1","2021/12/31")

v-luwang-msft_0-1616403503959.png

Paso 2:crear nueva base de tabla en fechas:

fecha1 =
GENERAR (
CALENDARAUTO (),
VAR aaaa =
AÑO ( [Fecha] )
VAR mmmm =
MES ( [Fecha] )
devolución
ROW (
"Año", aaaa,
"Mes", FORMATO ( [Fecha], "mmmm" ),
"Month2", mmmm,
"Week1", FORMATO ( [Fecha], "dddd" ) ,
"Week2", DÍA LABORABLE ( [Fecha] ),
"Día de la semana", NO ENTRE SEMANA ( [Fecha] ) EN { 1, 7 }
)
)

v-luwang-msft_1-1616403503967.png

Paso 3, Crear nueva columna en la tabla principal de la base de datos:

difforder1 =
DÍA VAR1 =
CALCULAR (
COUNTROWS ( 'fecha1'),
DATESBETWEEN (fecha 1[Fecha], Abc[Fecha de inicio], Abc[Fecha de finalización]),
fecha1[día de la semana] <> VERDADERO,
TODOS ( Abc )
)
Día VAR2 =
IF ( día1 = EN BLANCO (), 0, día1 )
Día VAR3 =
DATEDIFF ( Abc[Fecha de inicio], Abc[Fecha de finalización], HORA ) - día2 * 24
RETURN
día3

v-luwang-msft_3-1616403669961.png

¡Ojalá sea útil para ti!

Mejor consideración

Lucien Wang

Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: BigKev
Syndicated - Inbound

No @amitchandak,

Gracias por la pronta respuesta.

No necesito considerar el horario comercial. Sólo necesito calcular el número de horas entre dos fechas (según mis datos anteriores), excluyendo la fecha del fin de semana.

Por ejemplo,

Fecha de inicio Fecha de finalización No. de horas

18/03/2021 8:00 19/03/2021 10:00 26

18/03/2021 8:00 22/03/2021 17:00 55

Como puede ver en la fila uno, las dos fechas son fechas de trabajo. Por lo tanto, la diferencia de una hora entre las dos fechas es de 26 horas.

En la segunda fila, no consideramos 20/03 y 21/03 porque es Sábado y Sol. Por lo tanto, el hoyuelo de la hora es de 55 horas.

¿Sabes cómo puedo calcular estas horas diff?

Salud

Kev

Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: amitchandak
Syndicated - Inbound

@BigKev, Si necesita horario comercial

https://exceleratorbi.com.au/calculating-business-hours-using-dax/

o probar una medida como

Horas de trabajo =
var _dt1 = fecha (año(Tabla[Fecha de inicio]), mes(Tabla[Fecha de inicio]), día (Tabla[Fecha de inicio]))
var _dt2 = fecha(año[Fecha de finalización]), mes(Tabla[Fecha de finalización]), día(Tabla[Fecha de finalización]))
devolución
if(weekday(_dt1,2) <6 , datediff(Table[Fecha de inicio],_dt1+1,hours),0) + COUNTROWS(FILTER(ADDCOLUMNS(CALENDAR(_dt1+1,hours),0) + COUNTROWS(FILTER(ADDCOLUMNS(CALENDAR(_dt1+1,_dt2-1),"WorkDay", if(WEEKDAY([Date],2) <6,1,0)),[WorkDay] =1))*24
+ if( not(weekday(_dt2,2) en {6,7}) , datediff(dt_2 -1 , Tabla[Fecha de finalización], horas),0)

avatar user

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

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

Feb2025 NL Carousel

Fabric Community Update - February 2025

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

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)