Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Second top value

Hi,

 

Request your help to overcome this issue

 

From my table I could easily find out the Top position value by applying the MAX function but how can i get the second top value . It works when I use TOP N function in the Filter pane but i would like to get the same via DAX

 

awaiting your guidance

 

dsmitha

 

 

 

  • Anonymous , Try these measures

    Rankx = ankx(allselected(Table[Category]), [sales],,desc,dense)

    You can use visual level filter Rank =2 (<category should be replaced with your rank column> should be in visual)

     

     

     

    or create a measure on top of that

    2nd Rank sumx(filter(values(Table[Category]), [Rank] =2), [Sales])

  • Hi,

    I am not sure how your data model looks like, but please check the below picture and the attached pbix file.

    I tried to create a sample pbix file like below.

    One of ways to check the second top value is, MAX function can be still utilized to find second top value when the first MAX value is filtered out.

     

     

    Value total: = 
    SUM( Data[Value] )

     

    Value first max: = 
    VAR _condition =
        CALCULATE ( MAX ( Data[Value] ), ALL ( Data[Category] ) ) = [Value total:]
    RETURN
        DIVIDE ( _condition, _condition ) * [Value total:]

     

    Value second max: = 
    VAR _condition =
        CALCULATE (
            MAX ( Data[Value] ),
            FILTER ( ALL ( Data[Category] ), [Value total:] <> [Value first max:] )
        ) = [Value total:]
    RETURN
        DIVIDE ( _condition, _condition ) * [Value total:]
  • Anonymous's avatar
    Anonymous
    4 years ago

    Hi Jihwan_Kim,

     

    excellent idea, this one also worked,  thanks a lot

     

5 Replies

  • Anonymous , Try these measures

    Rankx = ankx(allselected(Table[Category]), [sales],,desc,dense)

    You can use visual level filter Rank =2 (<category should be replaced with your rank column> should be in visual)

     

     

     

    or create a measure on top of that

    2nd Rank sumx(filter(values(Table[Category]), [Rank] =2), [Sales])

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi amitchandak,

       

      Thank you very much for your quick response

      that one solved my issue

       

      regards,

      dsmitha

       

  • Hi,

    I am not sure how your data model looks like, but please check the below picture and the attached pbix file.

    I tried to create a sample pbix file like below.

    One of ways to check the second top value is, MAX function can be still utilized to find second top value when the first MAX value is filtered out.

     

     

    Value total: = 
    SUM( Data[Value] )

     

    Value first max: = 
    VAR _condition =
        CALCULATE ( MAX ( Data[Value] ), ALL ( Data[Category] ) ) = [Value total:]
    RETURN
        DIVIDE ( _condition, _condition ) * [Value total:]

     

    Value second max: = 
    VAR _condition =
        CALCULATE (
            MAX ( Data[Value] ),
            FILTER ( ALL ( Data[Category] ), [Value total:] <> [Value first max:] )
        ) = [Value total:]
    RETURN
        DIVIDE ( _condition, _condition ) * [Value total:]
    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi Jihwan_Kim,

       

      excellent idea, this one also worked,  thanks a lot

       

    • Anonymous's avatar
      Anonymous
      Not applicable

      I got the visual as i wanted , thanks a lot 👍