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
PMF999
Frequent Visitor

Calculations by Rank

Capture.PNGI

In my Var column I'd like to calculate the variance between the current rank and the next rank down/lower rank (for each Type). Eg: for Type B (on row 7) rank 4 is 120 less rank 3 (on row 6) is 105 thefore variance = 15.  Many thanks in advance!

3 ACCEPTED SOLUTIONS
ChrisMendoza
Resident Rockstar
Resident Rockstar

@PMF999 -

 

Would the below work for you?

 

Var = 
VAR nextRank = Table1[Rank] + 1
VAR differnce = 
    CALCULATE(
        VALUES(Table1[Value]),
        FILTER(ALLEXCEPT(Table1,Table1[Type]),Table1[Rank] = nextRank)
    ) - Table1[Value]
RETURN
    IF(
        differnce >= 0,
        differnce,
        BLANK()
    )





Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



View solution in original post

@PMF999 -

 

The entire code block is your calculated column. Documentation on using VAR can be found @ https://docs.microsoft.com/en-us/dax/var-dax and a nice example article can be found @ https://www.sqlbi.com/articles/variables-in-dax/

 

 






Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



View solution in original post

@PMF999 -

 

You're missing closing ' ) ' in a couple places.

 

Copy -> Paste my code and replace 'Table1' with 'Primary_ID' or try formatting multi-line by clicking ALT + ENTER so you can see your opening and closing Parentheses ' ( ' & ' )' respectively a little easier.

 

 






Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



View solution in original post

10 REPLIES 10
ChrisMendoza
Resident Rockstar
Resident Rockstar

@PMF999 -

 

Would the below work for you?

 

Var = 
VAR nextRank = Table1[Rank] + 1
VAR differnce = 
    CALCULATE(
        VALUES(Table1[Value]),
        FILTER(ALLEXCEPT(Table1,Table1[Type]),Table1[Rank] = nextRank)
    ) - Table1[Value]
RETURN
    IF(
        differnce >= 0,
        differnce,
        BLANK()
    )





Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



Hi Chris,

I'm afraid I don't really understand your reply (my fault).

Which bit, exactly, do I need to type into my formula bar?

Many thanks

Peter

 

PMF999
Frequent Visitor

In particular I don'r understand how to feed this expression into the formula;

 

Var = 
VAR nextRank = Table1[Rank] + 1

Thanks 

@PMF999 -

 

The entire code block is your calculated column. Documentation on using VAR can be found @ https://docs.microsoft.com/en-us/dax/var-dax and a nice example article can be found @ https://www.sqlbi.com/articles/variables-in-dax/

 

 






Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



Many thanks Chris.

 

I'll give it a go!

PMF999
Frequent Visitor

It almost works Chris.

 

However this is the result I'd really like;

 

Primary IDTypeDateValueRankVar
Type A20170101Type A01/01/1710010
Type A20170201Type A01/02/17110210
Type A20170301Type A01/03/17125315
Type B20180101Type B01/01/189010
Type B20180201Type B01/02/189525
Type B20180301Type B01/03/18105310
Type B20180401Type B01/04/18120415

 

Where the Var for Rank 1 is alway 0 as there is no lower rank. The var for rank 2 onwards is the value of rank 2 less rank 1, value of rank 3 less rank 2 etc.

 

Sorry to be a nusiance!

@PMF999 -

 

Var = 
VAR prevRank = Table1[Rank] - 1
VAR differnce = 
    Table1[Value] -
    CALCULATE(
        VALUES(Table1[Value]),
        FILTER(ALLEXCEPT(Table1,Table1[Type]),Table1[Rank] = prevRank )
    )
RETURN
    IF(
        differnce < Table1[Value],
        differnce,
        0
    )

Capture.PNG

 






Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



Here's my code...

 

= VAR prevRank = Primary_ID[Rank] - 1 VAR differnce = Primary_ID[Value] - CALCULATE( VALUES(Primary_ID[Value], FILTER(ALLEXCEPT(Primary_ID,Primary_ID[Type],Primary_ID[Rank] = prevRank ) ) RETURN IF( differnce < Primary_ID[Value], differnce, 0 )

 

and here's the error I get...

 

Capture.PNG

@PMF999 -

 

You're missing closing ' ) ' in a couple places.

 

Copy -> Paste my code and replace 'Table1' with 'Primary_ID' or try formatting multi-line by clicking ALT + ENTER so you can see your opening and closing Parentheses ' ( ' & ' )' respectively a little easier.

 

 






Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

Proud to be a Super User!



Perfect! Many thanks for perservering with me Chris.

Much appreciated.

I learnt a lot.

Thanks again.

Peter

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.