Forum Discussion

PranjalSaxena's avatar
PranjalSaxena
New Member
2 years ago
Solved

Summarize on one column but select another column

I have a table as follows

StateConstituencyPartyVotes
UPNoidaSP1000
UPNoidaBJP500
UPNoidaINC300
GujaratDholeraSP300
GujaratDholeraBJP2000
GujaratDholeraINC400


I need to create a calculatedtable which should show the 'Party' with maximum 'Votes' in each 'State' and 'Constituency' combination.

If I use Summarize() I am only able to get a table like

StateConstituencyMax Votes
UPNoida1000
GujaratDholera2000


What I need is like this:

StateConstituencyParty
UPNoidaSP
GujaratDholeraBJP


I even tried GroupBy() function using CurrentGroup() using the below formula:
WinnerParty =

GROUPBY(VotingResults, VotingResults[State], VotingResults[PC Name], "WinnerParty", SELECTCOLUMNS(FILTER(CurrentGroup(), VotingResults[Total Votes] = MAXX(CURRENTGROUP(), [Total Votes])),[Party]))

Here, I am trying to FILTER() the row in currentgroup() having maximum votes and then SelectColumn() the 'Party' Column.
But I am getting error:
Function 'GROUPBY' scalar expressions have to be Aggregation functions over CurrentGroup(). The expression of each Aggregation has to be either a constant or directly reference the columns in CurrentGroup().




  • Hi PranjalSaxena - Can you try the below calculated table in your model.

     

    WinnerParty =
    ADDCOLUMNS(
    SUMMARIZE(
    VotingResults,
    VotingResults[State],
    VotingResults[Constituency],
    "Max Votes", MAX(VotingResults[Votes])
    ),
    "Party",
    SELECTCOLUMNS(
    TOPN(
    1,
    FILTER(
    VotingResults,
    VotingResults[State] = EARLIER(VotingResults[State]) &&
    VotingResults[Constituency] = EARLIER(VotingResults[Constituency]) &&
    VotingResults[Votes] = EARLIER([Max Votes])
    ),
    VotingResults[Votes],
    DESC
    ),
    "Party", VotingResults[Party]
    )
    )

     

     

    It works please check.

     

    Did I answer your question? Mark my post as a solution! This will help others on the forum!
    Appreciate your Kudos!!

2 Replies

  • Hi PranjalSaxena - Can you try the below calculated table in your model.

     

    WinnerParty =
    ADDCOLUMNS(
    SUMMARIZE(
    VotingResults,
    VotingResults[State],
    VotingResults[Constituency],
    "Max Votes", MAX(VotingResults[Votes])
    ),
    "Party",
    SELECTCOLUMNS(
    TOPN(
    1,
    FILTER(
    VotingResults,
    VotingResults[State] = EARLIER(VotingResults[State]) &&
    VotingResults[Constituency] = EARLIER(VotingResults[Constituency]) &&
    VotingResults[Votes] = EARLIER([Max Votes])
    ),
    VotingResults[Votes],
    DESC
    ),
    "Party", VotingResults[Party]
    )
    )

     

     

    It works please check.

     

    Did I answer your question? Mark my post as a solution! This will help others on the forum!
    Appreciate your Kudos!!

  • Anonymous's avatar
    Anonymous
    Not applicable

    though one solution is accepted, i am giving one other solution,

    first count the constituency numbers,

    Then use the topn