Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
8 years ago
Solved

Group, sum, and compare

Hi Everyone,

 

I'm trying to determine whether or not a user has completed their online training plan. In the table below you will see two users who have 4 courses, some online some classroom that comprises their overall training plan. In order to figure out what their online training plan, I'd need to filter the course type by "online" and also filter required by "1" because "0" indicates optional. The desired result to be able to show 2 cards: 1 that displays the # of users who have actually completed their training plan, 1 that displays the # of users who were planned to have completed their training plan.

 

With the data below, those cards would show 1 (User ZZZZ completed all of their required, online training) over 2 (the total number of users being considered. The logic I've come up with, hence the title of the post, is as follows:

 

  • Filter by "course type = online" and "required = 1"
  • Group by username
  • Sum the the completed
  • Sum the required
  • Compare completed and required
    • If these match, then the user has completed their training plan, else they have not

I feel like I've tried it all, but haven't been able to get anything to work. Can you all assist?

 

UsernameCourse TypeCompletedRequired
ZZZZClassroom01
ZZZZOnline00
ZZZZOnline11
ZZZZOnline11
XXXXOnline10
XXXXOnline11
XXXXClassroom11
XXXXOnline01
  • parry2k's avatar
    parry2k
    8 years ago

    Perfect, here are dax formulas for you:

     

    1st - add measure for total required

     

    Total Required = CALCULATE(SUM(Table2[Required]), Filter(Table2, Table2[Course Type] = "Online"))

    2nd - add measure for total completed

     

    Total Completed = CALCULATE(SUM(Table2[Completed]), FILTER(Table2, Table2[Course Type] = "Online" && Table2[Required] = 1))

     

    3rd - add measure to check if completed

     

    Is Completed = 
    var isCompleted = [Total Required] - [Total Completed]
    return if(isCompleted=0, UNICHAR(10003), UNICHAR(215))

     

    Add fields to a table visual and filter visual or page by course type and select "online"

     

     

     

    and you will get the result.

     

11 Replies

  • Hey Anonymous

     

    Is this the result you are looking for?

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      parry2k - Thanks for the response!

       

      This is exactly what I'm looking for. How did you do it?

      • parry2k's avatar
        parry2k
        Super User

        Perfect, here are dax formulas for you:

         

        1st - add measure for total required

         

        Total Required = CALCULATE(SUM(Table2[Required]), Filter(Table2, Table2[Course Type] = "Online"))

        2nd - add measure for total completed

         

        Total Completed = CALCULATE(SUM(Table2[Completed]), FILTER(Table2, Table2[Course Type] = "Online" && Table2[Required] = 1))

         

        3rd - add measure to check if completed

         

        Is Completed = 
        var isCompleted = [Total Required] - [Total Completed]
        return if(isCompleted=0, UNICHAR(10003), UNICHAR(215))

         

        Add fields to a table visual and filter visual or page by course type and select "online"

         

         

         

        and you will get the result.

         

  • Anonymous's avatar
    Anonymous
    Not applicable

    parry2k & Zubair_Muhammad

     

    I've realized that I need to create a column in order to calculate the number of users who have completed their training plan. How would I achieve the column entitled "Training Plan Completed?"?

     

    UsernameCourse TypeCompletedRequiredTraining Plan Completed?
    ZZZZClassroom011
    ZZZZOnline001
    ZZZZOnline111
    ZZZZOnline111
    XXXXOnline100
    XXXXOnline110
    XXXXClassroom110
    XXXXOnline010

     

    With the solutions you have provided I think I'm close. Would love to hear what your ideas/solutions are.

    • Zubair_Muhammad's avatar
      Zubair_Muhammad
      Community Champion

      Hi Anonymous

       

      With the same conditions you specified in the first post, I believe you can use this measure to count the number of users completed their plan. (Without the need to add a separate column)

       

      Measure =
      COUNTROWS (
          FILTER (
              SUMMARIZE (
                  FILTER (
                      TableName,
                      TableName[Course Type] = "Online"
                          && TableName[Required] = 1
                  ),
                  TableName[Username],
                  TableName[Course Type],
                  "Total Completed", SUM ( TableName[Completed] ),
                  "Total Required", SUM ( TableName[Required] )
              ),
              [Total Completed] = [Total Required]
          )
      )
      • Anonymous's avatar
        Anonymous
        Not applicable

        Zubair_Muhammad 

         

        I believe this worked! Do you know how I could retrieve the username of the users to validate whether or not the logic worked?