Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Spawebin
Frequent Visitor

Promedio Movil por horas (Moving average per hour)

Que tal amigos, como estan?

Neceito de su ayuda.

 

Quiero sacar el promedio movil de una columna en funcion de un periodo de tiempo (horas).

En la siguiente imagen muestro los resultados que deseo obtener en la columna de color naranja, el promedio lo saque considerando 3 horas.

 

Spawebin_0-1652119039372.png

 

 

Podrian ayudarme, actualmente tengo este codigo (muy lento por cierto, se puede optimizar?) pero cuando sustituyo el 3 por el 0, hay filas que sigue haciendo promedio con el anterior.

 

Saludos, gracias por leer mi consulta!

🙃

 

M_DIST =
VAR currDate =
MAX ( T_BD[DATE] )
RETURN
CALCULATE (
AVERAGE ( T_BD[Dist] ),
FILTER (
ALLSELECTED ( T_BD ),
T_BD[DATE] <= currDate
&& DATEDIFF ( T_BD[DATE], currDate, HOUR ) <= 3
)
)
 
 
---------------------------
 
DATEIDDISTAverage
31/03/2022 13:00S-10035.37 
31/03/2022 14:00S-10035.14 
31/03/2022 15:00S-10034.71 
31/03/2022 16:00S-10034.2634.87
31/03/2022 17:00S-10033.9034.50
31/03/2022 18:00S-10033.7234.15
31/03/2022 19:00S-10033.6633.89
31/03/2022 20:00S-10033.6733.74
31/03/2022 21:00S-10033.8033.71
31/03/2022 22:00S-10033.8933.76
31/03/2022 23:00S-10034.0533.85
01/04/2022 00:00S-10034.1733.98
01/04/2022 01:00S-10033.4333.89
01/04/2022 02:00S-10034.5234.04
31/03/2022 13:00S-10035.0934.30
31/03/2022 14:00S-10035.9434.75
31/03/2022 15:00S-10036.9735.63
31/03/2022 16:00S-10038.0936.52
31/03/2022 17:00S-10038.7637.44
31/03/2022 18:00S-10039.3538.29
 
1 ACCEPTED SOLUTION
Spawebin
Frequent Visitor

Puedo tener datos de un ID por minuto, hora etc. El anterior es un ejemplo simplificado.

 

Generalmente, siempre estan ordenados los datos, sin embargo, en ocasiones junto base de datos y no quedan ordenados.

El anterior codigo me promediaba todo lo que seleccionaba en un segmentador, al final pude encontrar una solución, que es la siguiente:

 

-----------------------------------------------------------------------------------------------------------------

M_DIST =
VAR currDate =
MAX (T_BD[DATE])
RETURN
CALCULATE (
PROMEDIO (T_BD[Dist]),
FILTER (
TODO SELECCIONADO (T_BD),
T_BD[DATE] <= currDate
&& DATEDIFF (T_BD[DATE], currDate, HOUR) < = 3
&& T_BD[ID] = MIN ( T_BD[ID] )
)
)

 

----------------------------------------------------------------------------------------------

 

Saludos!

View solution in original post

2 REPLIES 2
Spawebin
Frequent Visitor

Puedo tener datos de un ID por minuto, hora etc. El anterior es un ejemplo simplificado.

 

Generalmente, siempre estan ordenados los datos, sin embargo, en ocasiones junto base de datos y no quedan ordenados.

El anterior codigo me promediaba todo lo que seleccionaba en un segmentador, al final pude encontrar una solución, que es la siguiente:

 

-----------------------------------------------------------------------------------------------------------------

M_DIST =
VAR currDate =
MAX (T_BD[DATE])
RETURN
CALCULATE (
PROMEDIO (T_BD[Dist]),
FILTER (
TODO SELECCIONADO (T_BD),
T_BD[DATE] <= currDate
&& DATEDIFF (T_BD[DATE], currDate, HOUR) < = 3
&& T_BD[ID] = MIN ( T_BD[ID] )
)
)

 

----------------------------------------------------------------------------------------------

 

Saludos!

lbendlin
Super User
Super User

Any particular reason why your sample data is repeating?

 

If your data come already presorted and is always one hour apart then you could add a straight Power Query index.  You can also convert your date column into a numeric column and then subtract 1/8th .

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.