Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Calculate Utilization percentage

Consider the below table. I have a slicer list of employees and a Date Range visual. I want to display the utilization percentage on a Gauge chart. 

 

Utilization Percentage in a particular duration = (Total Business Hours - No Work Hours)/Total Business Hours

Where

Total Business Hours = Work Days x 8

Work Days = All Days in the duration - Holidays

 

 

EmployeeWorkHoursDate
Person 1Task 1409-Aug-21
Person 1No Work209-Aug-21
Person 1Task 2209-Aug-21
Person 2Task1309-Aug-21
Person 2Task 2109-Aug-21
Person 2Leave409-Aug-21
Person 3No Work309-Aug-21
Person 3Task 2509-Aug-21
Person 1Holiday810-Aug-21
Person 2Holiday810-Aug-21
Person 3Holiday810-Aug-21
  • Hi Anonymous ,

     

    If you want to filter out the Holiday or Overtime part, you can modify the following formula like below:

    1 =
    VAR total_bus =
        (
            COUNTROWS ( 'Table' )
                - CALCULATE (
                    COUNTROWS ( 'Table' ),
                    FILTER ( 'Table', 'Table'[Work] = "Holiday" || 'Table[Work]' = "Overtime" )
                )
        ) * 8
    VAR no_work =
        SUMX ( FILTER ( 'Table', 'Table'[Work] = "No Work" ), 'Table'[Hours] )
    RETURN
        DIVIDE ( total_bus - no_work, total_bus )


    If the problem is still not resolved, please provide detailed error information and let me know immediately. Looking forward to your reply.


    Best Regards,
    Henry


    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

9 Replies

  • v-henryk-mstf's avatar
    v-henryk-mstf
    Community Support

    Hi Anonymous ,

     

    Based on your needs, I create the corresponding formula, refer to the following:

    1 =
    VAR total_bus =
        (
            COUNTROWS ( 'Table' )
                - CALCULATE (
                    COUNTROWS ( 'Table' ),
                    FILTER ( 'Table', 'Table'[Work] = "Holiday" )
                )
        ) * 8
    VAR no_work =
        SUMX ( FILTER ( 'Table', 'Table'[Work] = "No Work" ), 'Table'[Hours] )
    RETURN
        DIVIDE ( total_bus - no_work, total_bus )


     If there is a problem, please point out the clear error and I will answer it for you as soon as possible.


    Best Regards,
    Henry


    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • Anonymous's avatar
      Anonymous
      Not applicable

      It seems to work for now. A little bit more precision would be great.
      Now I came to think of the situation when some employees might work on weekend and the table may have entries for these weekend work which needs to be ignored.

       

      Is it possible to use the formulae (1 and 2) I annotated in the attached image?

       

       

      • v-henryk-mstf's avatar
        v-henryk-mstf
        Community Support

        Hi Anonymous ,

         

        If the formula is created correctly, adding it to the corresponding visual will work correctly.


        Best Regards,
        Henry


        If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

  • Anonymous , Do you have table with business days ?

    Or that can be distinct values of dates ?

    • Anonymous's avatar
      Anonymous
      Not applicable

      My raw data table has entries for each and every day. 

      • amitchandak's avatar
        amitchandak
        Super User

        Anonymous , Try a measure like

         


        var _bh = distinctCOUNT(Table[Employee])*distinctCOUNT(Table[Date]) *8
        var _hr = sux(filter(Table, Table[Work] <> "No Work")
        return
        calculate(divide(_bh-_hr, _bh), filter(Table, Table[Work] <> "Holiday"))