Forum Discussion

nckpedersen's avatar
nckpedersen
Icon for Helper I rankHelper I
4 years ago
Solved

Measure Request: Value is within TopN, True or False

I have two tables, Contacts and Accounts. I want to apply a filter on Contacts according to whether or not the Account it belongs to is within the Top 2 Accounts by Sales. So given the table below, I'd want to only see Bob and Alice.

 

I realize I can use the filters option but need the formula for a more complex situation

 

Contacts

NameAccount
JohnABC Corp
MichaelXYZ Inc
BobTest, LLC
AliceExample Inc

 

Accounts

SalesAccount
$100ABC Corp
$1000XYZ Inc
$5000Test, LLC
$10,000Example Inc
  • Anonymous's avatar
    Anonymous
    4 years ago

    Hi nckpedersen ,

    I created a sample pbix file(see attachment) for you, please check whether that is what you want. 

    1. Create two measures as below to judge if the account is Top 2 accounts

    Rank = RANKX ( ALLSELECTED ( 'Accounts' ), CALCULATE ( SUM ( 'Accounts'[Sales] ) ) )
    Flag = 
    VAR _tab =
        CALCULATETABLE (
            VALUES ( 'Accounts'[Account] ),
            FILTER ( 'Accounts', [Rank] <= 2 )
        )
    RETURN
        IF ( SELECTEDVALUE ( 'Contacts'[Account] ) IN _tab, 1, 0 )

    2. Create a table visual and apply the visual-level filter with the condition(Flag is 1)

    If the above one can't help you get the desired result, please provide some sample data in your tables (exclude sensitive data) with Text format and your expected result with backend logic and special examples. It is better if you can share a simplified pbix file. You can refer the following link to upload the file to the community. Thank you.

    How to upload PBI in Community

    Best Regards

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi nckpedersen ,

    I created a sample pbix file(see attachment) for you, please check whether that is what you want. 

    1. Create two measures as below to judge if the account is Top 2 accounts

    Rank = RANKX ( ALLSELECTED ( 'Accounts' ), CALCULATE ( SUM ( 'Accounts'[Sales] ) ) )
    Flag = 
    VAR _tab =
        CALCULATETABLE (
            VALUES ( 'Accounts'[Account] ),
            FILTER ( 'Accounts', [Rank] <= 2 )
        )
    RETURN
        IF ( SELECTEDVALUE ( 'Contacts'[Account] ) IN _tab, 1, 0 )

    2. Create a table visual and apply the visual-level filter with the condition(Flag is 1)

    If the above one can't help you get the desired result, please provide some sample data in your tables (exclude sensitive data) with Text format and your expected result with backend logic and special examples. It is better if you can share a simplified pbix file. You can refer the following link to upload the file to the community. Thank you.

    How to upload PBI in Community

    Best Regards

    • nckpedersen's avatar
      nckpedersen
      Icon for Helper I rankHelper I

      This is wonderful, thank you! I feel like you just opened an entirely new area of Power BI for me!

  • nckpedersen , My advice would be create TOP2 measure and use in Visual

     

    TOPN: https://youtu.be/QIVEFp-QiOk

     

    Otherwise first create a rank in Accounts (All new columns below )

     

    Rank = ranxk(Accounts, [Sales],,desc, dense)

     

    Then copy that to table Contacts

     

    Rank contact = Maxx(filter(Accounts, Accounts[Account] = Contacts [Account] && Accounts[Rank]<=2), Accounts[Rank])