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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Anonymous
Not applicable

How To Create Measures Over Hours

Hello ,

 

I have read through many of the other messages, but I can't seem to get this one to work.

I have sensor data (Please, find it posted) and want to create two measures over 24 hours:

1-) The first measure is a rolling a verage of sensor values over 24 hours 

2-) The second measure is a count of the sensor values 24 hours rolling average which exceeded 4. That is, I want to count only those sensor values of the newly created measure that exceeded 4. If there is no exceedance, it should return 0. 

 

Thank you 


Date /Time          Sensor Values 

01.01.2021 00:000,38
01.01.2021 01:000,30
01.01.2021 02:000,30
01.01.2021 03:000,31
01.01.2021 04:000,31
01.01.2021 05:000,32
01.01.2021 06:000,32
01.01.2021 07:000,31
01.01.2021 08:000,31
01.01.2021 09:000,31
01.01.2021 10:000,30
01.01.2021 11:000,31
01.01.2021 12:000,31
01.01.2021 13:000,32
01.01.2021 14:000,33
01.01.2021 15:000,33
01.01.2021 16:000,34
01.01.2021 17:000,33
01.01.2021 18:000,33
01.01.2021 19:000,34
01.01.2021 20:000,35
01.01.2021 21:000,35
01.01.2021 22:000,34
01.01.2021 23:000,34
02.01.2021 00:000,34
02.01.2021 01:000,33
02.01.2021 02:000,33
02.01.2021 03:000,32
02.01.2021 04:000,32
02.01.2021 05:000,32
02.01.2021 06:000,33
02.01.2021 07:000,34
02.01.2021 08:000,34
02.01.2021 09:000,34
02.01.2021 10:000,35
02.01.2021 11:000,35
02.01.2021 12:000,35
02.01.2021 13:000,35
02.01.2021 14:000,35
02.01.2021 15:000,37
02.01.2021 16:000,37
02.01.2021 17:000,37
02.01.2021 18:000,37
02.01.2021 19:000,35
02.01.2021 20:000,36
02.01.2021 21:000,36
02.01.2021 22:000,36
02.01.2021 23:000,35
03.01.2021 00:000,34
03.01.2021 01:000,35
03.01.2021 02:000,35
03.01.2021 03:000,35
03.01.2021 04:000,33
03.01.2021 05:000,32
03.01.2021 06:000,33
03.01.2021 07:000,33
03.01.2021 08:000,31
03.01.2021 09:000,30
03.01.2021 10:000,29
03.01.2021 11:000,30
03.01.2021 12:000,29
03.01.2021 13:000,29
03.01.2021 14:000,29
03.01.2021 15:000,30
03.01.2021 16:000,29
03.01.2021 17:000,30
03.01.2021 18:000,29
03.01.2021 19:000,29
03.01.2021 20:000,29
03.01.2021 21:000,29
03.01.2021 22:000,28
03.01.2021 23:000,28
04.01.2021 00:000,28
04.01.2021 01:000,27
04.01.2021 02:000,26
04.01.2021 03:000,27
04.01.2021 04:000,27
04.01.2021 05:000,29
04.01.2021 06:000,30
04.01.2021 07:000,31
04.01.2021 08:000,32
04.01.2021 09:000,32
04.01.2021 10:000,32
04.01.2021 11:000,33
04.01.2021 12:000,32
04.01.2021 13:000,33
04.01.2021 14:000,43
04.01.2021 15:000,34
04.01.2021 16:000,34
04.01.2021 17:000,32
04.01.2021 18:000,31
04.01.2021 19:000,31
04.01.2021 20:000,28
04.01.2021 21:000,29
04.01.2021 22:000,29
04.01.2021 23:000,29
05.01.2021 00:000,51
05.01.2021 01:000,28
05.01.2021 02:000,29
05.01.2021 03:000,29
05.01.2021 04:000,30
05.01.2021 05:000,30
05.01.2021 06:000,31
05.01.2021 07:000,31
05.01.2021 08:000,32
05.01.2021 09:000,32
05.01.2021 10:000,31
05.01.2021 11:000,31
05.01.2021 12:000,31
05.01.2021 13:000,30
05.01.2021 14:000,30
05.01.2021 15:000,33
05.01.2021 16:000,32
05.01.2021 17:000,33
05.01.2021 18:000,33
05.01.2021 19:000,33
05.01.2021 20:000,32
05.01.2021 21:000,32
05.01.2021 22:000,32
05.01.2021 23:000,30
1 ACCEPTED SOLUTION

