Medida de tiempo promedio

Un usuario Pregunto ✅

Will_740

Hola,

Estoy buscando una medida para calcular el tiempo promedio que mis clientes se quedan dormidos por la noche. He usado la siguiente fórmula DAX para la hora de despertar, que es satisfactoria:

Promedio de tiempo de inicio del sueño = FORMATO (CALCULAR (PROMEDIO (FacTBLsleepwatch[Sleep Onset Time (hh:mm)])), «HH:mm»)

Esto funciona para la hora de despertarse, ya que se despiertan el mismo día entre las 6 a. m. y las 9 a. m., por lo que un promedio en algún lugar entre estos puntos es correcto.

Sin embargo, no funciona para el inicio del sueño por la noche. Si se quedan dormidos a las 11 p. m. en una noche y a las 3 a. m. la siguiente, la medida anterior parece establecer estos tiempos en orden cronológico y arrojaría un valor promedio de inicio del sueño de 1 p. m. (en la tarde), en lugar de 1 a. m. la mañana, que es el valor que yo querría).

¿Alguien sabe una forma de permitir que DAX identifique cuándo el valor a calcular pasa del reloj de 24 horas al día siguiente? Los datos se guardan en la consulta como fecha/hora en la columna única para la hora de inicio del sueño.

Cualquier ayuda sería apreciada.

Gracias

mahoneypat

Este fue un desafío interesante, y la expresión a continuación debería obtener el resultado deseado. Toma cada fila (hora de inicio) y la convierte en minutos. Si es < 12 PM, le agrega 24 hrs (en minutos), antes de tomar el promedio. Una vez que se calcula el promedio, resta las 24 horas (si es >medianoche) y vuelve a convertir los minutos en horas y minutos.

Promedio Correcto =
VAR tiempo medio en minutos =
PROMEDIOX (
Dormir,
Tiempo VAR en minutos =
HORA (Sueño[Onset] ) * 60
+ MINUTO ( Dormir[Onset] )
VAR adjminutos =
SI ( tiempo en minutos < 720, tiempo en minutos + 1440, tiempo en minutos )
REGRESO
adjminutos
)
Corrección de tiempo medio de VAR =
SI (tiempo medio en minutos < 1440, tiempo medio en minutos, tiempo medio en minutos - 1440)
VAR mediohora =
COCIENTE (corrección de tiempo medio, 60)
VAR promedio =
MOD (corrección de tiempo medio, 60)
REGRESO
FORMATO (HORA (avghour, avgmin, 0), «h:mm am/pm» )

Si esto funciona para usted, por favor márquelo como la solución. También se agradecen los elogios. Por favor, hágamelo saber si no.

Saludos,

Palmadita

mahoneypat

Este fue un desafío interesante, y la expresión a continuación debería obtener el resultado deseado. Toma cada fila (hora de inicio) y la convierte en minutos. Si es < 12 PM, le agrega 24 hrs (en minutos), antes de tomar el promedio. Una vez que se calcula el promedio, resta las 24 horas (si es >medianoche) y vuelve a convertir los minutos en horas y minutos.

Promedio Correcto =
VAR tiempo medio en minutos =
PROMEDIOX (
Dormir,
Tiempo VAR en minutos =
HORA (Sueño[Onset] ) * 60
+ MINUTO ( Dormir[Onset] )
VAR adjminutos =
SI ( tiempo en minutos < 720, tiempo en minutos + 1440, tiempo en minutos )
REGRESO
adjminutos
)
Corrección de tiempo medio de VAR =
SI (tiempo medio en minutos < 1440, tiempo medio en minutos, tiempo medio en minutos - 1440)
VAR mediohora =
COCIENTE (corrección de tiempo medio, 60)
VAR promedio =
MOD (corrección de tiempo medio, 60)
REGRESO
FORMATO (HORA (avghour, avgmin, 0), «h:mm am/pm» )

Si esto funciona para usted, por favor márquelo como la solución. También se agradecen los elogios. Por favor, hágamelo saber si no.

Saludos,

Palmadita

AbrirMike13

En respuesta a mahoneypat

hola pat

Esto es genial y la pregunta ¿Hay alguna manera de agregar segundos a esta medida?

Will_740

En respuesta a mahoneypat

Hola Pat,
Gracias por tomarse el tiempo para pensar en esto, ¡funcionó muy bien!
Atentamente,
Será

lbendlin

Cambie su modelo de datos para que el inicio del sueño sea capturado por un campo de fecha y hora, no solo por un campo de hora. O tenga una lógica que verifique si el valor de la fecha es el mismo para sus marcas de tiempo.

Deja un comentario

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