Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
HariBPujari
Frequent Visitor

RANKX with multiple Dimension tables

I have three tables as below:

1) DimGroup

S N  GroupCode  GroupName  
1G1Red
2G2Green
3G3Blue
4G4Yellow
5G5Black

 

2) DimUser

S NUserCode  UserName  GroupCode  
1U1HarryG1
2U2SarryG2
3U3ParryG3
4U4BarryG1
5U5GarryG5
6U6DarryG4
7U7TarryG1
8U8ZarryG2
9U9HurryG3
10U10KurryG1
11U11BurryG5
12U12XurryG4
13U13IurryG1
14U14LurryG2
15U15MurrtG3
16U16NurryG1
17U17OurryG5
18U18PurryG4
19U19QurryG4
20U20RurryG1
21U21SurryG2

 

3) FactTransaction

S NTrnCode  UserCode  Amount  
1T1U55636
2T2U63661
3T3U610955
4T4U14243
5T5U34069
6T6U27593
7T7U41468
8T8U15359
9T9U5715
10T10U811616
11T11U92468
12T12U10895
13T13U118790
14T14U122767
15T15U145649
16T16U156739
17T17U1612020
18T18U178494
19T19U184015
20T20U1808
21T21U27768
22T22U31996
23T23U412103
24T24U54825

 

Relationships:

1) DimGroup[GroupCode] 1->* DimUser[GroupCode]

2) DimUser[UserCode] 1->* FactTransaction[UserCode]

HariBPujari_0-1675610095460.png

Here, I am trying to create a measure RANKX by FactTransaction[Amount] and put it in the matrix visual with GroupName from DimGroup and UserName from DimUser. But the matrix shows all UserName for each GroupName. But if I put GroupCode from DimUser, it works as expected but i want GroupName from DimGroup.

My Measure:

RANKX(
    ALL(DimUser[UserName]),
    SUMX(RELATEDTABLE(FactTransaction),FactTransaction[Amount])
    ,,DESC,Dense
)

 

HariBPujari_1-1675610600328.png

 

Correct one by need GroupName from DimGroup instead GroupCode from DimUser

HariBPujari_2-1675610658278.png

Help please.....

1 ACCEPTED SOLUTION

@HariBPujari Try this:

 

Rank X by User Transaction 2 = 
    VAR __Group = MAX('DimGroup'[GroupCode])
    VAR __User = MAX('DimUser'[UserName])
    VAR __Table = FILTER(SUMMARIZE(ALLEXCEPT('DimUser',DimGroup[GroupName]),[GroupCode],[UserName],"__Value",SUMX(RELATEDTABLE('FactTransaction'),[Amount])),[__Value] <> BLANK())
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "__Rank", RANKX(FILTER(__Table,[GroupCode] = EARLIER([GroupCode])),[__Value],,DESC)
        )
    VAR __Result = MAXX(FILTER(__Table1,[GroupCode] = __Group && [UserName] = __User),[__Rank])
RETURN
    __Result

or this:

Rank X by User Transaction 2 = 
    VAR __Group = MAX('DimGroup'[GroupCode])
    VAR __User = MAX('DimUser'[UserName])
    VAR __Table = SUMMARIZE(ALLEXCEPT('DimUser',DimGroup[GroupName]),[GroupCode],[UserName],"__Value",SUMX(RELATEDTABLE('FactTransaction'),[Amount]))
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "__Rank", RANKX(FILTER(__Table,[GroupCode] = EARLIER([GroupCode])),[__Value],,DESC)
        )
    VAR __Result = MAXX(FILTER(__Table1,[GroupCode] = __Group && [UserName] = __User),[__Rank])
RETURN
    __Result

 


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

6 REPLIES 6
Greg_Deckler
Super User
Super User

@HariBPujari What is your RANKX measure formula?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

My measures
 
Rank X by User Transaction =
RANKX(
    ALL(DimUser[UserName]),
    SUMX(RELATEDTABLE(FactTransaction),FactTransaction[Amount])
    ,,DESC,Dense
)

@HariBPujari Try this:

 

Rank X by User Transaction 2 = 
    VAR __Group = MAX('DimGroup'[GroupCode])
    VAR __User = MAX('DimUser'[UserName])
    VAR __Table = FILTER(SUMMARIZE(ALLEXCEPT('DimUser',DimGroup[GroupName]),[GroupCode],[UserName],"__Value",SUMX(RELATEDTABLE('FactTransaction'),[Amount])),[__Value] <> BLANK())
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "__Rank", RANKX(FILTER(__Table,[GroupCode] = EARLIER([GroupCode])),[__Value],,DESC)
        )
    VAR __Result = MAXX(FILTER(__Table1,[GroupCode] = __Group && [UserName] = __User),[__Rank])
RETURN
    __Result

or this:

Rank X by User Transaction 2 = 
    VAR __Group = MAX('DimGroup'[GroupCode])
    VAR __User = MAX('DimUser'[UserName])
    VAR __Table = SUMMARIZE(ALLEXCEPT('DimUser',DimGroup[GroupName]),[GroupCode],[UserName],"__Value",SUMX(RELATEDTABLE('FactTransaction'),[Amount]))
    VAR __Table1 = 
        ADDCOLUMNS(
            __Table,
            "__Rank", RANKX(FILTER(__Table,[GroupCode] = EARLIER([GroupCode])),[__Value],,DESC)
        )
    VAR __Result = MAXX(FILTER(__Table1,[GroupCode] = __Group && [UserName] = __User),[__Rank])
RETURN
    __Result

 


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Wow,

It worked, thanks.

I thought it will be easy as short and sweet. But there is lots of DAX code.

Of coz it could be concisely coded. Keep this question open to see if there would be any solution more elegant.

CNENFRNL_0-1675641211578.png


Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension!

DAX is simple, but NOT EASY!

@HariBPujari Well, not saying it is the only solution, but it is at least one solution to the problem.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors