Cómo calcular la duración en minutos entre dos columnas

Un usuario Pregunto ✅

nikhilmanohar

Hola,

Tengo dos columnas de un informe de asistencia que muestran tanto el tiempo de entrada como el tiempo de salida. Me gustaría saber cómo encontrar la duración total (tiempo de salida – tiempo de entrada). Una simple resta me dio el resultado, sin embargo, no puedo obtener la suma de la duración total. Estoy aprendiendo Power BI / DAX y cualquier ayuda será muy apreciada.

A tiempo Fuera de tiempo Duración
8:30:00 a.m. 15:03:00 en HH:mm

En respuesta a nikhilmanohar

@nikhilmanohar,

Verifique los detalles en el archivo PBIX a continuación.
https://1drv.ms/u/s!AhsotbnGu1Nokzv42kpib9n_bF3j

Saludos,
lidia

Drors

Primero, cambie el tipo de las columnas de tiempo de entrada y salida al formato de hora, cambiará sus datos al formato de 24 horas.

después de crear una nueva columna calculada y usar este formulario dax

Duración =
var IntimeMin = HORA (Tabla1[In Time])*60+MINUTO(Tabla1[In Time])+SEGUNDO(Tabla1[In Time])/60
var OutTimeMin = HORA (Tabla1[Out Time])*60+MINUTO(Tabla1[Out Time])+SEGUNDO(Tabla1[Out Time])/60 retorno

OutTimeMin-IntimeMin

1 PNG

Anónimo

En respuesta a Drors

CapturaTi.PNG

Duración =
var IntimeMin = HORA(tg_task_allocation[InTime])*60+MINUTO(tg_task_asignation[InTime])+SEGUNDO(tg_tarea_asignación[InTime])/60
var OutTimeMin = HORA (tg_task_allocation[OutTime])*60+MINUTO(tg_task_asignation[OutTime])+SEGUNDO(tg_tarea_asignación[OutTime])/60 retorno
OutTimeMin-IntimeMin
He escrito este DAX para los siguientes datos, pero en mi caso me muestra un error. Por favor, ayúdenme.

nikhilmanohar

En respuesta a Drors

@Drors Gracias por la ayuda. Sin embargo, la salida está en número decimal. Perdón por preguntar, ¿cómo puedo convertir eso a formato de hora?

Drors

En respuesta a nikhilmanohar

agregue otra columna con esa función dax:

Formato de tiempo de duración = INT (Tabla 1[Duartion]/60)&»:» & MOD(Tabla1[Duartion],60)

y luego en la pestaña de modelado cambie el tipo de datos a tiempo1 PNG

nikhilmanohar

En respuesta a Drors

Como tengo espacios en blanco en algunas de esas columnas de tiempo de entrada / salida, da el siguiente error.

error.PNG

error2.PNG

Drors

En respuesta a nikhilmanohar

Comparta un ejemplo más preciso de sus datos y les arreglaré la fórmula,

puede agregar declaraciones «if» y «isblank» al dax para evitar esos errores.

nikhilmanohar

En respuesta a Drors

Esto es lo que es. Es posible que los usuarios hayan ingresado en ambos días o que se hayan perdido el ingreso o la salida de un día en particular.

A tiempo Fuera de tiempo Duración
7:59:00 16:00:00 8:01
Blanco 16:00:00 :
7:59:00 Blanco :

Por favor, hágamelo saber si necesita cualquier información adicional.

Drors

En respuesta a nikhilmanohar

OK, entonces cambio la duración a 0 si uno de los «Tiempo de entrada» o «Tiempo de salida» está en blanco, puedes cambiarlo a lo que quieras.

cambiar la fórmula Duatrion a:

Duración =
var IntimeMin = HORA (Tabla1[In Time])*60+MINUTO(Tabla1[In Time])+SEGUNDO(Tabla1[In Time])/60
var OutTimeMin = HORA (Tabla1[Out Time])*60+MINUTO(Tabla1[Out Time])+SEGUNDO(Tabla1[Out Time])/60 retorno
SI(O(ESTÁ EN BLANCO(Tabla1[In Time]),ESBLANCO(Tabla1[Out Time])),0,OutTimeMin-IntimeMin)

1 PNG

Espero que esto sea lo que quieres … actualízame si no

nikhilmanohar

En respuesta a Drors

¡Muchos gracias! Parece que hay un valor negativo debido al cual no se puede convertir en tiempo. Además, ¿cambiar el formato de hora me permitirá resumir por «Suma»? Quisiera saber la duración total de cada empleado en una semana/mes/año.

nikhilmanohar

En respuesta a nikhilmanohar

@Drors Ahora todo es perfecto, excepto que no puedo sumar los valores en el campo de duración. ¿Me puedes ayudar, por favor?

Drors

En respuesta a nikhilmanohar

Creo que será mucho más fácil para usted trabajar con la duración en un formato flotante para cálculos como suma o promedio.

el formato de tiempo muestra el tiempo, por ejemplo, si la duración total de uno de sus empleados es más de 24 horas, ¿cómo desea verlo en formato de tiempo?

en formato flotante lo verás en minutos, o simplemente divídelo por 60 para verlo en horas (para días divídelo por 60*24).

nikhilmanohar

En respuesta a Drors

mmm. Me gustaría tener la duración total que han trabajado. Como 100 horas en un mes.

Encontré algo de otra publicación aquí. Pero totaliza el resultado en días, horas, minutos y segundos. Me encantaría ver esto en formato de horas, minutos. Crees que lo pueda conseguir en ese formato?

VAR TotalSeconds=SUMX(‘VER_INFORME_DIARIO’,HORA(‘VER_INFORME_DIARIO'[Duration])*3600+MINUTO(‘VER_INFORME_DIARIO'[Duration])*60+SEGUNDO(‘VER_INFORME_DIARIO'[Duration]))
VAR Días =TRUNC(TotalSeconds/3600/24)
VAR Hors = TRUNC((TotalSeconds-Days*3600*24)/3600)
VAR Minutos =TRUNC(MOD(TotalSeconds,3600)/60)
VAR Segundos = MOD(TotalSeconds,60)
return SI(DÍAS=0,»»,»SI(DÍAS>1,DÍAS&»días»,Días&»día»))&SI(Hor<10,"0"&Hor,Hor)&":"&IF(Mins<10, "0"&Mins,Mins)&":"&IF(Secs<10,"0"&Secs,Secs)

Drors

En respuesta a nikhilmanohar

No estoy seguro de si eso es lo que quieres, pero puedes hacer un formato de tiempo «falso» y ponerlo en la visualización de la tarjeta:

crear nueva medida:

Formato de tiempo de duración total =
var duraciontotal = SUMA(Tabla1[Duartion]) regreso
INT(duracióntotal/60) &»:»& MOD(duracióntotal,60)

1 PNG

nikhilmanohar

En respuesta a Drors

hmm..eso no ayuda 😞

en este punto, no sé si es posible mostrar el total de horas.

Gracias @Drors por toda su ayuda. Realmente lo aprecio.

En respuesta a nikhilmanohar

@nikhilmanohar,

El DAX de Drors funciona en mi tabla. ¿Podría compartir todos los datos de su tabla y publicar el resultado esperado aquí?

Saludos,
lidia

nikhilmanohar

En respuesta a v-yuezhe-msft

La fórmula de @v-yuezhe-msft Dror funciona. Pero necesito una columna calculada en lugar de una medida para que funcione en contextos de filtro. Mis datos ahora se ven así. La tabla tiene Fecha (2017 – 2018), Número de empleado, Hora de entrada, Hora de salida y Duración. Necesito averiguar la duración total de un empleado en formato HH:mm.

Por ejemplo, el total de horas trabajadas del Empleado 1 para el mes de abril de 2018 es de 100,20 horas.

Duración.JPG

En respuesta a nikhilmanohar

@nikhilmanohar,

Cree las siguientes columnas en su tabla.

Year = YEAR(Table[Date])
Month = MONTH(Table[Date])
Duartion = 
var IntimeMin = HOUR(Table[In Time])*60+MINUTE(Table[In Time])+SECOND(Table[In Time])/60
var OutTimeMin = HOUR(Table[Out Time])*60+MINUTE(Table[Out Time])+SECOND(Table[Out Time])/60 return
IF(OR(ISBLANK(Table[In Time]),ISBLANK(Table[Out Time])),0,OutTimeMin-IntimeMin)
hour = CALCULATE(SUM(Table[Duartion]),ALLSELECTED(Table[Month]),ALLSELECTED(Table[Employee]),ALLSELECTED(Table[Year]))/3600

1 PNG

Saludos,
lidia

nikhilmanohar

En respuesta a v-yuezhe-msft

@v-yuezhe-msft Gracias. ¿Qué tipo de datos se utilizará aquí? No se puede usar el tiempo ya que no puede resumir los valores.

En respuesta a nikhilmanohar

@nikhilmanohar,

Verifique los detalles en el archivo PBIX a continuación.
https://1drv.ms/u/s!AhsotbnGu1Nokzv42kpib9n_bF3j

Saludos,
lidia

Deja un comentario

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