Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
Hi everyone
I'm doing a report in which I have multiple years as columns and some categories as rows. I would like to see two variance columns at the end, first as a difference between the last year's value and previous year's value, and the second variance would should the %.
I tried creating the first measure but i'm not able to get the value for those two years. Could you please review the DAX code below and advise what I'm missing there? Obviously the filter does not work as intended, but why?
If I replace the BLANK() with MaxYear, the system shows correctly 2018
If I replace the BLANK() with PrevYea, the system shows correctly 2017
If I replace the BLANK() with MaxYearValue, the system shows incrrectly SUM of values from all years, not only the last two.
Variance $ =
VAR MaxYear = CALCULATE(MAX('Table'[Year]))
VAR PrevYear = MaxYear-1
VAR MaxYearValue = CALCULATE(SUM('Table'[Value]),FILTER('Table',[Year]=MaxYear))
VAR PreviousYearValue = COALESCE(CALCULATE(SUM('Table'[Value]),'Table'[Year] = PrevYear),0)
RETURN
IF(
ISINSCOPE('Table'[Year]) ,
MaxYearValue - PreviousYearValue,
BLANK()
)
If I add another the second measure into the matrix, both measures are displayed for each year. Why and how do I fix?
Thank you
Solved! Go to Solution.
Hi @julpol ,
Did I solve your problem? Or you can also try turning off the following two options:
Best regards,
Community Support Team_ Scott Chang
@julpol ,
First, let's create measures to calculate the values for the maximum year and the previous year.
DAX
MaxYearValue =
VAR MaxYear = CALCULATE(MAX('Table'[Year]))
RETURN CALCULATE(SUM('Table'[Value]), 'Table'[Year] = MaxYear)
DAX
PreviousYearValue =
VAR MaxYear = CALCULATE(MAX('Table'[Year]))
VAR PrevYear = MaxYear - 1
RETURN CALCULATE(SUM('Table'[Value]), 'Table'[Year] = PrevYear)
Then create a mesure for Variance
Proud to be a Super User! |
|
unfortunately, the result is the same,
1) both variance measures are blank in the matrix
2) when both are used, they are added to every column
Hi @julpol ,
There is no problem with your calculation logic. The problem is because you are putting multiple fields in the Values field of the matrix.For an matrix. multiple fields can be put in the row, which represents the hierarchy, whereas both columns and Values should have only one aggregated field.
Hope it helps!
Best regards,
Community Support Team_ Scott Chang
If this post helps then please consider Accept it as the solution to help the other members find it more quickly.
Hi @v-tianyich-msft ,
re 1) - the variance$ has probably a wrong filter as its value is $0? Please refer to first screenshot where only one variance is used in teh Values field, and the column shows $0 across all rows.
re 2) - is there a way to achieve this? To have two extra calculated columns on the right, one $ variance and one % variance.
Thank you
Hi @julpol ,
It will give the same results as the last screenshot of your initial post, I made simple samples and you can check the results below:
Variance$ = var _t = ADDCOLUMNS('Table',"pre",MAXX(FILTER(ALL('Table'),[Category]=EARLIER([Category])&&[Year]=EARLIER([Year])-1),[Value]))
RETURN MAX('Table'[Value])-MAXX(_t,[pre])
Variance% = var _t = ADDCOLUMNS('Table',"pre",MAXX(FILTER(ALL('Table'),[Category]=EARLIER([Category])&&[Year]=EARLIER([Year])-1),[Value]))
RETURN DIVIDE(MAX('Table'[Value])-MAXX(_t,[pre]),SUM('Table'[Value]))
An attachment for your reference. Hope it helps!
Best regards,
Community Support Team_ Scott Chang
If this post helps then please consider Accept it as the solution to help the other members find it more quickly.
Hi @v-tianyich-msft thank you for your help. Is it possible to change the matrix so it does not show the variance fields as values per each Year column? I would like only the value from the "value" field to be visible per each year and then at the end see two variance columns.
Thanks
Hi @julpol ,
Did I solve your problem? Or you can also try turning off the following two options:
Best regards,
Community Support Team_ Scott Chang
Hi @julpol ,
Is this your desired result?
Variance% = var _t = ADDCOLUMNS('Table',"pre",MAXX(FILTER(ALL('Table'),[Category]=EARLIER([Category])&&[Year]=EARLIER([Year])-1),[Value]))
RETURN IF(ISINSCOPE('Table'[Year]),BLANK(),DIVIDE(MAX('Table'[Value])-MAXX(_t,[pre]),SUM('Table'[Value])))
Variance$ = var _t = ADDCOLUMNS('Table',"pre",MAXX(FILTER(ALL('Table'),[Category]=EARLIER([Category])&&[Year]=EARLIER([Year])-1),[Value]))
RETURN IF(ISINSCOPE('Table'[Year]),BLANK(),MAX('Table'[Value])-MAXX(_t,[pre]))
Hope it helps!
Best regards,
Community Support Team_ Scott Chang
If this post helps then please consider Accept it as the solution to help the other members find it more quickly.
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.
User | Count |
---|---|
22 | |
21 | |
19 | |
13 | |
12 |
User | Count |
---|---|
41 | |
31 | |
23 | |
22 | |
22 |