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:
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
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.