Forum Discussion

kingchad5's avatar
kingchad5
Helper I
9 years ago
Solved

Matrix Table Total Row not calculating totals

I have a meaure to cacluate available hours for someones schedule.  if the person is scheduled more than 7 hrs i want to show it as 0 and if they are under 8 hrs I want to show what is available.  I am using a Matrix table to show the data and when I show the row total it is showing 0.00 as the total rather than the total available hrs.  The formula is below.  

 

AvailableHrsbyDay = IF([Scheduled Hrs]>7,0,9-[Scheduled Hrs])

[Scheduled Hrs] is a measure that totals just fine.

 

 

Any help would be greatly appreciated.

 

Chad

 

  • Anonymous's avatar
    Anonymous
    9 years ago

    kingchad5,

    Please change your DAX to the following:

    AvailableHrsbyDay4 = IF(COUNTROWS(VALUES(wh_resource[Name]))=1,
    IF([Scheduled Hrs]>=0 && [Scheduled Hrs] < 9,9-[Scheduled Hrs],0),
    SUMX(VALUES(wh_resource[Name]), IF([Scheduled Hrs]>=0 && [Scheduled Hrs] <9,9-[Scheduled Hrs],0)
    ))

    Regards,

11 Replies

  • dedelman_clng's avatar
    dedelman_clng
    Community Champion

    Row totals on measures do not function the same way in PBI as in Excel (summing all of the above values).  PowerBI calculates the measure in the context of the row total (no/less filters).  So [Schedule Hrs] is > 7 at that level so it calculates [Available Hrs] as 0.

     

    You will need combinations of ISFILTERED on the different row values and SUM or SUMX to get the measure to calculate correctly at the aggregate level.

     

    Something like:

    AvailableHrs :=
    IF (
        ISFILTERED ( Table[Name] ),
        IF ( [Scheduled Hrs] > 7, 0, 9 - [Scheduled Hrs] ),
        SUMX ( Table, 9 - [Scheduled Hrs] )
    )

     

    Hope this helps

    David

    • kingchad5's avatar
      kingchad5
      Helper I

      David,

      Thanks for your help.  I can only get the ISFILTERED function to return True when i select one of the slicer values.  Am i trying to get a true value?  When I get a false from the ISFILTERED the total is correct, but the values are not correct.  

       

       

      Current formula:

       

      AvailableHrsByDay2 =
      IF (
      ISFILTERED (wh_service_call[BusHrsDuration]),
      IF ( [Scheduled Hrs] >=0 && [Scheduled Hrs] <9, 9-[Scheduled Hrs],[Scheduled Hrs]-[Scheduled Hrs] ),
      SUMX(wh_service_call,9-[Scheduled Hrs])
      )

       

       

       

      • dedelman_clng's avatar
        dedelman_clng
        Community Champion

        You want to check ISFILTERED on a column used in the rows of the visual.  Your formula is checking for a filter on a duration.