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 |
v-yuezhe-msft
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
Anónimo
En respuesta a Drors
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 tiempo
nikhilmanohar
En respuesta a Drors
Como tengo espacios en blanco en algunas de esas columnas de tiempo de entrada / salida, da el siguiente error.
‘
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)
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)
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.
v-yuezhe-msft
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.
v-yuezhe-msft
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
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.
v-yuezhe-msft
En respuesta a nikhilmanohar
@nikhilmanohar,
Verifique los detalles en el archivo PBIX a continuación.
https://1drv.ms/u/s!AhsotbnGu1Nokzv42kpib9n_bF3j
Saludos,
lidia