Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Calculate an average time based on different users

Hello,

 

So I'm fairly new to Power BI and I'm still trying to learn the ropes. What I'm trying to do is basically calculate a user's average time overall. I'll make a a mock table as an example.

 

User PickingPickIDAverage Pick Time Orderline 
USER10000100:00:35
USER10000200:01:42
USER10000300:00:43
USER20000400:05:27
USER20000500:00:37
USER30000600:03:13
USER30000700:00:33
USER40000800:00:57
USER40000900:01:01

 

I know that the average times per user in order are 00:01:00, 00:03:02, 00:01:48, and 00:00:59. I want to add a fourth column with these values per user.

 

I know how I could do that in Excel, which is where this data is being taken from, but I'd like to learn how to do it in Power BI. Thank you!

 

Edit: I created a measure to trying to do this based off a similar thread like mine but it didn't work. 

 

Measure = AVERAGEX(SUMMARIZE(Table1, Table1[USER_PICKING], Table1[AVERAGE_PICK_TIME_ORDERLINE]), Table1[AVERAGE_PICK_TIME_ORDERLINE])

 

The error I got was  

"Couldn't load the data for this visual

 

MdxScript(Model) (4, 117) Calculation error in measure 'Table1'[Measure]: The function AVERAGEX cannot work with value of type String."

 

  • fhill's avatar
    fhill
    6 years ago
    Create 3 new COLUMNS (not Measures) - Or you can try to Push these all together using VARS, but I like to keep it simple.  You'll need to do Modeling-> Formatting to get things back into Date/Time HH:MM:SS formats, but this is the general idea...  And make sure everything is set to 'Don't Summarize'.
    FOrrest
     
    Total Seconds = (HOUR(Table1[Pick Time]) * 3600) + (MINUTE(Table1[Pick Time]) * 60) + (SECOND(Table1[Pick Time]))
    Average Column = CALCULATE(AVERAGE(Table1[Total Seconds]), ALLEXCEPT(Table1, Table1[User Picking]))
    Average Time = TIME(0,0,Table1[Average Column])

     

     

6 Replies

    • Anonymous's avatar
      Anonymous
      Not applicable

      So I was able to convert the AVERAGE_PICK_TIME_ORDERLINE times to seconds, but when I enter the measure in my OP the new column is just a repeat of the previous column.

       

      I essentially want the fourth column

       

      User PickingPickIDAverage Pick Time Orderline Average Pick Time User
      USER10000100:00:3500:01:00
      USER10000200:01:4200:01:00
      USER10000300:00:4300:01:00
      USER20000400:05:2700:03:02
      USER20000500:00:3700:03:02
      USER30000600:03:1300:01:48
      USER30000700:00:3300:01:48
      USER40000800:00:5700:00:59
      USER40000900:01:0100:00:59

       

       

       

      • fhill's avatar
        fhill
        Resident Rockstar
        Create 3 new COLUMNS (not Measures) - Or you can try to Push these all together using VARS, but I like to keep it simple.  You'll need to do Modeling-> Formatting to get things back into Date/Time HH:MM:SS formats, but this is the general idea...  And make sure everything is set to 'Don't Summarize'.
        FOrrest
         
        Total Seconds = (HOUR(Table1[Pick Time]) * 3600) + (MINUTE(Table1[Pick Time]) * 60) + (SECOND(Table1[Pick Time]))
        Average Column = CALCULATE(AVERAGE(Table1[Total Seconds]), ALLEXCEPT(Table1, Table1[User Picking]))
        Average Time = TIME(0,0,Table1[Average Column])

         

         

  • Power Bi works very similar to excel, if in excel your cell format is Text you will not be able to make calculations of any type with values

    Before making the formulas make sure that your times are in "Time, Date, or Datetime"

    Otherwise convert the column type or pass the function to convert them before calculating with the data