Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
In my simple table, I have 3 columns:
These are the numbers:
I want to calculate the sales for all the years for each store:
All Except Store = SUMX(ALLEXCEPT(Table1;Table1[Store]);Table1[Sales])
This is returning the following:
It's nonsense! It's removing ALL the filters, so to calculate the sales for all the years and KEEP the filters on the store using ALLEXCEPT I can use:
All Except Store2 = CALCULATE(SUM(Table1[Sales]); ALLEXCEPT(Table1;Table1[Store]))
This one works.
But why doesn't it work with SUMX?
Solved! Go to Solution.
@webportal,
I got response from PG:
AllExcept behaves differently when used as a set filter in Calculate or when used to return a table. In the former case, all filters removed except for the filters on the specified columns.
SUMX(ALLEXCEPT(Table1;Table1[Store]);Table1[Sales]) means return a table of all rows in Table1. The returned table has all columns in Table1 except the [Store] column. Afterwards, calculate the sum by iterating over the returned table.
Regards,
Lydia
Also you need pay a good attention on Calculate function.
The CALCULATE function changes the context in which the data is filtered, and evaluates the expression in the new context that you specify. For each column used in a filter argument, any existing filters on that column are removed, and the filter used in the filter argument is applied instead.
Can you also check if this formula with SUMX works?
All Except Store = SUMX(ALLEXCEPT(Table1;Table1[Store]); CALCULATE(SUM(Table1[Sales])))
You are using the ALLEXCEPT in an unusual manner.
Create a new table to see what the result of ALLEXCEPT(Table1;Table1[Store]) is. I think that will clarify what is going on.
@webportal,
I got response from PG:
AllExcept behaves differently when used as a set filter in Calculate or when used to return a table. In the former case, all filters removed except for the filters on the specified columns.
SUMX(ALLEXCEPT(Table1;Table1[Store]);Table1[Sales]) means return a table of all rows in Table1. The returned table has all columns in Table1 except the [Store] column. Afterwards, calculate the sum by iterating over the returned table.
Regards,
Lydia
@webportal,
I will consult this issue internally. And you can use the dax below instead.
Measure 2 = SUMX(FILTER(ALL(Table1);Table1[Store] =MAX(Table1[Store]));Table1[Sales])
Regards,
Lydia
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
112 | |
95 | |
91 | |
35 | |
29 |