emrc1
No pude encontrar nada sobre redondear los intervalos de tiempo a la X más cercana.
Esto es necesario para agregar datos de tiempo.
MROUND solo redondea al múltiplo especificado más cercano (así que también redondea hacia arriba).
p.ej:
REDONDO( 00:07:00, 15) = 0
ROUND( 00:08:00, 15) = 15
Realmente queremos que cualquier momento entre 00:00:00 y 00:14:59 se redondee a 00:00:00, cualquier momento entre 00:15:00 y 00:29:59 se redondee a 00:15:00 , etc
jthomson
¿Agrupar los datos en una nueva columna usando intervalos de 15 minutos no funcionaría para lo que necesita hacer?
Anónimo
Para redondear hacia abajo a los 15 minutos, 30 minutos, 1 hora, etc. más cercanos.
=PISO([Time],»0:15″)
=PISO([Time],»0:30″)
=PISO([Time],»1:00″)
Para redondear, use TECHO(). Ambos wtrabajar con cualquier valor de Fecha/Hora. Obviamente, funcionan en un sentido más convencional, como piso/techo con un número al 10, 100, 50 más cercano, lo que sea…
=PISO(323,100) será 300
=TECHO(59204,10) será 59210
trinitykala
Todavía puede usar la función MROUND().
=ROUND( [Time]»0:15″ ) — esto se redondeará hacia arriba/abajo a 15 min.
Solo recuerda que Mround no reconocerá tu columna con el tiempo. Entonces, si ve un número decimal devuelto por MROUND(), no entre en pánico 🙂 simplemente cambie el tipo de datos a Tiempo en su nueva columna.
pauledmonds
En respuesta a trinitykala
Esta es la fórmula que funciona:
ColRndTime = MROUND(Consulta1[ColTime],tiempo(0,15,0))
Donde: Tipo de dato = Hora
Y: Formato = HH:mm
ColTime = Consulta1[READ_DATE]
Donde: Tipo de dato = Hora
Y: Formato = HH:mm
READ_DATE = Fecha y hora de los datos de origen
Donde: Tipo de dato = Fecha / Hora
Y: Formato = (G)
SteveCampbell
No estoy seguro de si estás hablando de una hora del día o de una medida de tiempo. El tiempo se almacena como un decimal entre 0 y 1, por lo que cada 15 minutos es igual a (1/24/60)*15, que es lo mismo que 1/96.
Por lo tanto:
PISO(VALOR([Time Val]), 1/96)
emrc1
En respuesta a SteveCampbell
@SteveCampbell En este caso, estaba tratando de hacer una tabla de ‘calendario’ para la hora del día.
No sabía exactamente cómo se almacenaba el tiempo antes. Eso también podría explicar por qué he tenido problemas con el relleno de arrastre en Excel.
SteveCampbell
En respuesta a emrc1
Si se usa para la hora del día, PISO(VALOR([Time Val]), 1/96) funcionará si configura la hora y selecciona el formato correcto. si es una medida de tiempo, clasificarlo como tiempo será difícil después de pasar las 24 horas. Aquí sería mucho mejor simplemente almacenar como un valor (como segundos).
Curiosamente, la fecha / hora es solo un número, siendo 0 las 12:00:00 am del 30/12/1899.
Cada día es un valor de 1, y el tiempo es solo el decimal de cuánto estamos a lo largo del día. El 27/11/17 a las 10:00:00 es 43066.4166666entonces 43066 días después del 30/12/1899, y .416666 a través del día actual
emrc1
En respuesta a SteveCampbell
Interesante forma de hacerlo. Sin embargo, creo que bins es la solución más simple en Power BI. Guardé la fecha como una columna separada para mis datos, por lo que solo puedo agrupar los datos por hora y filtrar por fechas por separado.
emrc1
Voy a intentar responder a mi propia pregunta aquí…
FLOOR parece funcionar para esto (inicialmente asumí que funcionaría como ROUND y trabajaría en la cantidad de dígitos):
TIME( HOUR( Time[Time] ), FLOOR( Time[Time], 5 ), 0 )
Esto se redondeará al nivel de 5 minutos.
Creo que esto funcionará con 1, 2, 3, 4, 5, 10, 20, 15 o 30. No creo que funcione con intervalos impares como 7 o 45 porque se restablecerá en la próxima hora. Para 45, obtendrías 0 para todo entre 00:00:00 y 00:44:59 y 45 para todo entre 00:45:00 y 00:59:59.
Otra alternativa es usar SWITCH( TRUE(), […]
por ejemplo, para intervalos de 5 minutos:
5 min = TIME( HOUR( Time[Time] ), SWITCH( TRUE(), MINUTE( Time[Time] ) >= 55, 55, MINUTE( Time[Time] ) >= 50, 50, MINUTE( Time[Time] ) >= 45, 45, MINUTE( Time[Time] ) >= 40, 40, MINUTE( Time[Time] ) >= 35, 35, MINUTE( Time[Time] ) >= 30, 30, MINUTE( Time[Time] ) >= 25, 25, MINUTE( Time[Time] ) >= 20, 20, MINUTE( Time[Time] ) >= 15, 15, MINUTE( Time[Time] ) >= 10, 10, MINUTE( Time[Time] ) >= 5, 5, MINUTE( Time[Time] ) >= 0, 0 ), 0 )
¿Alguien tiene algún consejo aquí o es esto correcto?
Loriano
En respuesta a emrc1
Funciona de manera brillante y la declaración de cambio se puede usar en columnas calculadas de consulta directa, que es lo que necesitaba. Gracias.
danlibbesson
En respuesta a emrc1
Buena solución: esto funcionó mejor para mí, pero creo que te falta la función MINUTE() en la solución superior.
jthomson
¿Agrupar los datos en una nueva columna usando intervalos de 15 minutos no funcionaría para lo que necesita hacer?
emrc1
En respuesta a jthomson
@jthomson No he encontrado que los contenedores hayan funcionado para mis datos antes, pero creo que en este caso, podría tener razón. Tenía la sensación de que habría una forma más sencilla.