Hi @Anonymous 
Here is your file updated based on 34hr averages only at end of each day https://www.dropbox.com/t/XvUdc0zpksXlL9t8
Your report looks like this
Untitle.png
Once you start having values that generate averages above 4 then "Blank" card will start showing numbers.
Please let me know if you are now fully satisfied. Thank you.

View solution in original post

9 REPLIES 9
tamerj1
Super User
Super User

Hi Engineer @Anonymous 
Here is the sample file with solution https://www.dropbox.com/t/Wuw3IVn7ofWHqEr5
Dealing with time in dax is not optimum therefore I recommend that you start with adding an index column to your table. It will cost you one click in power query
1.png
The code for the two measures is:

 

 

 

Moving Average 24hrs = 
VAR CurrentIndex =
    MIN (Data[Index] )
VAR ShiftedIndex =
    CurrentIndex - 24
VAR MovingAverage =
    CALCULATE (
        AVERAGE ( Data[Sensor Values] ),
        REMOVEFILTERS ( Data[Date/Time] ),
        Data[Index] >= ShiftedIndex,
        Data[Index] <= CurrentIndex
    )
VAR Result =
    IF ( 
        CurrentIndex >= 24,
        MovingAverage
    )
RETURN
    Result
Above 34 = 
VAR FilterTable =
    FILTER ( 
        VALUES ( Data[Index] ),
        [Moving Average 24hrs] > 34
    )
VAR Result =
    COUNTROWS ( FilterTable )
RETURN
    Result

 

 

 

And this is how thw report looks like
2.png
If this answers your query, I kindly request you to mark this reply as acceptable solution. Have agreat day!

Anonymous
Not applicable

Hello @tamerj1 ,

Thank you very much! The first measure is fine.However, and before marking it as an acceptable solution, the second measure needs to count only specific rows; those values that match 24 moving averages. Please see the photo for illustration. Thank you very much and looking forward to your reply!

 

 

Untitled.png 

Hi @Anonymous 
Refer to updated file https://www.dropbox.com/t/6BJyRDp0745ewhPL
You need to create a new date (date only) column:

 

Date = DATE ( YEAR ( Data[Date/Time] ), MONTH ( Data[Date/Time] ), DAY ( Data[Date/Time] ) )

 

The report looks like this
Untitled.png
Please let me know if this what you need.

Anonymous
Not applicable

Hello @tamerj1 

Thank you for your effort. I will try to explain it more clearly. Now, we already have the 24 moving averages. that is, we have hours ranging from 00 to 23. The 24 moving average occurs at 23 hour. So, I want to count only those values that are associated with 23 hours and check if they exceeded 4 or not. If they don't exceed 4, then the count returns 0. I hope it makes sense now. Thank you @tamerj1 !

Hello @Anonymous ,
The moving average calculates the the average of the last 24 readings. This happens at the each point starting from the 23rd point onwards as per the table. I think we both agree on this.
Also lets clear the missing decimal point in the readings. The 34 in my report is 3.4 in yours. Having said that, we should also agree that as per the given sample of data the maximum moving average is 3.5
The measure "Above 34" counts the number of moving averages that exceed 34 (3.4) within 24 hours (1day)

  • In Jan. 1st we don't have any moving average as the calculatioon starts after 24 hours.
  • In Jan. 2nd we have 24 moving averages 8 of them exceed 3.4
  • In Jan. 3rd we have 24 moving averages 12 of them exceed 3.4
  • After that none of moving averages exceed 3.4 therfore the count is zero (Blank)

What is missing here please help me clarify it up.

There was an error in the "Above 34" measure. I edited and corrected in the previous comments. Download link remains the same.

Hi @Anonymous 
Here is your file updated based on 34hr averages only at end of each day https://www.dropbox.com/t/XvUdc0zpksXlL9t8
Your report looks like this
Untitle.png
Once you start having values that generate averages above 4 then "Blank" card will start showing numbers.
Please let me know if you are now fully satisfied. Thank you.

TOK
Helper II
Helper II

Hi @Anonymous,

I guess the easiest way is to use the filter pane on the right side. If this is the only information you want to report, I would probably use page filter instead of visual filter.

TOK_0-1644776748824.png

 

Liked this post? More Content on:
https://www.youtube.com/channel/UC2lAgCgfyLCHsRv0h-ETBWQ

Anonymous
Not applicable

@TOK  Thank you for your suggestion. I need these measures in DAX because I want to use them in paginated reports!

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.